Skip to content

Add genome assemblies and chromosomes value set - #83

Merged
cmungall merged 1 commit into
mainfrom
claude/affectionate-rubin-25da1c
Oct 8, 2026
Merged

cmungall merged 1 commit into
mainfrom
claude/affectionate-rubin-25da1c

Conversation

@cmungall

@cmungall cmungall commented Oct 8, 2026

Copy link
Copy Markdown
Member

Summary

Adds a comprehensive new value set for reference genome builds (assemblies) and chromosome names/codes for human and common model organisms. This includes mappings to the Monochrom Ontology (CHR) for chromosomes and INSDC (GenBank) assembly accessions for genome builds.

Key Changes

  • New schema file: src/valuesets/schema/bio/genome_assemblies.yaml (1965 lines)

    • HumanGenomeBuild enum: GRCh38, GRCh37, NCBI36, T2T-CHM13v2.0 with UCSC aliases and RefSeq accessions
    • ModelOrganismGenomeBuild enum: Mouse (GRCm39, GRCm38), Rat (mRatBN7_2, Rnor_6_0), Zebrafish (GRCz11, GRCz10), Chicken (GRCg6a), C. elegans (WBcel235), Drosophila (BDGP6), and Marmoset (Callithrix_jacchus_cj1700_1_1)
    • HumanChromosome enum: All 22 autosomes plus X, Y, and M (mitochondrial) with RefSeq/GenBank accessions and sequence lengths from hg38
    • MouseChromosome enum: All 19 autosomes plus X, Y, and M with RefSeq/GenBank accessions and sequence lengths from mm39
    • RatChromosome, ZebrafishChromosome, ChickenChromosome, CElegansChromosome enums with complete chromosome definitions
    • Slot definitions for human_genome_build, model_organism_genome_build, human_chromosome, and mouse_chromosome
  • Updated main schema: src/valuesets/schema/valuesets.yaml

    • Added import for bio/genome_assemblies
  • Updated validator config: src/valuesets/validators/oak_config.yaml

    • Added note about Monochrom (CHR) ontology validation approach

Implementation Details

  • All genome builds mapped to INSDC GCA accessions with RefSeq GCF and UCSC database names as annotations
  • Chromosome terms mapped to Monochrom Ontology (CHR) OBO classes using taxon-specific identifiers (e.g., CHR:9606-chr1 for human chromosome 1)
  • Each chromosome includes RefSeq accession, GenBank accession, and sequence length in base pairs
  • Comprehensive contributor attribution and status tracking (DRAFT)
  • Follows LinkML enum conventions with proper CamelCase naming and OBO CURIE prefixes

https://claude.ai/code/session_01928byYFTdjcMn3d4EpfeKW

New module bio/genome_assemblies.yaml:
- HumanGenomeBuild (GRCh38, GRCh37, NCBI36, T2T-CHM13v2.0) and
  ModelOrganismGenomeBuild (mouse, rat, zebrafish, chicken, worm, fly,
  marmoset), mapped to INSDC GCA accessions verified via NCBI Datasets,
  with UCSC names as aliases and RefSeq GCF accessions as annotations.
- Chromosome enums for human, mouse, rat, zebrafish, chicken, C. elegans
  and marmoset, generated from the Monochrom chr.obo release 2025-10-15,
  with meanings to CHR terms and RefSeq/GenBank accessions and lengths.

CHR and insdc.gca have no OAK adapters, so they are added as
skip-prefixes in oak_config.yaml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01928byYFTdjcMn3d4EpfeKW
@claude

claude Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @cmungall's task in 1m 19s —— View job


PR review: genome assemblies and chromosomes value sets

  • Gather context (diff, CLAUDE.md, existing conventions)
  • Review bio/genome_assemblies.yaml
  • Check accessions / CURIEs / prefixes
  • Run validation (just validate / just site): not run, because Bash approval for just was denied in this job
  • Post review

I couldn't run just validate or just site here, so please confirm CI is green before merging. Everything below comes from reading the code and checking values by hand.

The schema is well structured and consistent. Overall: looks good to merge after a few small fixes. None of these block the merge.

Data accuracy

I checked these against my own knowledge of NCBI/UCSC. I couldn't query NCBI or OLS from this job: the OLS MCP server failed to connect (uvx was not found).

  • Assembly accessions (GCA/GCF): all pairs look right. This covers GRCh38/37, T2T-CHM13v2.0, GRCm39/38, mRatBN7.2, Rnor_6.0, GRCz11/10, GRCg6a, WBcel235, Release 6 and cj1700_1.1.
  • Chromosome lengths:
    • Every human (hg38), mouse (mm39) and C. elegans (ce11) length matches UCSC chrom.sizes.
    • I spot-checked rat (rn6), zebrafish (danRer11), chicken (galGal6) and marmoset, and those matched too.
    • galGal6 correctly has no chr29.
  • RefSeq/GenBank accessions: the human, mouse, worm and mitochondrial ones I checked are correct, e.g. NC_012920.1/J01415.2 for human chrM.
  • The note on the hg19 mitochondrial sequence (NC_001807) is correct and useful.

Issues and suggestions

  1. The new oak_config.yaml comments overstate what is checked (src/valuesets/validators/oak_config.yaml:29-32).

    • Giving CHR: and insdc.gca: an empty adapter makes _is_skipped_prefix() (enum_evaluator.py:429) skip them completely.
    • So nothing checks these IDs "against the released chr.obo" or "against the NCBI Datasets API".
    • Suggest rewording to something like # no OAK adapter; skipped by validator (IDs hand-checked against chr.obo). Better still, point CHR at an adapter built from chr.owl, if one is easy to set up.
      Fix this →
  2. The CHR: IDs were not verified with OLS here.

    • CLAUDE.md says to "ALWAYS check IDs, NEVER guess them".
    • The CHR:<taxon>-chr<N> pattern matches Monochrom's IRI scheme, but I couldn't confirm that every taxon is in the current chr.owl release, especially marmoset (9483), C. elegans (6239) and chicken (9031).
    • Since validation skips CHR (see item 1), a typo here would never be caught. Please check against the release, e.g. runoak -i chr.owl info CHR:9483-chrY.
  3. The rat chromosomes use the old assembly (RatChromosome, around line 732).

    • The accessions and lengths come from rn6/Rnor_6.0, but ModelOrganismGenomeBuild lists mRatBN7.2 (rn7) as current.
    • rn7 uses different accessions (NC_051336.1, …) and lengths.
    • This probably follows Monochrom's own source. If so, say in the enum description that the values are from the superseded build, so nobody assumes they match rn7.
  4. The chicken build is outdated. GRCg6a (galGal6) has been replaced by GRCg7b/GRCg7w (2021). Consider adding GRCg7b to ModelOrganismGenomeBuild, even if ChickenChromosome stays on galGal6 to match Monochrom.

  5. There is a Drosophila build but no Drosophila chromosome enum.

    • BDGP6 is in the builds enum, but there is no DrosophilaChromosome (2L, 2R, 3L, 3R, 4, X, Y, mitochondrion_genome).
    • Either add it, if Monochrom covers dm6, or explain why it's left out.
    • Also, BDGP6 is Ensembl's name while its title is NCBI's name, "Release 6 plus ISO1 MT". The enum description says names follow NCBI, so add BDGP6 as an alias or note the exception.
  6. The C. elegans chromosomes have no GenBank accessions. Every other chromosome enum has genbank_accession. For consistency, add BX284601.5, BX284602.5, BX284603.4, BX284604.4, BX284605.5, BX284606.5 and X54252.1 (mt), after checking them.

  7. NCBI36 has no meaning (line 83). This may be deliberate, since NCBI36 predates GCA accessions, but a short comment or description note would make that clear. Otherwise it looks like a mistake next to the other builds.

  8. Small cleanups:

    • GRCh38 and GRCh37 list themselves as an alias (lines 61 and 77). That's redundant, so drop it.
    • The PR description doesn't mention MarmosetChromosome, though the file defines it.
    • Slots exist only for human and mouse chromosomes. That's fine, but consider adding rat_chromosome, zebrafish_chromosome and the others for symmetry, or note that they are left out on purpose.
    • Annotation values like length_bp: 248956422 are YAML ints. LinkML stores annotation values as Any, so this should be fine, but check that generated JSON-LD/OWL output doesn't choke on them.

Performance and security

  • Performance: none. The file is static enum data. The 1,965 lines add some build/site time but are within the range of other modules.
  • Security: none.

Tests

  • No tests were added. Existing schema-level validation would pick up the new enums, but the CHR/GCA meanings are skipped (item 1).
  • A cheap safeguard would be a test that checks every length_bp is a positive int and every CHR meaning's taxon prefix matches the enum's taxon annotation. That would catch copy-paste errors across taxa.

@cmungall
cmungall merged commit 8109b34 into main Oct 8, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants