obophenotype / obophenotype/uberon
Track Uberon/CL single-cell coverage as a recurring report
Nobody has claimed this yet.
- Dominant language
- Emacs Lisp
- Stars
- 163
- Forks
- 43
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 5
Description
Problem
How well Uberon and CL together support single-cell data is currently unmeasured, so it gets rediscovered rather than tracked. The numbers are not good and we have no way to tell whether they are improving:
| Measure | Value |
|---|---|
| Live Uberon terms that are the target of ≥1 CL location axiom | 753 / 14,525 (5.2%) |
| Live Uberon terms with any cell type beneath them | 1,352 (9.3%) |
| Live CL classes with any Uberon location | 1,331 / 3,129 (42.5%) |
| CELLxGENE tissue terms with no cell type beneath them | 424 / 705 (60%) |
| CELLxGENE cell types with no Uberon location | 583 / 1,142 (51%) |
Per-organism, which matters for the cross-species mission:
| Organism | Tissue terms used | Linked |
|---|---|---|
| Homo sapiens | 559 | 40.6% |
| Mus musculus | 138 | 49.3% |
| Danio rerio | 104 | 51.9% |
| Callithrix jacchus | 33 | 36.4% |
| Macaca mulatta | 29 | 24.1% |
Proposal
src/scripts/single_cell_coverage.py (added on claude/uberon-single-cell-coverage-lg89hg) already computes all of the above from uberon-edit.obo, imports/local-cl.owl, the public CELLxGENE curation API, and the HRA ASCT+B CDN. No credentials are needed.
Wire it into the existing reports mechanism so the numbers land in reports/ on a schedule, alongside stages-*-report.tsv. That gives a tracked baseline against which any future tissue↔cell-type work can be judged.
One caveat worth noting: the script reads the checked-in imports/local-cl.owl, which snapshots CL 2025-07-30 and so runs slightly behind current CL (934 vs 909 part_of axioms). If wired into the build it should run after the CL mirror refresh.
Why this is actionable now
Pure reporting. No decision on relations or modelling required.
Context
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with src/scripts/single_cell_coverage.py and inspect the existing reports mechanism alongside reports/stages-*-report.tsv. Determine how scheduled reports are wired and ensure this coverage output is generated after the CL mirror refresh. Done means the computed numbers land in reports/ on the existing schedule without requiring credentials.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- build-system, data
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 72/100