# mrugakshi77/omics-registry architecture

> Architecture diagram of the GitHub repository mrugakshi77/omics-registry, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mrugakshi77/omics-registry
- Repository: https://github.com/mrugakshi77/omics-registry

## Overview

Omics Registry is a genomics metadata and provenance platform whose central workflow is finding samples with all requested assays and exporting the matching cohort as a manifest. Researchers can use either the CLI or REST API to query cohorts and register metadata or analysis results; the service layer applies the business operations over PostgreSQL. The README also documents a real GDC/TCGA metadata path. Source excerpts confirm CLI and service behavior; some API and ingestion details are supported only by the README or source index.

Main entry points: [`src/omics_registry/services/registry.py`](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/services/registry.py) (Registry writes), [`src/omics_registry/main.py`](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/main.py) (REST application), [`src/omics_registry/cli/main.py`](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/cli/main.py) (CLI), [`src/omics_registry/db/session.py`](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/db/session.py) (DB sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Researcher interfaces"]
  node_rest["REST application<br/>[main.py]"]
  node_api_cohort["Cohort API<br/>[cohort.py]"]
  node_api_analyses["Analysis API<br/>[analyses.py]"]
  node_api_experiments["Experiment API<br/>[experiments.py]"]
  node_api_patients["Patient API<br/>[patients.py]"]
  node_api_samples["Sample API<br/>[samples.py]"]
  node_cli["CLI<br/>[main.py]"]
end

subgraph group_services["Registry services"]
  node_cohort_service["Cohort query<br/>[cohort.py]"]
  node_registry_service["Registry writes<br/>[registry.py]"]
  node_schemas["Request schemas"]
  node_db_session["DB sessions<br/>[session.py]"]
end

subgraph group_domain["Metadata and provenance"]
  node_database[("PostgreSQL")]
  node_patient["Patients<br/>[patient.py]"]
  node_sample["Samples<br/>[sample.py]"]
  node_experiment["Experiments<br/>[experiment.py]"]
  node_analysis["Analyses<br/>[analysis.py]"]
  node_result_file["Result files<br/>[result_file.py]"]
  node_enums["Domain enums<br/>[enums.py]"]
end

subgraph group_data["GDC metadata"]
  node_gdc(("GDC public metadata"))
  node_fetch["Metadata fetch"]
  node_curate["Metadata curation"]
  node_snapshot["Curated snapshot<br/>[gdc_curated.json]"]
  node_seed["Database seeding<br/>[seed_data.py]"]
end

node_researcher(("Researcher"))

node_researcher -->|"runs commands"| node_cli
node_researcher -->|"uses API"| node_rest
node_rest -->|"mounts routes"| node_api_cohort
node_rest -->|"mounts routes"| node_api_analyses
node_rest -->|"mounts routes"| node_api_experiments
node_rest -->|"mounts routes"| node_api_patients
node_rest -->|"mounts routes"| node_api_samples
node_api_cohort -->|"queries via"| node_cohort_service
node_api_analyses -->|"registers via"| node_registry_service
node_api_experiments -->|"writes via"| node_registry_service
node_api_patients -->|"writes via"| node_registry_service
node_api_samples -->|"writes via"| node_registry_service
node_cli -->|"queries via"| node_cohort_service
node_cli -->|"registers via"| node_registry_service
node_cli -->|"opens session"| node_db_session
node_cli -->|"validates inputs"| node_schemas
node_api_cohort -->|"gets session"| node_db_session
node_api_analyses -->|"gets session"| node_db_session
node_registry_service -->|"accepts validated data"| node_schemas
node_registry_service -->|"creates and reads"| node_patient
node_registry_service -->|"creates and reads"| node_sample
node_registry_service -->|"creates and reads"| node_experiment
node_registry_service -->|"registers runs"| node_analysis
node_registry_service -->|"records outputs"| node_result_file
node_registry_service -->|"writes records"| node_database
node_cohort_service -->|"queries assays"| node_database
node_db_session -->|"opens connections"| node_database
node_patient -->|"has samples"| node_sample
node_sample -->|"has experiments"| node_experiment
node_experiment -->|"has analyses"| node_analysis
node_analysis -->|"has outputs"| node_result_file
node_gdc -->|"provides metadata"| node_fetch
node_fetch -->|"curates records"| node_curate
node_curate -->|"produces snapshot"| node_snapshot
node_snapshot -->|"loads metadata"| node_seed
node_seed -->|"populates records"| node_database

click node_rest "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/main.py"
click node_api_cohort "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/cohort.py"
click node_api_analyses "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/analyses.py"
click node_api_experiments "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/experiments.py"
click node_api_patients "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/patients.py"
click node_api_samples "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/samples.py"
click node_cli "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/cli/main.py"
click node_cohort_service "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/services/cohort.py"
click node_registry_service "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/services/registry.py"
click node_schemas "https://github.com/mrugakshi77/omics-registry/tree/master/src/omics_registry/schemas"
click node_db_session "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/db/session.py"
click node_patient "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/patient.py"
click node_sample "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/sample.py"
click node_experiment "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/experiment.py"
click node_analysis "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/analysis.py"
click node_result_file "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/result_file.py"
click node_enums "https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/enums.py"
click node_fetch "https://github.com/mrugakshi77/omics-registry/blob/master/scripts/fetch_gdc_metadata.py"
click node_curate "https://github.com/mrugakshi77/omics-registry/blob/master/scripts/curate_gdc_metadata.py"
click node_snapshot "https://github.com/mrugakshi77/omics-registry/blob/master/data/gdc_curated.json"
click node_seed "https://github.com/mrugakshi77/omics-registry/blob/master/scripts/seed_data.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_rest,node_api_cohort,node_api_analyses,node_api_experiments,node_api_patients,node_api_samples,node_cli toneBlue
class node_cohort_service,node_registry_service,node_schemas,node_db_session toneAmber
class node_database,node_patient,node_sample,node_experiment,node_analysis,node_result_file,node_enums toneMint
class node_gdc,node_fetch,node_curate,node_snapshot,node_seed toneRose
class node_researcher toneIndigo
```

## Components

### Researcher interfaces

- [REST application](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/main.py): `src/omics_registry/main.py`
- [Cohort API](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/cohort.py): `src/omics_registry/api/cohort.py`
- [Analysis API](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/analyses.py): `src/omics_registry/api/analyses.py`
- [Experiment API](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/experiments.py): `src/omics_registry/api/experiments.py`
- [Patient API](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/patients.py): `src/omics_registry/api/patients.py`
- [Sample API](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/api/samples.py): `src/omics_registry/api/samples.py`
- [CLI](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/cli/main.py): `src/omics_registry/cli/main.py`

### Registry services

- [Cohort query](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/services/cohort.py): `src/omics_registry/services/cohort.py`
- [Registry writes](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/services/registry.py): `src/omics_registry/services/registry.py`
- [Request schemas](https://github.com/mrugakshi77/omics-registry/tree/master/src/omics_registry/schemas): `src/omics_registry/schemas`
- [DB sessions](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/db/session.py): `src/omics_registry/db/session.py`

### Metadata and provenance

- **PostgreSQL**
- [Patients](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/patient.py): `src/omics_registry/models/patient.py`
- [Samples](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/sample.py): `src/omics_registry/models/sample.py`
- [Experiments](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/experiment.py): `src/omics_registry/models/experiment.py`
- [Analyses](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/analysis.py): `src/omics_registry/models/analysis.py`
- [Result files](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/result_file.py): `src/omics_registry/models/result_file.py`
- [Domain enums](https://github.com/mrugakshi77/omics-registry/blob/master/src/omics_registry/models/enums.py): `src/omics_registry/models/enums.py`

### GDC metadata

- **GDC public metadata**
- [Metadata fetch](https://github.com/mrugakshi77/omics-registry/blob/master/scripts/fetch_gdc_metadata.py): `scripts/fetch_gdc_metadata.py`
- [Metadata curation](https://github.com/mrugakshi77/omics-registry/blob/master/scripts/curate_gdc_metadata.py): `scripts/curate_gdc_metadata.py`
- [Curated snapshot](https://github.com/mrugakshi77/omics-registry/blob/master/data/gdc_curated.json): `data/gdc_curated.json`
- [Database seeding](https://github.com/mrugakshi77/omics-registry/blob/master/scripts/seed_data.py): `scripts/seed_data.py`

### Other components

- **Researcher**

## Connections

- Researcher → CLI: runs commands (evidence: `README.md`)
- Researcher → REST application: uses API (evidence: `README.md`)
- REST application → Cohort API: mounts routes (evidence: `src/omics_registry/main.py`)
- REST application → Analysis API: mounts routes (evidence: `src/omics_registry/main.py`)
- REST application → Experiment API: mounts routes (evidence: `src/omics_registry/main.py`)
- REST application → Patient API: mounts routes (evidence: `src/omics_registry/main.py`)
- REST application → Sample API: mounts routes (evidence: `src/omics_registry/main.py`)
- Cohort API → Cohort query: queries via (evidence: `src/omics_registry/api/cohort.py`)
- Analysis API → Registry writes: registers via (evidence: `src/omics_registry/api/analyses.py`)
- Experiment API → Registry writes: writes via (evidence: `src/omics_registry/api/experiments.py`)
- Patient API → Registry writes: writes via (evidence: `src/omics_registry/api/patients.py`)
- Sample API → Registry writes: writes via (evidence: `src/omics_registry/api/samples.py`)
- CLI → Cohort query: queries via (evidence: `src/omics_registry/cli/main.py`)
- CLI → Registry writes: registers via (evidence: `src/omics_registry/cli/main.py`)
- CLI → DB sessions: opens session (evidence: `src/omics_registry/cli/main.py`)
- CLI → Request schemas: validates inputs (evidence: `src/omics_registry/cli/main.py`)
- Cohort API → DB sessions: gets session (evidence: `src/omics_registry/api/cohort.py`)
- Analysis API → DB sessions: gets session (evidence: `src/omics_registry/api/analyses.py`)
- Registry writes → Request schemas: accepts validated data (evidence: `src/omics_registry/services/registry.py`)
- Registry writes → Patients: creates and reads (evidence: `src/omics_registry/services/registry.py`)
- Registry writes → Samples: creates and reads (evidence: `src/omics_registry/services/registry.py`)
- Registry writes → Experiments: creates and reads (evidence: `src/omics_registry/services/registry.py`)
- Registry writes → Analyses: registers runs (evidence: `src/omics_registry/services/registry.py`)
- Registry writes → Result files: records outputs (evidence: `src/omics_registry/services/registry.py`)
- Registry writes → PostgreSQL: writes records (evidence: `README.md`)
- Cohort query → PostgreSQL: queries assays (evidence: `src/omics_registry/services/cohort.py`)
- DB sessions → PostgreSQL: opens connections (evidence: `src/omics_registry/db/session.py`)
- Patients → Samples: has samples (evidence: `src/omics_registry/models/patient.py`)
- Samples → Experiments: has experiments (evidence: `src/omics_registry/models/sample.py`)
- Experiments → Analyses: has analyses (evidence: `src/omics_registry/models/experiment.py`)
- Analyses → Result files: has outputs (evidence: `src/omics_registry/models/analysis.py`)
- GDC public metadata → Metadata fetch: provides metadata (evidence: `README.md`)
- Metadata fetch → Metadata curation: curates records (evidence: `README.md`)
- Metadata curation → Curated snapshot: produces snapshot (evidence: `README.md`)
- Curated snapshot → Database seeding: loads metadata (evidence: `README.md`)
- Database seeding → PostgreSQL: populates records (evidence: `README.md`)
