About and methods

The mapping rules, the observed and inferred rule, sources and licences, and how to contribute.

Methods

What a page is

One page per molecule. Proteins are keyed on their UniProt accession (with an isoform suffix when a page is about one isoform). The schema also defines RNA pages (RNAcentral URS, with the Rfam family), DNA structure pages (DNA- plus 12 hex digits of the SHA-256 of the sequence, with NAKB and PDB identifiers) and complex pages (CPX-, linking component pages); protein, RNA and DNA pages are built; complexes are not yet. A page lists the states a protein is curated to have, the evidence from each technique that has probed it, how each evidence item maps to a state, the conflicts between comparable measurements, and the models exported for observed states.

The proteins built are listed in targets.yaml. A protein with no curation file still gets a page with all its evidence, labelled "states not yet curated"; nothing on it is mapped until a curator defines states.

Observed and inferred

Every state and every model carries one of two labels.

An inferred state or model must list its assumptions. The pipeline refuses to build one without them, and the page shows them one click away.

Nucleic-acid states, vocabularies, mutational effects and kinetics

These are in the schema; no source fills them yet.

Evidence

One evidence item per experiment or deposit:

Items a source returns but that cannot become evidence (an unmapped method, a non-structural term, a sample without the protein) are listed with the reason in build/<UniProt>/ingest.json. Each item records the technique, the construct, the conditions (environment, temperature, pH, ligands, applied force), the observable with its value, uncertainty and unit, the provenance (source, DOI, deposit ID, retrieval date, licence) and a link to the data.

Conditions are always present. An unknown value is recorded as null, not omitted. Temperatures from mmCIF fields (defined in kelvin) are converted to degrees Celsius. pH and temperature are null when an entry does not carry them in its machine-readable fields.

Mapping

Each link from an evidence item to a state is a mapping record: who made it, a confidence (high, medium or low), and a one-line justification. The mapping is always shown on the page next to the evidence.

Ambiguous evidence stays unmapped. Unmapped evidence is listed on the page and counted, and is never assigned to a state silently.

Conflicts

Two evidence items conflict when they are mapped to the same state, report the same observable type and unit, have comparable conditions (environment, temperature within 5 °C, pH within 0.5, the same ligands), both carry an uncertainty, and their values differ by more than the combined uncertainty. Conflicts are shown on the page. Values are never averaged across a conflict.

Force observables (unfolding, rupture and similar forces) are not compared: they depend on loading rate, which the conditions schema does not record, so values from different pulling protocols are not comparable.

Evidence without an uncertainty is not compared. The page says how many items could not be compared, and that absence of a conflict is not agreement.

Coverage grid

For each protein, the grid counts mapped evidence per state and technique. A state whose mapped evidence comes from exactly one technique is shaded and labelled "one method", so a state that rests on a single technique is visible at a glance.

Models

Observed states export the representative PDB entry's coordinates, unchanged, as PDB and mmCIF files. The file header records the state, its basis and the source entry. Inferred states will get fitted models in a later stage; the pilot exports none.

Transitions

A transition is directional and carries a rate or a free-energy difference, the conditions it was measured under, and the evidence IDs behind it. No transitions are curated in the pilot.

Search and display

The search page matches every word of a query against proteins (name, gene, accession, organism, techniques, sources, states) and against every evidence item (ID, deposit ID, title, construct, ligands, mapped states), with filters for technique, source, organism, curation status and state basis. A protein is listed when its own text or any of its evidence matches. The front page shows a proteins x techniques matrix of evidence counts on a log scale. Both are generated by make site from the same build outputs as every other page.

Reproducibility

Every number on the site is produced by make site from build/, which is produced by make ingest, make map and make models from the raw downloads in data/raw/. The download manifest, data/MANIFEST.json, records the URLs, retrieval dates and SHA-256 hashes of each raw input. Raw downloads are not committed.

Known limits of the pilot

Contributing

Adding a protein

Add a line to targets.yaml with the UniProt accession, a batch that says why it was added, and a name. make download and make site then build an evidence-only page for it. Pages without a curation file say "states not yet curated".

Curating a protein

Copy a curation file from curation/ as a template, name it <UniProt>.yaml, define the states (with a representative PDB entry for observed states and assumptions for inferred ones), then add assignments and rules. See curation/README.md for every field.

Correcting a page

Every page has a link to its curation file. To correct a state, a mapping or a description:

1. Open curation/<UniProt>.yaml on GitHub and propose an edit, or open an issue that names the page and the change. 2. Each mapping needs a curator, a confidence (high, medium or low) and a one-line justification. Say which evidence ID (for example EV-PDB-4AKE-1) and which state. 3. Inferred states need assumptions. A state is not inferred because its evidence is indirect; it is inferred when a model is fitted to it. 4. Run make validate before opening a pull request. It checks the schemas, the references between records, the taxonomy, the licence rows and the site.

