CultureMech is a versioned knowledge base of microbial culture-media recipes. It combines LinkML validation, ontology grounding, provenance, deduplication, browser exports, and static recipe pages.
The tracked corpus currently contains 15,877 normalized records and 6,286 merged records.
| Normalized category | Records |
|---|---|
| algae | 249 |
| archaea | 743 |
| bacterial | 14,304 |
| fungal | 126 |
| solutions | 0 |
| specialized | 455 |
| Total normalized | 15,877 |
| Total merged | 6,286 |
These are different layers, not competing recipe totals. Normalized records
preserve source-specific formulations; merged records are deduplicated canonical
outputs. Run just update-readme-stats after corpus changes. CI runs
just check-readme-stats to prevent this block from drifting.
CultureMech supports Python 3.10 through 3.14 and uses uv plus just.
git clone https://github.com/CultureBotAI/CultureMech.git
cd CultureMech
uv sync --frozen --extra dev
just --listCultureMech has four data layers:
data/raw/— immutable source payloads.data/raw_yaml/— mechanical, source-shaped YAML conversions.data/normalized_yaml/— authoritative curated and validated records.data/merge_yaml/merged/— reproducible deduplicated records.
The normalized layer is authoritative for source-specific curation and browser
data. The merged layer is authoritative for canonical recipe pages. Generated
app/data.js and pages/ outputs must be rebuilt, not hand-edited or committed.
See Data Layers for provenance and regeneration details.
Validate one tracked record:
just validate-schema data/normalized_yaml/bacterial/lb_medium.yamlRun repository checks:
just test-fast # isolated unit and smoke tests
just test-corpus # tracked-corpus invariants
just test-integration # optional checkout/service boundaries
just test # full suite with coverage floor
just validate-strict
just assign-ids-check
just check-id-catalogBuild the browser and recipe pages:
just build-browser
just gen-pages
just gen-media-pages
just serve-browserRender one recipe while editing:
just gen-page data/normalized_yaml/bacterial/lb_medium.yamlThe output is written beneath pages/single/. The renderer is also available as
culturemech render --file ... after installation.
Start with the Quick Start, then read the
Contributing Guide. New curation uses the orthogonal
composition_type, nutritional_class, and functional_role axes while keeping
the compatibility medium_type consistent with composition_type. Preserve
round-trip YAML formatting and append a curation-history event for substantive
record changes.
Useful references:
- Schema
- Quick Reference
- Data Layers
- Recipe ID lifecycle
- Unmapped Ingredients Guide
- Archived project-status snapshot
- Archived gas-mapping snapshot
Archived documents describe completed work at a point in time; they are not the current corpus status.
The canonical repository is CultureBotAI/CultureMech. Use GitHub Issues for bugs and GitHub Discussions for broader questions.
Citation metadata is provided in CITATION.cff. CultureMech is dedicated to the public domain under CC0 1.0 Universal.