Longevity hackathon

This is a project to showcase results obtained for the Longevity hackathon

Drug Research Platform

A Streamlit-based web application for biomedical drug research and discovery, integrating multiple pharmaceutical and biomedical databases for comprehensive drug analysis and exploration.

📸 Slides for the presentation

Feel free to find them here.

📖 More resources

Project repository here.

Live demo here.


🚀 Features

📋 Prerequisites

🗂️ Data Structure

The application integrates the following biomedical databases:

data/
├── doid/                    # Disease Ontology
│   └── doid.obo            # Disease classifications and relationships
├── drkg/                    # Drug Repurposing Knowledge Graph
│   ├── drkg.tsv            # Main knowledge graph data
│   ├── graph.gml           # Graph structure file
│   ├── relation_glossary.tsv # Relationship definitions
│   └── relation_glossary.xlsx
├── drugbank/                # DrugBank Database
│   └── drugbank_vocabulary.csv # Drug nomenclature and metadata
├── hgnc/                    # Human Gene Nomenclature Committee
│   └── HGNC_complete_set.tsv # Official gene symbols and names
├── mesh/                    # Medical Subject Headings
│   └── desc2025.xml        # Medical terminology hierarchy
├── sider/                   # Side Effect Resource
│   └── meddra_all_indications.tsv # Drug side effects and indications
├── drugbank_vocabulary.csv  # Additional drug vocabulary
└── entity_name_mapping.json # Entity name mappings across databases

Database Sources

Google Drive Access files

Place the following files in the access/ directory to enable Google Drive access: access/service_account.json. Instructions on creating a Google Drive client and connecting it to the code can be found here.

🛠️ Installation & Setup

Option 1: Using Make (Recommended)

# Clone the repository
git clone <repository-url>
cd <project-directory>

# Build and start all services
make

Option 2: Using Docker Compose Directly

Don't forget to place Google Drive client JSON file.

# Set environment variables
export UID=$(id -u)
export GID=$(id -g)

# Build and start
./run.sh

🚀 Usage

Accessing the Application

Once the containers are running, access the Streamlit application at:

http://localhost:8501

Available Make Commands

make help     # Show all available commands
make build    # Build all containers
make up       # Start containers in detached mode
make down     # Stop all containers
make logs     # View container logs
make ps       # Show container status
make restart  # Restart services
make clean    # Clean volumes (⚠️ removes data)

Development Commands

# Access container shell
make shell SERVICE=streamlit_app

# View logs in real-time
make logs

# Restart specific service
make restart SERVICE=streamlit_app

🔧 Configuration

Port Configuration

Volume Mounts

📁 Project Structure

.
├── docker-compose.yml      # Docker services configuration
├── Dockerfile             # Container build instructions
├── Makefile               # Development convenience commands
├── requirements.txt       # Python dependencies
├── project_config.py      # Project configuration
├── streamlit_app/         # Streamlit application code
│   └── root_page.py       # Main application entry point
├── app/                   # Core application modules
├── research_scripts/      # Research and analysis scripts
├── data/                  # Database files (see structure above)
└── access/                # Access control and authentication

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes
  4. Test with: make build && make up
  5. Submit a pull request

📄 License

This project is licensed under the MIT License.

📧 Team and contacts

  1. Vlad Maksimov, team leader
  2. Victoria Nersisyan, biologist
  3. Viktor Smirnov, bioinformatician
  4. Oleg Urzhumtsev, programmer, ML engineer & maintainer
  5. Mike Solovyanov, programmer & maintainer
  6. Nikita Kondratev, designer and researcher