Adding evidence

Evidence comes from sources, not from hand entry. Add or fix a source module in conformome/sources/ following the contract in conformome/sources/base.py, record its licence in docs/SOURCES.md, and add a fixture if the parser changes.

Adding a technique

Add it to taxonomy/techniques.yaml with its basis (observed or inferred), whether it is a prediction, its resolution class and the observable types it reports. The validator rejects evidence whose technique or observable is not listed.

What not to change by hand

Do not edit anything under site/dist/ or build/. They are regenerated by make site. Do not edit data/MANIFEST.json by hand; it is written by make download.

Ground rules

Sources and licences

Each source module in conformome/sources/ has a row here. make validate checks that every module has a row, that the licence is recorded (not TBD), that status matches the module's IMPLEMENTED flag, and that sources marked redistribute: no do not appear in any downloadable file. Where a licence is marked verify, the licence was not checked against the source's own terms in this version and must be confirmed before a public release.

SourceModuleStatusLicenceRedistributeNotes
RCSB PDB (PDB archive, RCSB Search and GraphQL APIs)pdbimplementedCC0 1.0 (wwPDB archive)yesObserved structures (X-ray, cryo-EM, microED, neutron, NMR), plus integrative models (technique integrative) and SAXS models (saxs_sans) distributed through the PDB. Representative coordinates are exported as state models.
UniProtKB (REST API)proteinimplementedCC BY 4.0yesProtein records: name, organism, sequence, domains, ligands. Attribution required.
RNAcentral (REST API)rnacentralimplementedCC0 1.0 (verify)yesRNA molecule records: species-specific sequence, description, organism and the Rfam families RNAcentral assigns to the sequence. RNA pages are keyed on URS…_<taxid>.
Rfam (family API and seed alignments)rfamimplementedCC0 1.0yesOne rfam_covariation item per family hit (flagged as a prediction). The family's consensus structure (SS_cons) is kept in the raw file; it is not projected onto the sequence (that needs Infernal's cmalign).
NAKB (Solr index)nakbimplementedCC0 1.0 for the PDB-derived fields used (verify NAKB's own terms)yesRNA and DNA 3D structures: entries with a chain of exactly the molecule's sequence, plus, for RNA, other constructs Rfam assigns to the same family in the same organism. Only PDB-derived fields are used; NAKB's curated annotations are not copied. Also anchors DNA pages (dna).
BMRB (API v2)bmrbimplementedCC0 1.0 (verify)yesOne item per entry mapped to the accession by BMRB's UniProt mapping. Relaxation and exchange data become nmr_dynamics; shift-only entries become nmr_shifts.
SASBDB (search page and REST summaries)sasbdbimplementedCC BY 4.0 (verify)yesRadius of gyration with its error. The REST API has no UniProt filter, so codes are read from the search page and each summary is checked for the UniProt code.
DisProt (API)disprotimplementedCC BY 4.0yesCurated disordered regions. The ECO evidence code is mapped to a technique; unmapped methods and non-structural terms are listed in build/<acc>/ingest.json.
AlphaFold DB (API)alphafoldimplementedCC BY 4.0yesPredicted structures with mean pLDDT. Labelled as predictions.
MDDB (REST API)mddbimplementedper project (CC BY 4.0 for most)yesMD projects whose metadata references the accession. The project's own licence string is kept in each record's provenance. Labelled as predictions.
SMASH-BIO release filesmashbioimplementednot stated by the source (verify)nowebsite/downloads/smash-smfs-records.jsonl.gz from matth55/smash-bio. SMASH-BIO software is MIT; the data licence is not stated, so records are shown on pages with links and left out of downloads. Most records are extracted automatically; the extraction level is kept on each item.
PED (Protein Ensemble Database)pedstubverify on PED websiteyesAPI paths returned 404 on 2026-10-19. Ensembles that are also PDB integrative entries come through pdb.
PDB-IHMpdbihmstubCC0 1.0 (wwPDB archive, verify)yesIntegrative entries come through pdb; restraint tables are not yet parsed.
ATLASatlasstubCC BY 4.0 (verify)yesIndexed by ECOD chain, not UniProt; MD comes from mddb for now.
Literature (Europe PMC)literaturestubpublisher-dependentnoFull text is never redistributed. Extracted values are stored with the exact span used and reviewed before going live.

Conformome's own curation files (curation/) and generated pages are licensed under the project licence, which is still to be decided (see docs/PILOT_REPORT.md).