All notable changes to the Imaging Data Commons Skill are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
SYNC.md: how registries should vendor the skill. Bundle unchanged
Conformance pass from review of the downstream sync in K-Dense-AI/scientific-agent-skills#158: each item was a local edit a registry had to make to the vendored copy, so fixing it here keeps the next sync a straight file copy.
SKILL.mdfrontmatter indentsmetadatatwo spaces, not four. Four is valid YAML, but registry validators that read frontmatter line by line see only two-space nesting and reportmetadata.versionas missing. Pinned bytests/test_structure.py
- No hardcoded installer commands in the bundle:
SKILL.mdand the guides name the package needed and point atscripts/check_version.pyinstead of printingpip install …, which targets whichever interpreterpipresolves to, drops the pinned version, and collides with environments standardized on another installer. Guarded bytests/test_structure.py check_version.pyprefersuvwhen onPATH, with--pythonso it targets the interpreter that failed to importidc_indexrather than the active environment. Neither form overrides PEP 668
tests/test_check_version.py: offline, standard-library-only contract for the bundled script — version parsing, install-command construction, exit codes, best-effort network notices, and guards that it never shells out to an installer or bypasses PEP 668. Runs with nothing installed, so a registry that requires a suite for any skill shippingscripts/can use it as-is; the duplicated cases lefttests/test_snippets.pyscripts/**to thetest-snippets.ymlpath filters — a change to the bundled script did not trigger CI
-
references/rest_api_guide.md— IDC's hosted REST API athttps://api.imaging.datacommons.cancer.gov/v3(no authentication): query surfaces, endpoint reference,terms/rangesfilter syntax, SQL guardrails, clinical tables, manifests, licenses, citations. Verified endpoint by endpoint against API 3.0.0b3 / IDC v24 -
One filter body shape on every filtered endpoint — the filter object goes under
filters. Misuse is refused rather than ignored (422for a bare filter or unknown key,400for an unfiltered manifest), and responses echofilters_appliedandwarnings, so a zero count with no warnings means the filter matched nothing (IDC-REST-MCP#44) -
Measured request limits:
/sql5000 / 10000 rows and a 30 s timeout,cohort/manifestpage_size100 / 5000,manifest.txt100000 series, clinical rows 5000 / 100000, attribute values 100 / 10000. No rate limit or quota -
How to check the API against a local
idc-indexviaidc_index_data_version, and how to read a mismatch: the major is the IDC data release (24.x.yservesv24), so a differing major means different series, while a differing minor or patch is an index build of the same release -
Workaround for a major mismatch:
idc-indexsilently skips manifest rows its own index does not list, so upgrade it or transfer directly from the bucket withs5cmd --no-sign-request. Also summarized inSKILL.md, since the failure is silent -
"Use v3 only" guidance in
SKILL.mdand the guide: V1 and V2 are superseded and scheduled for shutdown, so V1/V2 examples should be ported rather than extended -
REST API entries in
SKILL.md(Data Access Options, Quick Navigation, Tool Selection Guide, network access) andUSAGE.md(setup section, allowed domains, guide listings) -
tests/test_rest_api.py: contract tests for the guide's endpoints, attributes, limits, and filter contract, checked against the live API and skipping when unreachable.IDC_API_BASEpoints them at a staging deployment. Added totest-snippets.yml -
references/licensing_and_citation.md— license semantics (CC BY vs CC BY-NC shares, custom terms, the most-restrictive-term rule for mixed cohorts) and citation generation. Written access-path-neutral:idc-index,POST /v3/licenses/POST /v3/citations, and theget_licenses/get_citationsMCP tools side by side, since neither task is tied to Python -
tests/test_structure.py— file-only contract tests, added totest-snippets.ymlahead of the slower suites: a 500-line budget forSKILL.md, resolution of every guide it names, no orphan guides inreferences/, and assertions pinning the always-loaded content listed below. No network oridc-indexinstall needed
- Access-path selection is task-based rather than one fixed default. With no MCP server and no
idc-indexinstalled, read-only metadata (counts, attribute values, SQL under 10000 rows, licenses, citations, viewer URLs) goes to the REST API instead of paying a ~77 MB install;idc-indexremains the path for downloads, pandas, pixel data, and larger results, and the only one that moves image bytes.SKILL.mdopens with that four-branch gate, and its frontmatter description no longer namesidc-index SKILL.mdand the troubleshooting entries defer toscripts/check_version.pyfor install and upgrade commands rather than printing a barepip install, which could target a different interpreter than the one running and ignores the pinned version- Positioned direct Parquet access after the REST API: it still needs
pip install duckdband does not publish the per-collection clinical tables, so it is for version pinning and results past the REST row cap - Reduced
SKILL.mdfrom 722 to under 500 lines, holding the budget in CI rather than leaving it to downstream registries to re-split after every sync. Content moved into the topical guide that already owns each subject rather than into a new catch-all file:- Discovery and SQL examples (overall-scale query, per-collection breakdown,
collections_index/analysis_results_indexqueries) →references/sql_patterns.md - Full index-table inventory with row granularity →
references/index_tables_guide.md, which also gained the "which table contains column X" search pattern;SKILL.mdkeeps a five-row table-family map - Python
dirTemplate=examples and the default template →references/cli_guide.md - License and citation detail →
references/licensing_and_citation.md - Clinical-access snippet and BigQuery use-case list condensed to pointers; the "Common SQL Query Patterns" section removed as a duplicate of its Quick Navigation entry
- The Tool Selection Guide table merged into Data Access Options, which gained a Reference column — the two listed the same access paths
- Discovery and SQL examples (overall-scale query, per-collection breakdown,
- Corrected the Data Access Options table: DICOMweb split into its proxy (no auth, quota) and Google Healthcare (GCP auth) routes; BigQuery moved last and marked a last resort; the IDC Portal pulled out of the table as the one interactive-only option
- Kept inline, and now pinned there by
tests/test_structure.py, the guidance that corrects what a model gets confidently wrong from its own priors — a reference file only helps when the agent already knows to look: the opposite argument order ofdownload_from_selectionanddownload_dicom_series, the "filter kwargs, NOT a DataFrame" warning, enumerate-values-before-filtering, the CC BY-NC license class, and routing "what's new in vX" toseries_init_idc_versionrather thanprior_versions_index test_endpoint_url_is_consistent_across_docsnow allows/v3REST paths alongside the MCP URL, still rejecting a bare host or a stale/v1,/v2path
This is a rewrite, not a byte-for-byte relocation. Of 116 executable lines in the previous
SKILL.md, 104 appear verbatim elsewhere in the bundle; the other 12 are mostly re-wrapping.
Three deliberate removals: a results.iterrows() printing demo, the SQL form of clinical-table
discovery (clinical_data_guide.md covers it via the DataFrame API), and a duplicate
cohort/counts curl already in rest_api_guide.md.
A text diff is the weaker check regardless — what a split changes is which content is in context
at decision time. tests/test_snippets.py executes the queries: 97 passed against IDC v24.
- Trimmed
SKILL.mdfrom 791 to 684 lines by relocating content to reference guides rather than deleting it, resuming the Phase 2 reduction that the 1.7.0 MCP section had reversed:- Moved the three "what's new in IDC vX" queries to
references/sql_patterns.mdunder a new "Version Tracking" section;SKILL.mdkeeps the guidance that matters (useseries_init_idc_version/series_revised_idc_version, neverprior_versions_index) as a pointer - Dropped the second filter-value-discovery query from "Querying Metadata with SQL", which duplicated the
BodyPartExaminedpattern already insql_patterns.md, and the flat-dirTemplateandsource_bucket_location="gcs"download variants, both now described in prose next to the canonical example - Removed the repeated
from idc_index import IDCClient/client = IDCClient()preamble from six examples, stating once in the Overview that examples assume it — matching howsql_patterns.mdis already written - Condensed the DICOMweb endpoint table, the
citations_from_selectionparameter list, and the downloaded-file-naming notes into prose; the full endpoint details remain inreferences/dicomweb_guide.md - Deduplicated the two
references/bigquery_guide.mdpointers in "Advanced Queries with BigQuery"
- Moved the three "what's new in IDC vX" queries to
- "IDC MCP Server" section in
SKILL.mdandreferences/mcp_guide.md, covering IDC's hosted MCP server athttps://api.imaging.datacommons.cancer.gov/mcp(streamable HTTP, no authentication): how to recognize it, how to divide work between it andidc-index, and how to hand off SeriesInstanceUIDs for download - Guidance to identify the server by its
idc://guideMCP resource or a fingerprint of three or more IDC-specific tool names, and to fall back toidc-indexwhenever identification is ambiguous — generic tool names such asrun_sqlare explicitly not treated as evidence - "IDC MCP Server (Optional)" section in
USAGE.mdwith the endpoint, when adding it is worthwhile, and a Claude Code registration example tests/test_mcp_server.py: contract tests that parse the documented tool fingerprint and inventory out ofSKILL.md/references/mcp_guide.mdand check them against the live server, so the docs cannot drift silently as the beta server evolves; network tests skip rather than fail when the server is unreachable, and the offline checks guard URL consistency and keep generic tool names out of the fingerprintUSAGE.mdto thetest-snippets.ymlpath filter, since the new tests read it- Snippet test coverage for
references/use_cases.md,references/digital_pathology_guide.md, andreferences/parquet_access_guide.md, which had none: 31 tests covering the use-case selection queries, every slide microscopy / annotation / segmentation query in the pathology guide, and the DuckDB-over-HTTPS Parquet queries. The pathology tests assert the TCGA-BRCA slide counts quoted inline in that guide (2704 primary / 399 normal, barcode sample types 01/06/11), so a data release that moves them fails CI instead of silently making the prose wrong TestParquetAccessGuidechecks that every Parquet file listed in the guide exists undercurrent/and thatcurrent/resolves to the installedidc-index-datarelease
- Moved the MCP-vs-
idc-indexrouting decision into theSKILL.mdOverview, next to "Primary tool", so a session that already has the MCP server can skip theidc-indexsetup instead of discovering the alternative only after running it;idc-indexremains the primary, always-available path and the version-check step is unconditional again scripts/check_version.pyno longer installs anything: whenidc-indexis missing or below the pinned minimum it prints thepip installcommand for the running interpreter and exits non-zero, leaving the choice of environment to the user.SKILL.mddocuments the new behavior- Updated to idc-index 0.12.5 (idc-index-data 24.2.2); IDC data version remains v24. 0.12.5 relaxes the dependency to
pandas>=2.2.2,<4, so installing the skill's pinned minimum no longer downgrades a pandas 3.x environment (verified: 0.12.5 installs alongside pandas 3.0.5) - Refreshed the stale
Tested with:headers inreferences/:use_cases.md,clinical_data_guide.md, anddigital_pathology_guide.mdclaimed idc-index 0.12.1, andparquet_access_guide.mdclaimed idc-index-data 23.10.1. All snippets were re-run against idc-index 0.12.5 / idc-index-data 24.2.2 before the headers were updated.bigquery_guide.mdnow names the BigQuery dataset it was validated against (bigquery-public-data.idc_current, viabq query --dry_run) rather than an idc-index version its SQL does not use - Repository renamed from
idc-claude-skilltoimaging-data-commons-skillon GitHub to reflect that the skill is not specific to Claude - Made
README.md,USAGE.md,CHANGELOG.md, the issue template, and test docstrings vendor-neutral: the skill is described as an Agent Skills–format skill usable with any compatible AI assistant; Claude-specific setup instructions remain as one supported environment - Promoted the
npx skills addcross-agent installation to the top ofUSAGE.md; renamed "Claude API Setup" to "API Setup"
- Removed the
pip3 install --upgrade --break-system-packagescall fromscripts/check_version.py. It bypassed the PEP 668 guard on externally managed interpreters, and — combined with thepandas<=2.2.4cap in idc-index ≤ 0.12.4 — could silently downgrade a system-wide pandas 3.x as a side effect of a version check. It also invoked whateverpip3resolved to onPATH, which is not necessarily the running interpreter's pip, so an install could land in a different environment than the one that failed to importidc_index. Reported in review of K-Dense-AI/scientific-agent-skills#158
parse_versioninscripts/check_version.pyno longer raises on pre-release or suffixed tags (0.13.0rc1,v1.7.0-beta); it takes the leading digits of each component and pads to three, so an upstream pre-release cannot crash the startup check. Pre-releases compare equal to their base release, keeping update notices conservative
scripts/check_version.py(run first): installs the pinned author-vettedidc-indexminimum, then prints best-effort, notify-only notices when a neweridc-index(PyPI) or skill release (GitHub) is available — never auto-installs newer releases, silently skipped offline- "Keeping the Skill Up to Date" section in
USAGE.md(release notifications, per-surface update steps, fresh-conversation reminder); linked from README
- Replaced the inline startup version-check in
SKILL.mdwith a prominent pointer toscripts/check_version.py, keeping the code out of the model's context - Renamed repository references
idc-claude-skill→imaging-data-commons-skillacrossSKILL.md,README.md,USAGE.md - Pointed
tests/test_snippets.pyat the new script and added a guard that itsMIN_VERSION/SKILL_VERSIONmatch the SKILL.md frontmatter
- Standardized the required
idc-indexon0.12.3(was0.12.2in the version-check vs0.12.3in frontmatter) and switched to numeric, not string, version comparison
- Added version tracking guidance: "what's new in vX" workflow using
series_init_idc_version/series_revised_idc_versioninindex; clarifiedprior_versions_indexis for reproducibility only (zero overlap withindex, column names differ from main index version columns) - Collapsed five
SeriesInstanceUIDjoin rows into a single universal-key statement; table now covers only non-obvious join columns - Removed Installation and Setup section (duplicated the CRITICAL version-check block); folded optional deps into
ModuleNotFoundErrorTroubleshooting entry - Trimmed "Command-Line Download" inline section from ~60 lines to 5; full CLI coverage (
download-from-manifest,download-from-selection, all options) remains inreferences/cli_guide.md
ct_index,mr_index,pt_indextables (idc-index 0.12.3 / idc-index-data 24.2.0): modality-specific acquisition and reconstruction parameter indices, one row per series, all joining onSeriesInstanceUIDct_index(21 columns): pixel spacing, slice thickness, kVp, convolution kernel, tube current min/max (dose-modulated), exposure, spiral pitch, scan optionsmr_index(22 columns): field strength, scanning sequence, TE (array for multi-echo), TR, flip angle, DiffusionBValue (array for DWI), pixel bandwidth, receive coil, number of temporal positionspt_index(21 columns): radionuclide, injected dose, reconstruction method, decay/scatter/attenuation correction, frame duration (array for dynamic PET), number of time slices
- SQL query patterns for all three new tables in
references/sql_patterns.md - Join column entries for
ct_index,mr_index,pt_indexinreferences/index_tables_guide.mdand SKILL.md - Parquet file entries for
ct_index.parquet,mr_index.parquet,pt_index.parquetinreferences/parquet_access_guide.md
- Added concrete
indices_overviewcode example showing how to search for a column across all tables and read column schemas without fetching the table; directly addresses the failure mode where agents queryindexfor modality-specific parameters (SliceThickness, KVP, etc.) instead of usingct_index/mr_index/pt_index - Added troubleshooting entry "Column not found in
indextable" with a workingindices_overviewsearch snippet and join example, covering common acquisition/reconstruction parameters that live in the modality-specific index tables - Updated idc-index reference to 0.12.3
- Clarified
download_from_selectionAPI: added explicit warning that it takes filter keyword arguments (not a DataFrame), comparison table vsdownload_dicom_series(which has a different first-argument order), and restructured the download example as a step-by-step query → extract UIDs → pass list flow - Documented
download_dicom_seriesas an alternative download method with its own signature (seriesInstanceUIDas first arg, thendownloadDir) - Reduced redundancy and duplication in SKILL.md for cleaner reading
- Moved
version_metadata_indexto second position in Available Tables (right afterindex) to surface it alongside the primary index - Moved
prior_versions_indexto last position in Available Tables; updated description to clarify it contains only removed/superseded series and should not be queried for current data - Added explicit Best Practices rule prohibiting web search for IDC data content questions; idc-index DuckDB queries are always authoritative — web sources are stale
- Removed "Loaded" column from Available Tables and replaced with an unconditional rule: always call
client.fetch_index("table_name")before querying any table;fetch_index()is idempotent for all tables including auto-loaded ones, so no exceptions are needed
series_init_idc_versionandseries_revised_idc_versioncolumns in primaryindextable (idc-index-data 24.1.0): expose the IDC version when each series was first added and last revised, enabling version-aware filteringversion_metadata_indextable: maps each IDC version number to its release timestamp; requiresclient.fetch_index("version_metadata_index")- Tests for new index columns and
version_metadata_index(61 total, up from 55)
- Updated to idc-index 0.12.2 (idc-index-data 24.1.0); IDC data version remains v24
analysis_results_indexcolumn renames (idc-index-data 24.1.0):Updated→updated,Description→description
tests/test_bq_snippets.py: BigQuery snippet validation usingbq query --dry_run— 33 tests covering all SQL examples inreferences/bigquery_guide.md(dicom_all, original_collections_metadata, segmentations, quantitative_measurements, qualitative_measurements, private elements, and clinical tables); skips automatically whenbqCLI is unavailable or unauthenticated
- Fixed auto-upgrade subprocess call to pin
idc-indextoREQUIRED_VERSION(was"idc-index", nowf"idc-index=={REQUIRED_VERSION}"), ensuring the installed version always matches the tested version declared in the frontmatter - Added network access transparency note to Overview documenting expected external endpoints (GCS, S3, BigQuery, DICOMweb proxy, Google Healthcare API) and clarifying that no credentials or environment variables are accessed by the skill
- Added tested-with version comment to optional dependency install block (
pandas>=1.5, numpy>=1.23, pydicom>=2.3)
- Updated frontmatter description to be directive about skill triggering: now explicitly instructs invocation for IDC-related queries even without the word "IDC" in the prompt
- Extracted "Batch Processing and Filtering" (section 6) from SKILL.md to
references/use_cases.md(Use Case 5); replaced inline code block with a 2-sentence summary and pointer - Extracted "Integration with Analysis Pipelines" (section 9) from SKILL.md to
references/use_cases.md(Use Case 6); replaced inline pydicom/SimpleITK code blocks with a 2-sentence summary and pointer - SKILL.md reduced from 865 → 775 lines (−90 lines);
references/use_cases.mdexpanded from 187 → 278 lines - Updated to idc-index 0.12.1 (idc-index-data 24.0.4, IDC data version v24)
- IDC v24 adds 15 new collections (161 → 176), ~39K new series, ~4 TB new data (99.27 TB total, 85,682 cases)
- Updated
collections_indexcolumn names to snake_case (idc-index-data 24.0.0 breaking change):CancerTypes→cancer_types,TumorLocations→tumor_locations,Subjects→subjects,Species→species,Sources→sources,SupportingData→supporting_data,Program→program_id - Updated
analysis_results_indexcolumn names to snake_case (idc-index-data 24.0.4 breaking change):Subjects→subjects,Collections→collections,Modalities→modalities
volume_geometry_indextable documentation: 3D geometry validation for single-frame CT, MR, and PT series; boolean checks (orientation, spacing, dimensions, slice positions) and compositeregularly_spaced_3d_volumeflag; join viaSeriesInstanceUIDrtstruct_indextable documentation: RT Structure Set metadata (total ROIs, ROI names, generation algorithms, interpreted types, referenced image series UID); join viaSeriesInstanceUID- New reference guide
references/parquet_access_guide.md: direct DuckDB queries against public GCS Parquet files without installing idc-index; URL pattern, available files, and query examples for main index,volume_geometry_index, andrtstruct_index - SQL patterns for
volume_geometry_indexandrtstruct_indexinreferences/sql_patterns.md - Detailed documentation for BigQuery-only derived tables in
references/bigquery_guide.md:segmentations: per-segment anatomy with full schema, column descriptions, and queries for discovering structures, filtering by coded concept, and linking to SR measurements; note on gap vsseg_indexin idc-indexquantitative_measurements: radiomics and clinical numeric measurements from DICOM SR TID1500 (volume, diameter, shape descriptors, texture, intensity statistics); full schema with column descriptions and query examplesqualitative_measurements: coded assessments from DICOM SR TID1500 (malignancy rating, calcification, texture, margin); full schema with column descriptions and query examplesmeasurement_groups: parent grouping table for SR measurements- Combined example joining all three derived tables for LIDC-IDRI nodule analysis (malignancy + volume + diameter)
- SKILL.md section 7 now explicitly lists per-segment anatomy search, quantitative SR measurements, and qualitative SR measurements as BigQuery-only use cases with no idc-index equivalent
- Updated to idc-index 0.11.14 (idc-index-data 23.10.1)
- Added
SOPClassUIDandTransferSyntaxUIDcolumns to Key Columns Reference inreferences/index_tables_guide.md - Added Direct Parquet Access entry to Data Access Options table and pointer in SKILL.md
- Added
parquet_access_guide.mdto Quick Navigation table in SKILL.md
- New "Identifying Tumor vs Normal Slides" section in digital pathology guide with two approaches:
- Structured DICOM tissue type via
primaryAnatomicStructureModifier_CodeMeaning(works across all SM collections) - TCGA barcode parsing via
ContainerIdentifier(TCGA collections only, catches metastatic edge cases)
- Structured DICOM tissue type via
- TCGA-BRCA worked examples showing tumor vs normal slide counts
- Documentation references to GDC TCGA barcode format and sample type codes
- Specimen preparation query examples: filtering by staining (H&E), embedding medium (FFPE vs frozen), and fixative, with note about array column syntax (
array_to_string,list_contains) - "Finding Pre-Computed Analysis Results" section: discovering derived datasets (nuclei segmentations, TIL maps) via
analysis_results_index, with example joining annotations back to source slides - Note about per-annotation measurements in DICOM ANN objects (extractable via highdicom after download), with link to microscopy_dicom_ann_intro tutorial
- Updated to idc-index 0.11.10 (adds
ContainerIdentifiercolumn tosm_index) - Updated
sm_indextable description to reflect newly available columns (container/slide ID, tissue type, anatomic structure, diagnosis)
- Automatic idc-index package version check with upgrade prompt before any queries
- Version check compares installed version against
metadata.idc-indexin frontmatter and triggerspip install --upgradewhen outdated
- Prevents "table not found" errors when using newer index tables (e.g.,
contrast_index) with older idc-index versions
- Digital pathology reference guide (
references/digital_pathology_guide.md) with SM, ANN, and SEG query patterns, join examples, and pathology tool recommendations seg_indexcoverage in digital pathology guide with cross-domain clarification (SEG used for both radiology and pathology) and query for finding pathology-specific segmentationsAnnotationGroupLabelfiltering examples for finding annotation groups by name- SM + ANN cross-reference queries showing how to find annotations on slide microscopy images
- Index discovery guidance before BigQuery section to ensure all local indices are checked first
- Documentation for new
ann_indexandann_group_indextables (Microscopy Bulk Simple Annotations) - Example queries for annotation series and annotation group metadata
- Explanation of downloaded DICOM file naming convention (
<crdc_instance_uuid>.dcm) - New reference guides extracted from SKILL.md:
references/index_tables_guide.md- Table schemas, DataFrame access, join column referencereferences/sql_patterns.md- Quick-reference SQL patterns for common queriesreferences/use_cases.md- End-to-end workflow examples
- Quick Navigation section in SKILL.md with decision triggers for when to load each reference
idc-data-versionfield in frontmatter metadata- Documentation for new
contrast_indextable (contrast bolus metadata for CT, MR, PT, XA, RF series)
- Updated to idc-index 0.11.9 (IDC data version v23)
- Reduced SKILL.md from 1,245 to 825 lines by extracting secondary content to reference files
- Core Capabilities sections remain inline to ensure correct API pattern usage
- Refactored detailed SM/ANN content from SKILL.md into
references/digital_pathology_guide.md, keeping brief summaries with pointers in main skill - Made IDC version (v23) more prominent in SKILL.md with verification guidance to prevent responses using older versions
- Clarified distinction between
index_tables_guide.md(structure/access) andsql_patterns.md(query examples)
- Clinical data reference guide for navigating tabular data accompanying images
- Detailed patterns for mapping coded values (option_code to option_description)
- Examples for joining clinical data with imaging data via dicom_patient_id
- Expanded BigQuery guide with comprehensive clinical data coverage (metadata tables, cross-collection queries)
- Private DICOM elements documentation in BigQuery guide covering vendor-specific tags (e.g., diffusion b-values)
- Query patterns for discovering, accessing, and filtering by private tags in the OtherElements column
- CLI reference guide for idc-index command-line tools
- Cloud storage reference guide explaining bucket organization and direct access via s5cmd
- GitHub Actions workflow for syncing skill updates to claude-scientific-skills repository
- Moved version field from top-level frontmatter to metadata section for compatibility
- Corrected s5cmd command-line syntax in cloud storage guide
- Clarified caveat about retracted data in DICOMweb guide
- Updated DICOMweb reference to explain differences between the two available endpoints
- Core IDC data model documentation with index tables reference
- Query and download workflows using idc-index Python package
- BigQuery integration guide for advanced queries
- DICOMweb API guide for programmatic access
- Visualization integration with IDC Portal and OHIF viewer
- License checking and citation generation examples
- SQL query patterns for common use cases
- DICOM metadata guidance and best practices