Genomic Epidemiology platform for disease X
Project description
Genomic Epidemiology platform for disease X
Source Code: https://github.com/RIVM-bioinformatics/gen-epix-api
Gen-EpiX: Genomic Epidemiology platform for disease X (beta version)
Gen-EpiX is platform for visualizing and analyzing genomic epidemiology data. It has fine-grained access controls for collaboration between multiple organizations.
Key Features
- Visualisation: Visualize cases by time, place, person and also by genome through a phylogenetic tree coupled to the cases.
- Fine-grained access: Give different organizations different access rights per disease, down to individual variables. Organizations can manage access of their own users by themselves.
- Search: Search and filter cases, including on genetic similarity.
- Signal detection: Detect, define and share sets of cases, signals and outbreaks.
- Disease X: Any disease and corresponding analysis variables can be added.
- Data: Adheres to the Medallion data architecture design pattern. The silver layer consists of normalized and standardized patient or subject data compliant with OMOP Common Data Model, and a dedicated database for genetic sequence data and computation of phylogenetic trees. The gold layer consists of case data ready for analysis in the form of a single row of data per case.
- Tech: OpenAPI compliant API, deployable on cloud or on-premise, support for multiple authentication providers. Python/FastAPI backend and default TypeScript/React frontend available from gen-epix-web.
Deliberately not in scope
- Disease-specific knowledge: Every organization has their own variables that are important for analysis, as well as their own bioinformatics to process genetic sequence data. We therefore avoided any disease-specific code both for the generation of these data and for the analysis variables that can be defined. Only the results are stored.
- Collaboration-specific knowledge: Every collaboration or country (e.g. for public health surveillance of diseases) has their own specifics in terms of access rights and any relevant geographic regions. We therefore avoided any country-specific code, both for the type of organizations that have access, and for any geographic data.
Installation
Below is a streamlined installation guide for various platforms:
-
Install ODBC development headers:
sudo apt-get update sudo apt-get install -y unixodbc-dev
-
Create and activate a conda environment:
conda create --name gen-epix python=3.12 conda activate gen-epix
-
Install dependencies*:
pip install -r requirements.txt pip install --no-binary :all: pyodbc==5.2.*
*Some hardware architectures (especially Apple M1/M2/M3 chips) require pyodbc to be compiled from source for compatibility
- For development, add testing tools:
pip install -r dev-requirements.txt
SSL Certificate Setup
-
Install mkcert:
# Linux sudo apt install mkcert # macOS brew install mkcert
-
Generate certificates:
mkcert -install mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1
-
Copy the generated files:
cp key.pem cert.pem /path/to/project/cert/ -
For WSL users: Run the commands in Windows PowerShell and copy files to both the project cert directory and your WSL home directory.
Usage
Starting the API
- Activate the conda environment:
conda activate gen-epix
- Run the application:
python run.py [service] [app_type] [env_name] [idp_config]
service: The service to run (api, etl)app_type: Specific configuration for an app type (casedb, seqdb, omopbd)env_name: Name of the environment.idp_config: Which authentication setting to use (idps, mock_idps, no_auth, debug, no_ssl)
Example
conda activate gen-epix
python run.py api casedb local idps
Dependencies
Gen-EpiX relies on several Python packages to provide its functionality:
Core Dependencies
fastapi- Modern, high-performance web frameworksqlalchemy- SQL toolkit and Object-Relational Mapping (ORM) librarypydantic- Data validation and settings managementbiopython- Tools for computational molecular biology
Database Connectors
pyodbc- ODBC database adapter
API Server
uvicorn- ASGI web server
Development Tools
pytest- Testing frameworkblack- Code formatterpylint- Static code analyzermypy- Static type checker
For a complete list of dependencies, refer to:
- requirements.txt - Production dependencies
- dev-requirements.txt - Development dependencies
Python Version Gen-EpiX requires Python 3.12 or higher.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gen_epix-0.1.6.tar.gz.
File metadata
- Download URL: gen_epix-0.1.6.tar.gz
- Upload date:
- Size: 248.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60f02ab78d950fbe8953a6fcd9d49b96e96f1f29adae4dcf82e4bc0d6f34e3f4
|
|
| MD5 |
c84929deea796d28796c6abc92d6f673
|
|
| BLAKE2b-256 |
beb855827fddbf14e4c29243476b5129facf1d23ef233d3a0b359a667061042d
|
Provenance
The following attestation bundles were made for gen_epix-0.1.6.tar.gz:
Publisher:
release.yaml on RIVM-bioinformatics/gen-epix-api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gen_epix-0.1.6.tar.gz -
Subject digest:
60f02ab78d950fbe8953a6fcd9d49b96e96f1f29adae4dcf82e4bc0d6f34e3f4 - Sigstore transparency entry: 229392738
- Sigstore integration time:
-
Permalink:
RIVM-bioinformatics/gen-epix-api@27e76e23d49eaa7c66816841fcacf2176e5b08f1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/RIVM-bioinformatics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@7fdf0a7b178b4ae5b81fb65b436fabf5c8be17db -
Trigger Event:
pull_request
-
Statement type:
File details
Details for the file gen_epix-0.1.6-py3-none-any.whl.
File metadata
- Download URL: gen_epix-0.1.6-py3-none-any.whl
- Upload date:
- Size: 354.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7f76f0e7c4b8854bb7dbadb321db281fd36636a0c0640fba580c2f3d4cb9d7a
|
|
| MD5 |
e4fc78df818dceaeeffab0c85b2e6d56
|
|
| BLAKE2b-256 |
c4b3d74c465f14a23f9d0f5280692df3c0fe6496715a0fb2476334fdfd53c066
|
Provenance
The following attestation bundles were made for gen_epix-0.1.6-py3-none-any.whl:
Publisher:
release.yaml on RIVM-bioinformatics/gen-epix-api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gen_epix-0.1.6-py3-none-any.whl -
Subject digest:
d7f76f0e7c4b8854bb7dbadb321db281fd36636a0c0640fba580c2f3d4cb9d7a - Sigstore transparency entry: 229392742
- Sigstore integration time:
-
Permalink:
RIVM-bioinformatics/gen-epix-api@27e76e23d49eaa7c66816841fcacf2176e5b08f1 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/RIVM-bioinformatics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@7fdf0a7b178b4ae5b81fb65b436fabf5c8be17db -
Trigger Event:
pull_request
-
Statement type: