Concepts & Terms
This chapter defines the vocabulary you need to read the data. If you already know bioinformatics, skim the Data Model section.
Entity types & identifiers
- Protein — a protein from UniProt/Swiss-Prot (the curated, reviewed set).
Identified by a UniProt accession, a short alphanumeric code such as
P38398. lmmol includes proteins from all organisms. - Trial — a study registered on ClinicalTrials.gov. Identified by its NCT id,
e.g.
NCT00001496. - Disease — a disease or condition, normalized to the Mondo disease ontology.
Identified by a Mondo id written with an underscore, e.g.
MONDO_0016419(hereditary breast carcinoma). Normalizing to Mondo is what lets a protein's disease and a trial's condition meet at the same node. - Gene — a gene, identified by its gene symbol, e.g.
BRCA1. - GO term — a Gene Ontology term describing a
molecular function, biological process, or cellular component. Identified by a
GO id, e.g.
GO:0006281(DNA repair).
Other terms you'll meet
- Cross-reference (xref) — a link from one entity to another (protein → disease, trial → condition, gene → disease, …). The backbone of the graph.
- Pathogenic / Likely pathogenic — clinical-significance labels from ClinVar that mark gene–disease associations supported by disease-causing variants. lmmol surfaces these as gene ↔ disease links.
- Accession / NCT / Mondo id / GO id — the stable identifiers above. Stable ids are how you address and link records.
The data model
Everything is JSON. There are two layers:
1. Nodes — the entities themselves
A node lives at nodes/<type>/<id>.json and looks like this (abridged, real shape):
{
"type": "protein",
"id": "P38398",
"name": "Breast cancer type 1 susceptibility protein",
"search_text": "Breast cancer type 1 susceptibility protein E3 ubiquitin-protein ligase ...",
"synonyms": ["BRCA1", "RNF53", "..."],
"native_xrefs": [ { "...": "..." } ],
"outbound_source_links": [ "https://www.uniprot.org/uniprotkb/P38398" ],
"attributes": { "organism": "9606", "...": "..." },
"normalized": true,
"edges": [
{ "relation": "protein_disease",
"source": { "type": "protein", "id": "P38398" },
"target": { "type": "disease", "id": "MONDO_0016419" } }
]
}
Key fields:
| Field | Meaning |
|---|---|
id, type | the identifier and entity type |
name | human-readable name / title |
search_text | the text used for semantic matching (good for display/snippets too) |
synonyms | alternative names / symbols |
native_xrefs | references to the upstream source databases |
outbound_source_links | URLs to the authoritative record(s) |
attributes | type-specific metadata (e.g. protein organism, trial phase) |
edges | forward cross-references — see below |
2. Edges — the cross-references
Each edge is directional and carries a relation:
{ "relation": "protein_disease",
"source": { "type": "protein", "id": "P38398" },
"target": { "type": "disease", "id": "MONDO_0016419" } }
Relations you will see include protein_disease, protein_has_gene,
protein_annotated_with_go, protein_references_paper, trial_disease, and
trial_references_paper. Edges stored on a node are its forward links. To go the
other way (e.g. which proteins and trials point at this disease?), use the
cross-reference indexes described in Browsing the Index — that is
where the graph becomes fully navigable in both directions.
Disease nodes: canonical vs. raw
Most disease nodes are canonical ("normalized": true, a MONDO_* id). A few may
be raw/unmapped terms when no Mondo mapping exists; those are flagged
"normalized": false. Prefer canonical Mondo ids when you link or merge.