
写TCGA下载教程的博主不在少数但我发现大多数教程要么只讲GDC网页怎么点要么上来就甩命令行参数中间缺了很多“为什么”和“这里会踩坑”的关键细节。尤其对刚接触生信的同学来说TCGA数据下载的第一道坎往往不是操作而是“我看不懂这个界面在让我选什么”。这篇文章就按最贴近实际操作的方式从TCGA是什么讲起一路走到数据真正落地到本地。目标是让你看完之后不用再对着GDC Data Portal界面上那几个Filter发懵也不用担心下回来的文件跟样本对不上号。全程按新手友好来写所用的方法也都是常规路径中比较稳妥的选型。1. TCGA是什么这个数据库为什么绕不开1.1 从项目背景看TCGA的定位TCGA全称是The Cancer Genome Atlas中文通常翻译成癌症基因组图谱由美国国家癌症研究所NCI和国家人类基因组研究所NHGRI在2006年联合发起。这个项目的历史地位简单说就是做了十几年、覆盖了几十个癌种、积累了上万例癌症样本的多组学数据而且项目在2018年收官后数据并没有“锁进抽屉”而是继续放在GDCGenomic Data Commons平台里持续维护、更新、开放给全球研究者使用。很多生信入门者第一次接触TCGA是被导师或师兄师姐那句“你先去把TCGA数据下载下来”推着走的。但TCGA不是一个简单的“下载站”它更像一个带有明确数据结构规范的“大型癌症数据仓库”。在这个仓库里同一个癌症样本可同时有转录组、甲基化、拷贝数变异、点突变、临床信息等多张“面孔”每一个维度的数据都被单独组织成文件供研究者在不同分析场景下取用。理解了这一点你后面就不容易在面对“多种文件类型”时犯选择困难症。1.2 TCGA覆盖了哪些癌症与数据类型TCGA覆盖的癌症类型现在基本稳定在33种左右常见的肺癌、肝癌、乳腺癌、结直肠癌、胃癌、肾癌、子宫内膜癌等都有项目名通常写作TCGA加癌种缩写比如TCGA-LUAD代表肺腺癌TCGA-LIHC代表肝细胞肝癌TCGA-BRCA代表乳腺浸润癌。这个命名规则很实用因为在GDC里筛选数据基本都是靠项目名定位。说到数据类型TCGA的核心数据可以大致分成几类基因表达定量数据RNA-Seq最常用做差异表达、富集分析基本都靠它拷贝数变异数据CNV做基因改变分析会用单核苷酸变异数据SNV就是通常说的突变数据可以看某个基因在肿瘤里是否高频突变DNA甲基化数据常用于表观遗传研究临床数据包括年龄、性别、分期、生存时间等用来做分组分析和预后分析蛋白质组数据RPPA相对前几类用得少一些。对新手而言90%的情况第一次下载的都是基因表达定量数据。这篇文章后面也会把转录组表达数据当作主线索来讲解其他类型数据的下载操作流程完全一致替换一下文件类型筛选条件就行。2. GDC里的数据长什么样类型、级别与文件格式2.1 老教程里的Level 1/2/3对应今天GDC的什么内容如果你翻看过几年前的老教程会看到他们把TCGA数据分成Level 1、Level 2、Level 3之类然后告诉你“做分析要用Level 3”。现在GDC界面里其实已经不像以前那样直接用Level来标注了但它背后的分级逻辑依然存在于每个数据类型中。简单理解老分级含义对应GDC常见数据Level 1测序仪直接产生的原始数据BAM文件、FASTQ文件一般受控访问Level 2比对或标准化过程中产生的中间文件部分中间量化结果Level 3经过处理、适合分析用的矩阵或信号数据HTSeq-Counts、STAR-Counts、甲基化信号等我们平时下的大多数文件在意义上都是“Level 3级别”的可以直接用于分析的数据。像基因表达定量结果官方已经把每个样本算好了你拿来就能拼表达矩阵。老教程里那句“下Level 3”被保留到今天约等于你在GDC里选择基因表达定量文件再下载逻辑一脉相承。2.2 表达量、突变、拷贝数、甲基化分别怎么选新手在GDC Repository界面看到的Filters里有几个关键词和你最终下载内容直接相关分别是Data Type、Experimental Strategy、Data Category、Access。如果目标是下载基因表达数据我的建议是这么筛Data Category选择Transcriptome ProfilingExperimental Strategy选择RNA-SeqWorkflow Type选择STAR - Counts新版GDC的默认推荐旧教程里常见的HTSeq - Counts在一些项目中仍然存在两者选一个就好Access选择open表达定量数据属于开放获取不需要额外申请权限。如果目标是突变数据Data Category选Simple Nucleotide VariationAccess是controlled需要先申请权限。拷贝数变异就在Copy Number Variation这个类别里找。甲基化则选DNA Methylation然后根据平台选择对应文件类型。这一步是整个下载过程中最需要耐心的环节因为同一批案例下会有很多文件版本、多个分析流程的产物筛选条件不同最后文件数量会有明显差别。一个更省事的思路是先在Filters里把Project限定到某一个癌种再选Data Type这样列表会短很多出错的概率也小一些。2.3 样本命名规则看懂TCGA-ID的含义下载数据处理到一半你一定会遇到一个长这样的一串字符TCGA-55-7284-01。想快速识别样本属于肿瘤还是正常不需要查表直接看末两位。TCGA样本ID的常规结构是项目代码-组织来源代码-受试者编码-样品类型代码。以TCGA-55-7284-01为例TCGA项目前缀55TSS代码代表样本来源的组织代码7284受试者的唯一编号01样品类型代码01表示肿瘤原发灶10和11表示癌旁正常组织。所以当你准备做配对差异分析时需要找的是同一个前12位比如TCGA-55-7284下面一个样品类型是01、另一个是10或11的两份样本。这个规律在所有TCGA临床注解文件里都是一致的非常可靠。需要留意的是GDC下载的文件夹名并不是这种可读的TCGA-ID而是UUID形式的字符串。这个问题很常见我在后面专门用一个章节讲如何处理。3. 三条下载路线怎么选GDC官网、GDC Client与第三方平台3.1 方案对比谁适合网页点选谁适合命令行批量TCGA数据下载不是只有一种正规打开方式。从新手视角看眼前至少有三种可行路线我把它们的差异摆出来下载方式适合场景优点不足GDC Data Portal网页直接下载文件数量少、临时取数界面直观不需要装工具文件多时浏览器容易卡无法稳定续传GDC Client命令行工具大批量文件、正式分析前全量备份稳定支持断点续传和MD5校验需要接触命令行新手略感门槛UCSC Xena、cBioPortal等第三方平台只需表达矩阵不想处理原始文件直接给整理好的矩阵省时省力数据版本与GDC当前版本可能不完全一致我的建议很明确如果你只想拿某个癌种的表达矩阵来先跑一个差异分析不必非要从GDC下载几百个文件再自行拼接直接去UCSC Xena下载整理好的表达矩阵效率高得多。但如果你想保证数据可溯源、以后写论文时能清楚交代每一个文件的UUID、下载版本、分析流程或者你需要和GDC上其他数据类型逐一匹配那就老老实实走GDC Client这条路。这也是我推荐大多数新手走的路线虽然第一次装Client有点折腾但换来的是一劳永逸的稳定性和可复现性。3.2 什么时候可以绕开GDCUCSC Xena与cBioPortal的使用场景先讲讲绕开GDC的时机。UCSC Xena是UCSC维护的公共数据平台里面内置了大量TCGA数据已经把每个样本的表达量、表型、拷贝数等整理成了矩阵格式用户不需要掌握任何命令行知识只需在网页上选择数据集、按样本ID提取子集就能直接下载一个csv或tsv格式的表格。cBioPortal则更偏向“以基因为中心”的查询分析。你想知道某个基因在某个癌种中的突变频率、拷贝数改变比例、表达水平变化直接在网页上搜基因名就能看到结果不用自己下载大文件再本地分析。它适合做快速探索不标准的数据筛选流程。用第三方平台最大的好处是省时间但有一个代价不同来源的数据处理流程可能不同和GDC官方当下的release版本会有差异。所以一旦你将来要把结果放到文章里别人可能会质疑数据版本不一致。为了避免这个问题正式分析用GDC原始文件仍是业内更稳妥的默认选择第三方平台可以当作探索阶段的辅助工具。3.3 正式下载前需要准备什么无论走哪条路线开始前都建议确认以下基础环境省得中途折腾硬盘空间是否充足。转录组表达定量文件单个不大一般几MB到几十MB但一个癌种上百个样本叠加起来几个GB是常态建议预留20GB以上的空间。是否安装了命令行终端。Windows用户可以用PowerShell或cmdmacOS/Linux用户直接用终端。是否已确认目标数据集的项目名和数据类别。比如TCGA-LUAD、Transcriptome Profiling等。可能有人会问需要不需要创建GDC账号。这里说一下TCGA的大多数分析用数据是open access不需要注册账号就能下载。只有少部分受控数据比如BAM级别的原始文件、某些个体级别的变异数据需要申请DAC权限。新手刚开始做常规表达分析用不到受控数据所以不必急着注册。4. GDC Client完整下载实操从筛选到断点续传4.1 在GDC Data Portal里筛选并生成manifest第一步是在浏览器打开GDC Data Portal进入Repository标签页。这个页面左侧就是Filters面板右侧是符合当前条件的文件列表。具体操作路径我建议这样做在Filters里找Projects展开后选择你要的癌种比如TCGA-LUAD在Data Category里勾选Transcriptome Profiling在Experimental Strategy里勾选RNA-Seq在Workflow Type里勾选STAR - Counts在Access里勾选open。筛选完成后右侧文件列表会显示所有符合条件的文件。这时直接点击列表上方的“Add All Files to Cart”所有文件就会进入右上角的购物车。此操作等同于GDC网页里的“全部加入购物车”在部分界面语言里对应的按钮可能是类似意义的英文相对直观。接下来点击右上角的购物车图标进入Cart页面就能看到刚才加入的文件清单。在这一页做两件关键的事点击Metadata下载metadata.cart.json文件这是后面把UUID文件夹映射回TCGA样本ID的钥匙点击下载manifest文件通常保存为gdc_manifest.txt里面包含每个文件的UUID、文件名、MD5、大小等信息。新手最常见的误区是下载完manifest就以为数据到手了。不是的manifest只是“清单”真正的大文件还没下载。接下来就用GDC Client配合这个manifest把文件拉下来。4.2 安装并运行GDC ClientGDC Client是NCI官方提供的数据下载工具支持Windows、macOS、Linux。到GDC官网的相关下载页面能找到对应系统的安装包。以Linux服务器为例下载得到的通常是一个tar.gz压缩包解压后目录里会有一个可执行文件gdc-client。Windows版本解压后有gdc-client.exe。为了方便后续操作可以把可执行文件放到一个专门的工具目录并把该目录加入系统PATH环境变量。基础用法非常直接在终端里进入manifest所在目录然后运行./gdc-client download -m gdc_manifest.txt -d ./TCGA_LUADWindows下对应的是gdc-client.exe download -m gdc_manifest.txt -d D:\TCGA_LUAD-m参数指定manifest文件路径-d参数指定保存目录。GDC Client会读取manifest里的UUID列表逐个建立子文件夹并把对应文件下载到里面。实测中有几个参数非常好用-n 4指定同时下载的连接数数字越大下载速度越快但也会占用更多带宽建议4到8之间--retry-amount 10设置失败重试次数网络不稳时可以适当调大--no-segment-md5在某些大文件分段下载场景下可避免额外的校验开销日常使用不必添加。GDC Client最值得表扬的一点是支持断点续传。即使下载中途断网或者手动终止了重新运行同样的命令它会自动跳过已完成的文件只补下缺失的部分不需要从头再来。这一特性在肿瘤样本文件动辄几十GB的原始测序数据场景中特别重要。4.3 利用metadata文件把文件夹映射回样本ID下载完成后你会看到一堆以UUID命名的文件夹。如果你只下载表达定量文件每个文件夹里一般有一个.gz压缩文件或.tsv文件。问题来了这些UUID怎么对应到TCGA样本ID答案在之前下载的metadata.cart.json里。这是一个JSON格式文件记录了每个文件的UUID、文件名、所属case ID、样本信息等。我习惯用R来读library(jsonlite) meta - fromJSON(metadata.cart.json) df - data.frame( file_id meta$file_id, file_name meta$file_name, case_id sapply(meta$associated_entities, function(x) x$case_id), sample_id sapply(meta$associated_entities, function(x) x$entity_submitter_id), stringsAsFactors FALSE ) head(df)输出结果里file_id就是UUIDcase_id和sample_id就是可读的TCGA-ID比如TCGA-55-7284。把这张映射表保存好后续无论是组装表达矩阵还是和临床信息关联都靠它。4.4 临床数据下载的附加说明同样的操作思路也可以用来下载临床数据。在GDC的Repository页面里Data Category选ClinicalData Type选Clinical Supplement或相关类型然后加入购物车下载即可。但临床数据我更推荐另一种方式直接在GDC Data Portal顶部进入“Cases”页面筛选目标项目后点击页面里的“Download Clinical”按钮GDC会弹出一个字段选择界面让你勾选需要哪些临床字段。这种方式可以直接导出一个带列名的表格文件比从Repository里下载一堆JSON文件再自行解析方便得多尤其适合新手快速构建临床信息表。5. 新手最容易踩的坑和避开方法5.1 文件夹全是UUID和样本对不上这个坑基本人人都会遇到而且会在组装表达矩阵时变成一个实实在在的障碍。解决办法上面已经说过就是利用metadata文件做映射。但有一个细节需要强调metadata.cart.json里的associated_entities是一个列表不同的数据类型对应的字段可能略有不同。有的文件对应多个样本处理时不能用简单的向量化操作最好用sapply或lapply逐项取出来。R新手在这一步容易直接meta$associated_entities[, case_id]报错原因就是没意识到这是一个嵌套的list。如果用的是表达定量文件每个文件通常只对应一个样本处理方法就是上面代码里的方式。如果遇到多对一的情况把associated_entities里的所有case并行展开成多行即可。5.2 文件类型和下错数据在GDC里选错了Data Type会直接导致文件内容和你预期不符但文件名和样本ID看起来又“很正常”掉进去的几率非常高。常见的“下错”有这几种表现想下基因表达定量数据却把文件列表里同一case的“Gene Expression Quantification”和“Isoform Expression Quantification”都勾上了多加了很多并不需要的文件把同一RNA-Seq数据同时选了两个workflow类型比如STAR - Counts和HTSeq - Counts都选了文件数量翻倍后期还要花时间去重想下肿瘤样本的表达量但筛选条件没限制Sample Type把正常组织的文件也混进来了。解决方法是每次筛选完都花十秒钟看一下文件列表的“Data Type”和“Workflow Type”两列确认是不是你要的那一种。另一个经验是在manifest生成前先浏览完整文件列表检查一下有没有混杂其他癌种的数据。把Filters里的Project限定好通常能规避大部分问题。关于配对样本的数据有一类新手特别容易犯的错直接在文件列表里全选所有文件想着“反正数据量也不大”结果下载后发现样本既有肿瘤也有正常组织但不知道哪些属于同一患者。更稳妥的做法是下载前就在GDC中用“Cases”页面或metadata里的信息提前把配对样本的ID列出来并做成一个计划表再下载。5.3 大文件下载中断、磁盘空间不足怎么处理GDC Client虽然支持断点续传但长期运行时仍偶尔会出现个别文件下载失败。最直接的处理方式是不停地重跑命令GDC Client会自己跳过已经完成的文件只下载失败的子集。如果同一个文件反复失败可以先删除该文件对应UUID的文件夹再单独指定该UUID下载./gdc-client download 某个UUID -d ./TCGA_LUAD磁盘空间不足的问题则要在下载前就避免。转录组表达定量文件单个可能不大但当你选择多个项目或多个数据类型时总量会快速膨胀。我的经验是下载前先计算manifest里size列的总和预留出至少两倍空间因为解压文件还要额外占空间。如果空间实在紧张可以分批下载先下载第一批解压后删除压缩包再下载第二批这样循环处理。6. 数据到手后先别急下载目录检查与下游分析衔接6.1 用MD5文件校验文件完整性GDC下载目录里通常会生成一个MANIFEST.txt或类似记录文件里面包含每个下载文件的MD5值。GDC Client在下载时会自动校验MD5因此正常情况下文件完整性是有保障的。但如果你把文件拷贝或移动过或者曾经手动中断过下载我还是建议做一次完整校验以防后续分析时被具体报错折磨。在Linux/macOS下可以用md5sum批量校验Windows下可以用certutil或安装一些文件校验工具。具体操作不复杂但在分析之前花这几分钟是值得的。6.2 打开表达矩阵确认数据格式下载下来的表达定量文件各有不同的列格式。以STAR-Counts的gene quantification文件为例一般包含基因ID、基因名、未归一化计数、TPM等列。新手可以先解压一个文件用head或文本编辑器打开看看内容结构确认列名和行数是否符合预期再进入批量组装矩阵的环节。组装矩阵这件事说起来简单但真实操作时有不少细节比如基因注释版本要对齐、多个样本的基因顺序要统一、最后要输出以基因为行以样本为列的矩阵。我见过的稳妥做法是先用metadata映射好每个文件对应的样本ID再把所有文件读入一个list提取同一列拼成数据框最后加列名。这个过程用R的tidyverse系列或data.table都能完成。6.3 一个小建议先跑通小样本再全量下载这一条是我在带新手时最常给出的建议。不要一开始就下整个癌种的全部文件而是先在GDC筛选条件中只选5到10个样本走一遍完整下载、解压、映射、组装流程确认每一步都理解清楚、代码运行无误再回到GDC把所有文件加入购物车下载全量数据。这样做有两个好处先用小批量数据把操作链路走通能减少全量下载后发现格式理解错误、需要重新下载的浪费小批量文件让你能快速验证metadata映射逻辑有没有写错因为样本数少你可以肉眼逐个核对非常直观。我当时第一次下载TCGA数据时就是没有做这一步直接下载了几百个样本的文件结果花了半天时间下载又花了一整天发现样本ID映射逻辑写错了只能重新处理。那批文件虽然没作废但浪费的时间完全可以通过先跑通小样本避免掉。TCGA数据下载本身不难难点全在于“对数据和工具的体系有一个清晰认知”。你把GDC的数据分类逻辑、文件组织方式、样本命名规则这几个底层概念搞懂之后不管以后下载哪种数据类型、换用哪个平台都能很快适应。希望这篇指南能帮你把数据顺利拿到手让你把真正的精力留给后续的分析而不是耗在下载这一关。