Skip to content

Repository files navigation

CellStructureMech

Knowledge base of microbial cell structures — organelles, envelope layers, appendages, microcompartments, inclusions, cytoskeletal systems and the multi-protein complexes that build them — one evidence-backed, ontology-grounded YAML record per structure.

CellStructureMech is the structural counterpart of TraitMech (phenotypes), ProteinTraitsMech (proteins), HabitatMech (habitats), CultureMech (growth media), MediaIngredientMech (ingredients) and CommunityMech (communities), and follows the curation pattern established by dismech: one YAML per entity, ontology-grounded, evidence-backed, closed-schema validated, curated incrementally with an append-only audit trail.

Browse the corpus online → — every record, by category, with components, distribution, functions and mechanism graphs. The site also includes a text embedding map with full-vector nearest neighbours.

The gap it fills

TraitMech says an organism is flagellated; ProteinTraitsMech says what FliC is. Neither says what a flagellum is made of, which clades have one, how the stator turns the rotor, or which trait it confers. That machine-level layer — the thing between a phenotype and a protein — is what a CellStructureRecord holds:

Section Question it answers
components What is it built from? Families, complexes, RNAs, lipids — with stoichiometry, essentiality, and taxon-paired UniProt examples
taxonomic_distribution Who has it, and how consistently?
functions What does it do (GO), with evidence?
associated_traits Which TraitMech phenotype does it confer or diagnose?
causal_graphs How does it assemble, work, and get regulated? Every edge cited.
part_of / has_part / parent_structures Where does it sit in the cell's part hierarchy?

Granularity: a record is a structure you could point to in a micrograph — from a whole organelle down to a discrete multi-protein complex (ribosome, flagellar motor, ATP synthase). Individual proteins are components of records, not records; phenotypes are TraitMech records. See docs/CURATION.md.

Current corpus

19 structure records are currently committed.

Category Records Status Records
ENVELOPE 4 PROPOSED 19
APPENDAGE 2
DIVISION_MACHINERY 2
MICROCOMPARTMENT 2
CYTOSKELETON 1
ENERGY_COMPLEX 1
INCLUSION 1
MEMBRANE_ORGANELLE 1
NUCLEOID 1
OTHER 1
RIBONUCLEOPROTEIN 1
SECRETION_SYSTEM 1
SPORE 1

17 records are grounded in GO; 2 carry minted identifiers. 19 list components, 19 carry causal graphs (152 evidence-backed edges), 8 link to TraitMech traits, and 5 carry licensed, cited imaging evidence.

Run just report for the live report. Every current record is PROPOSED — drafted from the cited literature with LLM assistance and not yet reviewed by a second curator.

Quick start

just install          # uv sync --extra dev
just report           # corpus stats
just validate-all     # closed-mode schema validation of every record
just test             # unit + corpus-integrity tests
just render           # regenerate the site under pages/
just text-map-check   # cached text vectors and derived map match the corpus
just qc               # everything CI runs

To add a record:

just new-record --identifier GO:0030313 --label "cell envelope" \
    --category ENVELOPE --kind ENVELOPE_LAYER --curator you          # dry run
just new-record ... --apply                                          # write

Then fill in the YAML, run just validate-all, just render, and just docs-stats, and open a PR.

Identifiers

GO cellular component is the primary grounding: a record whose structure is exactly a GO term uses that CURIE (GO:0005840 ribosome). When no GO term is an exact fit, the record mints a cellstructuremech: identifier and records the nearest broader term in parent_structures. See docs/CURATION.md.

Schema

src/cellstructuremech/schema/cellstructuremech.yaml defines CellStructureRecord; docs/SCHEMA.md walks through it. The causal-graph classes share TraitMech's vocabulary so tooling can move between the two. mech_shared.yaml (Discussions, Datasets) is vendored byte-identically across the Mech repos from culturebotai-claw, and checked against it by just vendored-check.

Layout

CellStructureMech/
├── data/structures/<category>/<slug>.yaml   # the records
├── data/embeddings/                          # pinned text vectors, PCA map, neighbours
├── src/cellstructuremech/
│   ├── schema/cellstructuremech.yaml         # LinkML schema
│   ├── schema/mech_shared.yaml               # vendored from claw (Discussions, Datasets)
│   ├── schema/history.yaml                   # vendored from claw (repository history records)
│   ├── validation/write_validated.py         # write-time closed-schema gate
│   ├── curate/curation_event.py              # append-only audit trail helper
│   └── templates/                            # site templates
├── scripts/
│   ├── check_curies.py                       # resolve every identifier at its authority
│   ├── new_record.py                         # scaffold a record through the gate
│   ├── validate_strict.py                    # closed-mode corpus validation
│   ├── render_pages.py                       # generate pages/
│   ├── build_text_embedding_map.py           # local embeddings + deterministic map
│   ├── corpus_report.py                      # stats
│   ├── check_docs.py                         # README stats block
│   └── run_qc.py                             # the CI gate
├── pages/                                    # generated site (committed)
├── index.html                                # redirect to pages/ for GitHub Pages
├── research/                                 # research notes: evidence for curators, never record input
├── curation/source_queue.tsv                 # ranked data-source queue (checked in qc)
├── conf/id_label_targets.yaml                # id<->label gate targets and accepted residuals
├── history/<kind>/<slug>/*.yaml              # append-only curation history (claw history.yaml schema)
├── scripts/.vendored_canon_ref               # claw commit the vendored files are pinned to
├── conf/sources.yaml                         # what the pipeline reads
├── docs/                                     # CURATION.md, SCHEMA.md, SOURCE_QUEUE.md (legend)
├── .claude/skills/                           # agent workflows (source-queue, review-open-issues)
└── tests/

License

CC0-1.0 for everything this project authored — records, schema, scripts, pages, prose. Third-party material it redistributes keeps its own licence: each hosted image records its licence and attribution in the record that displays it, and text derived from CC BY sources (UniProt Subcellular Location, Complex Portal) names its source in an evidence reference. Only CC0, public-domain and CC BY material is hosted; CC BY-SA, CC BY-NC and ND are cited and linked, never copied. See LICENSE for the full statement and #46 for the decision.

About

Microbial cell structure knowledge base — organelles, envelope layers, appendages, microcompartments and multi-protein complexes as ontology-grounded, evidence-backed records

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages