ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

16S rRNA扩增子数据提交NCBI:SRA与BioProject全流程

16S rRNA扩增子数据提交NCBI:SRA与BioProject全流程 做微生物组的人迟早会撞上这一步文章投出去编辑或审稿人在返修意见里加一句请把 16S rRNA 测序数据存到公共数据库并在文中给出登录号。第一次碰到的时候我整个人是懵的——原始 fastq 在硬盘里躺了半年文件名七零八落样品表是三个版本的 Excel 拼起来的压根不知道从哪下手。NCBI 这边 BioProject、BioSample、SRA 三套编号名字都认识凑一起就不知道先点哪个网上翻到的教程要么是三年前的旧界面要么只讲了一半就断了。这篇就把 16S rRNA 扩增子数据上传 NCBI 的完整链路捋一遍从建项目、建样品、填元数据表到传文件和正式发布。适合刚接手数据管理的研一同学、准备第一次投稿的博士生也适合实验室里被临时抓来管数据的任何人。整套流程不涉及任何高深编程会用 Excel、会敲几条命令就够了真正费时间的是前期整理而不是点按钮那几下。1. 先搞清楚 NCBI 的处理链路三个编号谁管谁很多人卡住不是因为操作难而是一开始就没弄明白 BioProject、BioSample、SRA 这三个东西的层级关系。搞不清依赖顺序就会出现填了半天发现选不到样品这种尴尬。1.1 三套编号的分工与依赖关系BioProject是项目级登记号形如 PRJNA 加一串数字回答的是这是一批什么数据、属于哪个课题、谁负责。一个研究课题通常对应一个 BioProject。如果你手上是同一个大课题下的几个子课题也可以用 UMBRELLA 类型的 BioProject 把它们挂在一起但第一次提交不建议折腾这个一个项目一个号最省事。BioSample是样品级登记号形如 SAMN 加一串数字回答的是这管样品是什么、从哪来、什么时候采的。注意它描述的是物理样品本身不是测序结果。同一个样品做了三次测序BioSample 只有一个run 有三个。SRA是测序读长的存放地最终给出的是 SRR 号run 级。往上还有 SRXexperiment、SRSsample、SRPstudy日常引用里最常写的就是 PRJNA 和 SRR。三者之间存在硬依赖BioSample 必须挂在某个 BioProject 下SRA 里的每一条 run 又必须指向一个已经存在的 BioSample。所以顺序只有一条路——先 BioProject再 BioSample最后 SRA。反着来一定卡壳。提示近两年 NCBI 的 Submission Portal 支持把 BioProject、BioSample、SRA 放在一个向导里连着走但底层的依赖逻辑没变。如果你手上有历史项目仍然可以分开单独提交。1.2 16S 扩增子在 SRA 里被归到哪一类这一步填错了后面会被退回重来。16S rRNA 扩增子属于靶向扩增测序不是全基因组也不是宏基因组鸟枪法。常见字段搭配是这样的字段常见取值说明library_strategyAMPLICON扩增子专用别填 WGSlibrary_sourceGENOMIC扩增子来自基因组 DNAlibrary_selectionPCR经过 PCR 富集library_layoutPAIRED 或 SINGLE看你实际测的是双端还是单端platformILLUMINA / OXFORD_NANOPORE / PACBIO按实际测序平台填instrument_model具体型号例如 Illumina MiSeq、NovaSeq 6000这里有个容易混淆的点有些实验室习惯把扩增子填成 METAGENOMIC理由是我研究的是微生物群落。这个填法在部分场景下不算错但更容易在后续审核中被追问。稳妥做法是按建库方式来定你用的是两步 PCR 扩增就是 AMPLICON GENOMIC PCR。design_description这个自由文本字段一定要认真写。把引物序列和目标区域都写进去例如V4 区515F/806R双端 2×250。理由很实际三年后有人想从 SRA 里捞你的数据做二次分析最先看的就是这一段。写清楚你的数据才会被引用得多。1.3 上手前必须先定下来的三件事第一件用谁的账号提交。账号决定了后续谁能改、谁能看到 hold 状态的数据。常见坑是学生毕业了、账号密码找不回来数据需要补交或修改时全组抓瞎。建议用课题组公共邮箱注册密码和项目一起归档。第二件什么时候 release。NCBI 允许你提交时选择立即公开或指定日期公开。常规操作是先设成 hold拿到 accession 号写进论文等文章正式接收后再放出来。指定日期有上限不够用可以走申请流程延长但要提前操作别等到最后一天。第三件哪些样品要公开。阴性对照、空白对照、重复测序的样品我建议都交。一是审稿人有时会要二是这些数据对别人判断你的结果可靠性很有价值。标注清楚是 control 就行不丢人。2. 提交前的数据整备样品表比文件更难搞真正耗时间的是这一步。我见过太多人打开 NCBI 网页就开始填填到一半发现样品表里少了个采样时间、文件名和样品名对不上然后全部推倒重来。把整理工作全放到离线完成网页上只需要复制粘贴效率差好几倍。2.1 样品命名与编号的唯一性设计sample_name是整条链路的主键它在 BioProject 内必须唯一而且 BioSample 表里写的名字和 SRA 表里引用的名字要逐字符完全一致。这一点极其重要后面报错排在第一名的就是它。命名建议遵守几条规则只用英文字母、数字、下划线、短横线不要用中文、空格、斜杠、括号统一前缀加流水号比如GUT-A01、SOIL-B12一眼能看出组别长度不要太长有些字段有字符数限制别用sample1、sample2这种半年后自己都记不住是什么另外 BioSample 里还有个alias字段是项目内的别名同样要求唯一。很多人把alias和sample_name填成一样这是可以的也最省心。真要区分的话可以把alias设成课题缩写-编号sample_name设成更贴近实物的编号。我习惯建一张主表列头固定成sample_name、alias、组别、采样日期、采样地点、宿主/环境类型、R1文件名、R2文件名。之后 BioSample 表、SRA 表、论文补充材料、实验室内部台账全部从这张主表派生改一处全同步。提示从采样那一刻就统一编号比事后补救省事一百倍。管子上的标签、冻存盒的位置、Excel 里的行号最好一眼能对应上。2.2 FASTQ 文件的自我体检上传之前先把文件自己过一遍。我列一份检查清单照着做能避开大半退回确认已经拆分demultiplex。NCBI 要求你提交的是按样品拆好的数据也就是每个样品一组 fastq。如果你的测序公司只给了混样文件加 barcode 表要么让公司重新拆要么自己用拆分工具处理完再交。混样文件直接上传审稿人是没法用的。确认引物处理状态。如果你的流程已经把引物切掉了在design_description里说明引物已去除如果还留着也写清楚。两种都可以交但必须如实描述不然比对结果对不上。检查文件名。后缀统一成.fastq.gz不要出现.fq、.fastq、.FASTQ.GZ混着来。文件名里不要有空格和中文文件名本身不要重复。检查文件完整性。用wc -l数一下行数双端数据除以 4 就是 read 数R1 和 R2 的 read 数应该一致不一致说明有截断。再确认没有 0 字节的文件。# 统计 read 数文件较大时可以用 zcat 管道 for f in *.fastq.gz; do echo -n $f zcat $f | wc -l | awk {print $1/4} done # 生成 md5 校验文件 md5sum *.fastq.gz md5sum.txt保存一份原始副本。上传过程中如果文件被误删或被覆盖原始数据没了就是真的没了。我的做法是本地留一份冷备份云盘上留一份工作副本提交用的目录单独放。2.3 元数据包怎么选MIMARKS 系列与宿主相关属性NCBI 的 BioSample 用的是标准化元数据包扩增子相关的主要是 MIMARKS 系列。选包的原则很简单——看样品来源。样品类型建议的包方向需要重点准备的字段土壤、水体、沉积物环境类collection_date、geo_loc_name、isolation_source、env_broad_scale肠道、口腔、皮肤菌群宿主相关类host、host_tissue_sampled、collection_date、geo_loc_name植物根际、叶面宿主相关植物host、plant_structure、collection_date食品发酵样本食品类food_product_type、collection_date有几个字段几乎每个包都会要而且格式卡得比较死collection_date必须是YYYY-MM-DD格式实在记不清具体日子可以用YYYY-MM或YYYY但不能晚于提交日期geo_loc_name的格式通常是国家:省份冒号是英文冒号isolation_source写具体的取样部位或基质比如根际土壤结肠内容物我的经验是先在 Excel 里把字段名做成列头每行一个样品把必填项先铺满再补选填项。NCBI 上传界面上会标出哪些是必填但你可以提前在本地对着包的定义把列齐好省得来回改。3. 保姆级实操从建 BioProject 到提交 SRA前面铺垫完了这段开始动手。我按实际点击顺序走一遍每一步说清楚填什么、为什么这么填。3.1 第一步创建 BioProject 并记下 PRJNA 号登录 NCBI 账号进入提交入口选择 BioProject。需要填的信息大致是项目标题、项目描述、数据发布类型、以及是否与已有项目关联。项目标题建议写成一句能被搜索到的话比如中国东部农田土壤微生物群落 16S rRNA 扩增子测序而不是某某课题数据。这个标题会显示在数据库页面上别人检索时看的就是它。描述里可以写研究对象、采样区域、测序区域、样本量的大致范围。不用写得太学术说清事实即可。提交后会得到一个 PRJNA 号立刻记下来。这个号后面建 BioSample 要用写论文要用是全流程最重要的一个标识。提示如果这一步选错了发布类型后面是可以改的但要走客服流程。宁可一开始就选 hold拿到号之后再决定什么时候放。3.2 第二步用批量表格导入 BioSample样品少比如少于 10 个可以在网页上一个个填样品多就直接下载官方的批量模板。模板是 Excel 或 TSV 格式第一行是字段名从第二行开始每个样品一行。填表时有几个细节值得单独说sample_name和alias都要唯一而且sample_name会和后面的 SRA 表联动写错了就得整表重填。organism字段对于 16S 扩增子来说通常填metagenome或environmental samples之类的宽泛分类。因为你测的是混合群落没法填一个具体物种名。这一点不用纠结填宽泛分类是行业惯例。description字段可以放组别信息比如对照组-第 0 天。这个字段是自由文本不会影响校验但对后来翻数据的人很有帮助。导入后系统会给每个样品分配 SAMN 号。把返回的结果表下载下来和你原来的主表做个匹配确认样品数量对得上、顺序没乱、没有因为重名被吞掉的样品。我踩过一次坑两个样品alias写成一样系统只保留了其中一个我当时没核对直到填 SRA 表时发现少了一个样品又退回去改白白多花半天。3.3 第三步填 SRA metadata 表字段逐个说清SRA 的表是重头戏。常见的模板列包括sample_name library_ID title library_strategy library_source library_selection library_layout platform instrument_model design_description filetype filename filename2逐个解释一下容易填错的几个sample_name必须和 BioSample 表里的完全一致这是关联的钥匙library_ID文库编号同一个样品如果有多个文库就写多个每个文库唯一title这条 run 的标题建议带上样品名和测序批次方便检索filetype填fastqfilename/filename2双端数据第一个文件放 R1第二个放 R2顺序别反。单端数据只填filenamedesign_description引物、目标区域、读长写细一点关于library_ID有个细节如果你一个样品跑了两次测序比如补测可以给两个library_ID两个 run 都指向同一个sample_name这样数据在数据库里是挂在一起的别人下载时能看到全部读长。反过来如果你希望它们分开管理也可以用不同的sample_name但那意味着要额外建 BioSample。我的建议是能合并就合并。还有一个常被问到的点同一批数据有多个 lane 怎么处理。如果测序公司已经把同一文库的多个 lane 合并成一个 fastq那直接交一个 run 就行。如果没合并可以每个 lane 交一条 run共用同一个library_ID或者自己合并后交一条。两种都被接受合并后交更简洁。3.4 第四步文件上传与 md5 校验元数据表填好之后系统会让你上传文件。NCBI 提供几种方式网页上传适合小文件FTP/SFTP 适合批量Aspera 适合几十 GB 以上的量。拿到上传地址和临时账号后用命令行传是最省事的# 使用 lftp 上传 lftp -u 用户名,密码 ftp-private.ncbi.nlm.nih.gov cd uploads/你的目录名 mput *.fastq.gz mput md5sum.txt bye如果是大批量数据用 Aspera 客户端会快很多命令大致是这样ascp -i 密钥文件路径 -QT -l 300m -P33001 \ 用户名ftp-private.ncbi.nlm.nih.gov:uploads/你的目录名 \ ./传完之后一定做校验。NCBI 会给出文件的 md5 值和你本地md5sum.txt里的对照。不一致说明文件在传输中断了或者被截断重新传那一个文件即可不用全部重来。这一步看着琐碎但它是唯一能确认文件真的完好到达的手段。提示上传前先拿两三个样品试跑全流程。跑通了再把几十上百个文件一起传避免格式问题导致全批退回。3.5 第五步提交、hold 与正式 release文件传完、元数据表上传完毕、系统校验通过后就可以点提交了。提交后你会拿到 SRR 号和对应的 SRP/PRJNA 号这时候数据处于 hold 状态只有你自己和你授权的账号能看到。接下来是写论文、投稿。在 Data Availability 里写清登录号审稿人拿到号就能访问。文章接收后回到账号里把 release 日期改成立即数据正式公开。有些期刊要求投稿时就公开那就按期刊要求来提前看清楚投稿指南。如果文章迟迟没接收hold 的指定日期快到了可以申请延期。别拖到最后一刻客服处理是要排队的。4. 常见报错与排查技巧实录这一段是我自己踩过的坑和帮别人收拾过的残局。放到一张表里遇到问题直接查。4.1 报错速查表现象或报错大概率原因处理办法sample_name not foundBioSample 与 SRA 表里名字不一致或有空格、大小写差异用精确匹配核对两表把空格换成下划线duplicate sample_name同一名字出现了两次检查是否有样品被重复登记md5 mismatch上传中断或文件被截断单独重传该文件并重新校验file not found文件名与表格不符或没放到指定目录逐字符对照注意.fastq.gz后缀invalid collection_date格式不对或日期晚于今天统一改成 YYYY-MM-DDlayout mismatch单端数据填了 PAIRED或反过来看文件个数决定填 PAIRED 还是 SINGLEplatform 与 instrument model 不匹配填错平台按测序仪实际型号填无法选择 BioSampleBioProject 没建好或未关联先完成 BioProject 再建样品提交后数量对不上导入时因重名被静默丢弃对比返回结果表和原表的行数4.2 那些被退回后才明白的坑第一个坑是文件命名太随意。测序公司给的原始文件名里常带空格、带括号、带测序批次号直接上传就会被拒。我现在的习惯是收到数据第一件事就是批量重命名R1 统一加_R1.fastq.gzR2 加_R2.fastq.gz前缀和样品编号一致。第二个坑是元数据表和实际文件对不上。尤其是做过补测的项目某个样品后来又补了一批数据文件名多了一个后缀但你表格里还是旧名字。上传前一定要做一次表里有文件、文件在表里的双向核对。写个简单的脚本或者用 Excel 的查找功能都能做# 列出所有文件名和表格里的 filename 列做比对 ls *.fastq.gz | sort actual_files.txt # 从表格中提取 filename 列并排序后对比第三个坑是 hold 日期设得太早。默认日期有时候是提交后不久如果你没注意数据可能在你论文还没写完的时候就公开了。提交完成前务必确认一遍 release 设置。第四个坑是多人协作改表。两个人在同一个 Excel 上改最后合并出重复行、丢失行。建议指定一个人主负责其他人只提修改意见或者用在线表格加版本记录。经验整个提交过程里最保险的策略是小批量试跑 双人核对 保留原始记录。前两步能挡住九成的退回最后一步能在真出问题时救你一命。4.3 提交之后的修改与更新路径数据提交完成不代表万事大吉。几种常见的后续需求补交数据。后来又测了一批样品想挂到同一个项目下。这种情况不用重新建 BioProject直接在原项目下新建 BioSample再建新的 SRA 提交即可最后论文里把新的 SRR 号一并写上。修改已公开的元数据。如果发现collection_date填错了或者采样地点写得不够准确联系 NCBI 的支持团队说明情况可以更正。已经公开的数据一般不做删除做更正会留下记录这属于正常操作不用紧张。撤回数据。极少见的情况比如样品被污染需要整体作废。可以申请撤回但要有合理理由而且会留下痕迹。所以提交前把数据质量把好关比事后撤回重要得多。给数据加关联信息。如果同一批数据后来还做了宏基因组可以申请把两个 BioProject 关联起来方便别人成套检索。5. 数据发布之后引用、复用与习惯养成提交完、文章发出来这事看起来就结束了。但这批数据的价值往往在发布之后才真正释放无论是被别人复用还是被自己二次挖掘。5.1 论文里怎么规范引用登录号Data Availability 这段别写得太含糊。常见的写法是把项目号和 run 号都写出来例如原始测序数据已提交至 NCBI SRABioProject 登录号 PRJNAxxxxxxSRA 登录号 SRRxxxxxxx–SRRxxxxxxx。给出区间号审稿人一看就知道总量。有些期刊还要求在方法部分写明数据库名称和访问链接。按期刊模板走就行。如果期刊在投稿系统里有数据可用性单独字段记得填上。另外提醒一句投稿前把号拿到手。有些期刊在送审阶段就要求提供登录号你如果等到接收后才去提交会白白耽误一轮周期。5.2 数据复用怎么找、怎么下载别人的 16S 数据自己交过一遍数据再去看别人的数据会顺畅很多。搜索时可以在 SRA 里按library_strategyAMPLICON加关键词筛选比如16S、V3-V4、gut microbiome。筛出来之后重点看两样东西design_description 里写的目标区域和引物以及read 长度和平台。下载公开数据用 SRA Toolkit# 先预取再转换 prefetch SRR1234567 fasterq-dump --split-files SRR1234567需要注意的坑是不同研究用的引物区域可能不一样V3-V4 和 V4 的数据直接合并做多样性分析结果会受很大影响。做 meta 分析之前先统一截取到相同区域或者用能处理不同区域差异的分析策略。另外单端和双端数据混在一起也要小心双端数据可以只取 R1 来对齐单端格式。5.3 从一次提交到实验室的长期数据管理做完一轮我最大的感受是提交这件事的难度不在 NCBI 那边而在自己这边的数据整洁度。所以我现在在实验室里推的一个习惯是三个当场——采样当时就编号、测序数据回传当天就重命名归档、样品信息表随项目进度随时更新。具体做法是建一张贯穿始终的主表从采样登记一直到提交 NCBI 都用同一套编号。表格放在团队共享位置谁采样谁填行不准另开新表。项目结束时这张表稍作转换就是 BioSample 和 SRA 的输入几乎不用返工。再进一步的话可以把元数据字段提前按 MIMARKS 的标准列好一开始就按规范填。多花半小时换来的是后面提交时省下的一整天。对经常做微生物组的小组来说这套模板值得沉淀下来反复用下一个项目会轻松很多。最后分享一个实际用到的小技巧提交完成之后把 PRJNA、SAMN、SRR 号和对应的样品名整理成一张对照表存进项目文件夹同时抄送一份到课题组的知识库。两三年后有人问当年那个对照组的数据在哪你打开这张表就能答上来不用再翻邮件和移动硬盘。这一步花不了几分钟但真能救命。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进