Repository navigation
Release 1.9.0: IDC v25, idc-index 0.13.0, and data provenance - #42
Merged
Merged
Conversation
idc-index 0.13.0 is a data-release bump with no API change. The substance of v25 is provenance, which the skill documented nowhere. Provenance is recorded per source, keyed on source_DOI, because collections mix lineage: tcga_brca radiology arrives as DICOM from TCIA while its pathology is IDC-converted from GDC material under a separate Zenodo DOI. collections_index.sources is a list of structs with a nested provenance; analysis_results_index.provenance is a new column. A NULL struct is a pointer, not missing data -- all 92 of the 308 collection sources without provenance are analysis-result DOIs, covered in the other table, so across the pair coverage is complete. Also documents four index columns the guides never carried (sop_class_name, transfer_syntax_name, PhotometricInterpretation, PixelRepresentation), all comma-separated when instances in a series disagree, and the new Hugging Face mirror of the Parquet artifacts. The DICOMweb store stays at idc-store-v24: stores lag a release by 1-2 weeks and idc-store-v25 is not populated yet. The hardcoded "v24" assertion in test_snippets.py now reads the frontmatter, so a data release bumps one place instead of leaving the guides stale. Verified against live services: 174 tests pass, plus 33 BigQuery dry-run tests. MCP tool inventory, the 19 filterable attributes, and all REST limits re-checked against 3.0.0b5 and unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The endpoint is an MCP transport, not a browsable page: it answers 405 to HEAD and 406 to GET, so lychee reports it as broken even though it is fine. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
idc-index0.13.0 is a data-release bump with no API change, so the version pin is the small part of this. The substance of v25 is data provenance, which the skill documented nowhere.Provenance
v25 records who contributed, de-identified, and DICOM-converted each part of the archive. Two things a reader gets wrong unaided, so both are documented explicitly:
It is per source, not per collection, keyed on
source_DOI. Collections mix lineage —tcga_brcaradiology arrives as DICOM from TCIA (dicom_conversion_by = NOT_APPLICABLE) while its pathology is contributed by IDC, de-identified by GDC, and converted by IDC under a separate Zenodo DOI.collections_index.sourcesis a list of structs (unnest it) with a nestedprovenance;analysis_results_index.provenanceis a new column.A
NULLstruct is a pointer, not missing data. All 92 of the 308 collection sources without provenance are analysis-result DOIs, whose provenance sits inanalysis_results_index— populated for all 26 rows. Across the pair, coverage is complete, so reporting "unavailable" would be wrong.NOT_APPLICABLE/UNKNOWN/NOT_DOCUMENTEDare values, not nulls.Documented in
index_tables_guide.md(fields, joins, traps),sql_patterns.md(worked queries), andSKILL.md, withTestProvenancepinning the invariants.Also found while verifying
indexcolumns the guides never carried:sop_class_name,transfer_syntax_name,PhotometricInterpretation,PixelRepresentation(the latter two shipped in 24.2.2 and were missed by 1.8.3). All four are comma-separated when instances in a series disagree (~72 000 series) and the latter two areNULLfor SEG/SR/RTSTRUCT, so=silently drops mixed-encoding seriesgdc_idc_mapping(the imaging/genomics join)Version bumps
Pinned minimum
idc-index0.12.5 → 0.13.0 and documented data version v24 → v25 across the frontmatter, the setup guard,check_version.py, and everyTested with:header. Archive totals 176 → 179 collections and ~99 → ~100 TB; mixed-license collections still 39, re-measured.The DICOMweb store deliberately stays at
idc-store-v24— stores lag a release by 1-2 weeks andidc-store-v25is not populated yet.dicomweb_guide.mdnow warns about this at the point of use, since the guide's own "replace{VERSION}with the IDC release number" plusget_idc_version()leads straight to a store name that 404s. This will need a follow-up bump once v25 is populated.Verification
174 tests pass against live services, plus 33 BigQuery dry-run tests. All snippets were re-run against 0.13.0 / v25 before the headers moved: 91 of 92 passed unchanged, the one failure being the hardcoded version assertion below. The MCP tool inventory, the 19 filterable attributes, and all REST limits were re-checked against
3.0.0b5and are unchanged — both contract suites pass unedited.test_snippets.pyhardcoded"v24", the one test needing a hand edit every data release. It now readsidc-data-versionfrom the frontmatter, so a frontmatter disagreeing with the pinnedidc-indexfails CI instead of leaving the guides describing an older release.🤖 Generated with Claude Code