SuperAPI AI 工具集

imaging-data-commons

数据与分析

查看项目

更新于 10-21 16:18

技能介绍

用途

Imaging Data Commons(IDC)技能用于查询和下载美国国家癌症研究所影像数据公共库(NCI Imaging Data Commons)中的公开癌症影像数据。数据访问无需身份验证。该技能适用于以下场景:查找公开的放射学(CT、MR、PET)或病理学(幻灯片显微镜)影像;按癌症类型、成像模态、解剖部位或其他元数据筛选影像子集;从 IDC 下载 DICOM 数据;在研究或商业应用前检查数据许可;无需本地 DICOM 查看器软件即可在浏览器中可视化医学影像。

主要能力

该技能提供多种数据访问路径,需根据会话和任务选择最合适的路径:

  • idc-index Python 包:功能最全的路径,也是唯一能传输影像字节的路径。支持下载文件、pandas 分析、无限制查询、pydicom/SimpleITK、病理切片、超过 10000 行的结果以及可重复运行的版本固定脚本。安装约需 77 MB 的打包索引数据以及 pandas、pyarrow 和 duckdb。
  • IDC MCP 服务器:托管于 https://api.imaging.datacommons.cancer.gov/mcp(流式 HTTP,无需认证)。适用于发现、队列构建和元数据查询,但需会话已具备该服务器。可通过 MCP 资源 idc://guide 或工具名称 build_cohort、get_cohort_urls、list_analysis_results、get_idc_version 中的三个或更多来识别。
  • IDC REST API:托管于 https://api.imaging.datacommons.cancer.gov/v3,无需认证,无需安装。适用于只读元数据查询,包括发现、队列计数与清单、只读 SQL、临床表、查看器 URL、许可和引用。不传输影像字节。
  • 直接 Parquet 访问:idc-index 元数据表也以 Parquet 格式发布在公共 GCS 存储桶(idc-index-data-artifacts)上,可用 DuckDB 或 pandas 查询。适用于固定数据版本或超过 REST 行数上限的结果。
  • 云存储(S3/GCS):所有 DICOM 文件存放在 AWS S3 和 GCS 之间的公共镜像存储桶中,按 CRDC UUID(而非 DICOM UID)组织为 <crdc_series_uuid>/<crdc_instance_uuid>.dcm。可通过 AWS CLI、gsutil 或 s5cmd 匿名访问,无出口费用。
  • DICOMweb:通过 IDC 公共代理(无需认证,有每日配额)或 Google Cloud Healthcare API(需 GCP 认证)访问,适用于 PACS 集成和 DICOMweb 兼容工具。
  • BigQuery:需 GCP 认证,适用于完整 DICOM 元数据、私有元素和 SR 测量,作为最后手段。
  • SlicerIDCBrowser:在 3D Slicer 中进行 3D 可视化与分析。

使用方式

首先选择访问路径。若会话已有 IDC MCP 服务器,将发现和元数据查询路由至该服务器。否则检查 idc-index 是否已安装(运行 python scripts/check_version.py)。若已安装,使用 idc-index 处理所有任务。若未安装且任务仅为只读元数据(计数、属性值、集合查找、10000 行以下的 SQL、许可、引用、查看器 URL),使用 REST API 通过 curl 查询,无需安装任何东西。若未安装且任务需要超出元数据范围(下载文件、pandas 或绘图、pydicom/SimpleITK、病理切片、超过 10000 行的结果或版本固定脚本),则安装 idc-index。

idc-index 路径的基本设置:

from idc_index import IDCClient
client = IDCClient()

# 验证 IDC 数据版本(应为 "v24")
print(f"IDC data version: {client.get_idc_version()}")

核心工作流:使用 client.sql_query() 查询元数据 → 使用 client.download_from_selection() 下载 → 使用 client.get_viewer_URL() 可视化。

REST API 示例:

B=https://api.imaging.datacommons.cancer.gov/v3
curl -s $B/version   # idc_version, idc_index_data_version, api_version
curl -s $B/stats     # collections, patients, studies, series, instances, size_TB
curl -s "$B/attributes/Modality/values?limit=5"   # 真实筛选值及计数
curl -s $B/sql -H 'content-type: application/json' \
  -d '{"sql":"SELECT collection_id, COUNT(*) n FROM index GROUP BY 1 ORDER BY n DESC LIMIT 3"}'
curl -s $B/cohort/counts -H 'content-type: application/json' \
  -d '{"filters":{"terms":{"collection_id":["rider_pilot"]}}}'

IDC 数据模型

IDC 在标准 DICOM 层级(Patient → Study → Series → Instance)之上增加了两个分组层级:

  • collection_id:按疾病、模态或研究重点对患者分组(如 tcga_luad、nlst)。一个患者仅属于一个集合。
  • analysis_result_id:标识跨一个或多个原始集合的派生对象(分割、标注、放射组学特征)。用于查找 AI 生成或专家标注,而 collection_id 用于查找原始影像数据。

关键查询标识符包括 collection_id(数据集分组)、PatientID(患者)、StudyInstanceUID(DICOM 研究)、SeriesInstanceUID(DICOM 序列)。

索引表

idc-index 包提供多个元数据索引表,可通过 SQL 或 pandas DataFrame 访问。REST API 通过 GET /tables 和 POST /sql 暴露相同表。client.indices_overview 是当前表描述、可用列及其类型的权威来源。

可用表包括:核心表(index、collections_index、analysis_results_index)、模态采集参数表(ct_index、mr_index、pt_index、contrast_index)、派生对象表(seg_index、rtstruct_index、ann_index、ann_group_index)、显微镜表(sm_index、sm_instance_index)、几何/临床/历史表(volume_geometry_index、clinical_index、version_metadata_index、prior_versions_index)。

SeriesInstanceUID 是所有序列级专用表的通用连接键。其他连接列包括 collection_id、analysis_result_id、source_DOI、segmented_SeriesInstanceUID、referenced_SeriesInstanceUID。

适用场景

  • 查找公开的放射学或病理学影像
  • 按癌症类型、模态、解剖部位筛选影像子集
  • 下载 DICOM 数据
  • 检查数据许可
  • 浏览器可视化医学影像
  • 构建训练数据集、批量下载、使用 pydicom/SimpleITK 读取 DICOM、流水线集成
  • 临床/表格数据、影像与临床数据连接
  • 商业用途问题、混合许可队列、引用格式
  • 直接 S3/GCS 访问、版本控制、UUID 映射
  • DICOMweb 端点、PACS 集成
  • 幻灯片显微镜、标注、病理工作流
  • 完整 DICOM 元数据、私有元素(需 GCP)
  • 命令行工具(idc download、清单文件)
  • 通过 GCS 直接 Parquet 查询

限制

  • IDC Portal(https://portal.imaging.datacommons.cancer.gov/)仅支持交互式操作,无编程接口,不应作为脚本或工作流中的步骤。
  • REST API 不传输影像字节,超过 10000 行的结果需切换到 idc-index。
  • REST API 的 POST /sql 仅接受只读 SELECT/WITH 查询,max_rows 默认 5000,上限 10000。
  • GET /attributes 仅列出 19 个可筛选属性,临床值、分割解剖和采集参数不在其中,需使用 SQL。
  • 仅使用 v3 版本,V1 和 V2 已被取代并计划关闭。
  • idc-open-data-cr / idc-open-cr(约 4% 数据)为商业用途受限(CC BY-NC)。
  • DICOMweb 公共代理有每日配额,适用于测试和中等使用;生产量需使用 Google Healthcare(需 GCP 认证)。
  • BigQuery 需 GCP 认证。
  • 直接 Parquet 访问需安装 DuckDB,且无法访问按集合的临床表。
  • prior_versions_index 仅用于复现,与 index 零重叠,不应用于版本历史或“新增内容”问题。
  • 当前 IDC 数据版本为 v24,应始终验证。
  • 该技能不访问任何凭据或环境变量。