news 2026/10/1 12:12:24

16S rRNA测序数据NCBI SRA存缴:BioProject到Run全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
16S rRNA测序数据NCBI SRA存缴:BioProject到Run全流程

做微生物组的人,多半都经历过这么一幕:投稿返修意见里躺着一句话——"原始测序数据需在接收前完成公共数据库存缴并提供登录号",你打开文件夹看着那几十上百个压缩包,心里第一反应是从哪下手。NCBI 这个名字谁都听过,但真到自己动手把16S rRNA 测序数据传上去的时候,BioProject、BioSample、SRA 三个缩写往那儿一摆,大多数人还是会卡住。我第一次做这件事时,光是搞明白"该先建哪个号"就折腾了一下午,中间还因为一个属性名里带了空格被系统打回两次。

这篇东西就是把我这几年的踩坑经验、以及帮师弟师妹处理过的几十次提交攒在一起,写成一份可以照着抄的流程。它适合三类人:第一次要独立完成数据存缴的研一新生、被期刊催着交登录号的毕业年级同学、以及想搞明白 NCBI 这套体系到底怎么运转的交叉学科研究者。读完之后你至少能做到两件事——知道 BioProject、BioSample、SRA 各自管什么,以及能在半天内把一批 16S 扩增子原始数据完整提交上去,拿到可以直接写进 Data Availability Statement 的登录号。

1. 上传前的整体思路拆解:16S rRNA 数据到底该往哪存

1.1 BioProject、BioSample、SRA 三者的分工与从属关系

我习惯把 NCBI 这套体系比作一家物流公司。BioProject是运单上的"项目编号",它不装货,只声明"有这么一批货,是我这个课题组为了回答某个科学问题而采集的",比如"某地农田土壤微生物群落随施肥梯度的变化研究"。BioSample是每一件货的"身份证",描述的是单个样品本身的属性——它从哪来、什么时候采的、什么基质、宿主是谁。SRA则是真正的仓库,存放测序仪吐出来的原始 reads 文件。

真正跑起来的时候,它们之间的关系是这样的:一个 BioProject 下面挂若干个 BioSample,若干个 BioSample 又关联到 SRA 里的 Run。而 SRA 内部还有一层命名体系,初学者最容易晕:SRP 是 Study(一次提交形成的项目组)、SRS 对应 BioSample、SRX 是 Experiment(描述文库构建方式)、SRR 才是最终的那个 Run(一对 FASTQ 文件)。实际写作时你只需要把PRJNA(BioProject 号)、SAMN(BioSample 号)、SRR(Run 号)三个写进文章就够了,其余的交给系统自动生成。

层级编号前缀描述对象谁需要填
BioProjectPRJNA / PRJEB课题整体填标题、摘要、资助信息
BioSampleSAMN / SAMEA单个样品填采集地、时间、来源等属性
SRA StudySRP一次提交的集合系统自动生成
SRA ExperimentSRX文库构建与测序方式在 SRA 元数据表里填
SRA RunSRR一对 FASTQ 文件文件上传后自动分配

理解这张表的意义在于:你后面填的所有表格,本质上都是在回答"这件事属于哪个项目""这个样品是什么""这个样品是怎么测的"这三个问题。想清楚这三层,后面的操作就只是把信息往格子里搬。

1.2 哪些内容该传 SRA,哪些内容另作处理

这是新手最容易搞混的地方。SRA 要的是最原始的 FASTQ,也就是测序仪下机之后、没有做过任何接头去除和质控过滤的原始文件。很多人会把已经用 fastp 或 Trimmomatic 处理过的 clean reads 交上去,结果在 design_description 里没写清楚,审稿人一看 read 长度整齐得不自然,就会追问原始数据在哪。

我的建议是:原始 FASTQ 传 SRA,这是硬性要求;而拼接后的 contig、OTU/ASV 代表序列、物种注释表、丰度矩阵这些衍生结果,不需要传 SRA。如果期刊要求提供可复现的衍生数据,可以走 GenBank 的 TSA(Transcriptome Shotgun Assembly)通道提交组装序列,或者干脆打包扔到 Zenodo、Figshare 这类带 DOI 的通用仓库,在文章里给个链接。注意这是基于常见实践的补充做法,具体还得看目标期刊的数据政策。

还有一类东西是绝对不能漏的——引物和测序区域信息。16S 扩增子研究里,V3-V4、V4、V4-V5 这几个区域的结果根本没法直接横向比较,所以必须在设计描述里写明引物序列和扩增区域,这是同行复现的前提。

1.3 时间节点与权限规划:别等到投稿当天才动手

NCBI 的审核不是实时的,BioSample 批量提交有时会因为一个属性格式问题反复打回,SRA 文件上传几十个 G 也可能中途断掉。我一般建议在投稿前两到三周就开始做这件事,留出至少一周的缓冲。

关于释放时间(Release Date),这里有个非常实用的机制:你可以在提交时把释放日期设成"文章发表时"或者一个未来的具体日期,这样数据在审稿期间处于私有状态,只有你和合作者能看到。SRA 的 hold 期限通常允许设到提交后几年,但如果文章一直没发,到期前系统会提醒你。文章见刊后,记得回去把释放日期改成即时释放,否则审稿人或者读者点进去会看到一个空页面。

权限方面,Owner(所有者)和 Submitter(提交者)是两个角色。Owner 通常是 PI 的账号,拥有最终的删除和转移权限;Submitter 可以是干活的学生,能填表、能上传,但不能删项目。我强烈建议用一个课题组长期有效的公共邮箱注册 Owner 账号,别用某个已经毕业的师兄的个人邮箱——我见过不止一个课题组因为账号所有人毕业失联,导致后续要更新数据时无人有权操作,最后只能发邮件求 NCBI 帮忙。

2. 核心细节解析:元数据与文件格式的硬性要求

2.1 账号注册与提交者角色的配置

NCBI 账号注册本身没什么门槛,填邮箱、设密码、收验证邮件即可。但有两个细节值得提前处理:一是绑定 ORCID,绑上之后你提交的所有数据都会自动关联到你的学术身份,以后要统计"我这辈子交了多少条数据"时非常方便;二是提前添加 Submitter,如果你的账号是 Owner,可以在账号设置里把同组同学的邮箱加进来,让他们用各自账号登录后提交到你的项目下,这样责任到人也方便追溯。

有个小坑:NCBI 现在对密码强度要求不低,而且长时间不登录会要求重置。我吃过一次亏——投稿周正忙着改论文,登录时被要求重置密码,重置邮件又在垃圾箱里躺了半天。所以提交前一周先登录一次确认账号能用,这个动作花不了一分钟,但能省掉一小时的焦虑。

2.2 BioSample 必填属性的逐条拆解

BioSample 是整条链路上最容易出错的一环,因为它涉及的是"语义"而不是"格式"。16S 扩增子样品通常用Microbe这个包(Package),里面会根据你选的样品类型(环境样品、宿主相关样品等)显示不同的必填项。

几个几乎必然会用到的字段:

  • organism:这是必填项。做 16S 的人常常不知道具体是什么菌,这里可以填uncultured bacterium或者metagenome,这是业内的常规做法,不用担心被拒。
  • collection_date:必须用 ISO 8601 格式,写成2023-06-15或者2023-06,甚至只写2023也行,但不能写2023年6月,更不能写中文。
  • geo_loc_name:格式是"国家: 省/州, 城市",冒号后面有空格,逗号后面也有空格,这个格式卡得很死。跨国合作的样品要按实际采集地填。
  • isolation_source:来源描述,比如paddy soil、rhizosphere soil、human gut,尽量用规范的英文短描述。
  • host(宿主相关样品必填):写上宿主的学名或通用名,比如Oryza sativa。

缺失值的写法是重中之重。NCBI 只认那几个标准词:missing、not collected、not applicable、not provided、restricted access。很多人习惯填unknown或者NA,然后被系统打回。我的做法是:只要这个字段我在采样时确实没记,就写not collected;如果这个概念对这项研究根本不成立,就写not applicable。还有一点,属性名和属性值里出现中文、空格、特殊符号(除下划线)都可能导致解析失败,sample_name 建议只用字母、数字、下划线和连字符。

2.3 FASTQ 文件的命名、压缩与完整性校验

文件名混乱是上传阶段最浪费时间的坑。SRA 的网页端上传器对文件名没有强制规则,但如果你要写脚本或者后期用 Run Selector 匹配,规范命名会让你省下大量力气。我习惯的命名格式是:

StudyID_SampleID_S1_L001_R1_001.fastq.gz StudyID_SampleID_S1_L001_R2_001.fastq.gz

其中 R1/R2 明确标识双端方向,S1 是样品在 lane 中的编号,这些都和你的 sample_name 一一对应。压缩必须用 gzip,不要用 zip 或 rar,也不能传未压缩的 FASTQ——几百兆一个的文件未压缩会膨胀好几倍,上传时间翻番。

上传之前一定要做两件事。第一件是生成 MD5 校验值并留档。Linux/macOS 下一行命令搞定:

md5sum *.fastq.gz > md5_checksums.txt

Windows 用户可以用系统自带的工具逐个算:

certutil -hashfile sampleA_R1.fastq.gz MD5

第二件是确认双端文件完整且配对。同一对 R1/R2 的 read 条数必须完全一致,否则测序过程中可能丢过 read。用 seqkit 检查最省事:

seqkit stats *.fastq.gz

输出里会列出每个文件的 reads 数和碱基数,扫一眼 R1/R2 的 reads 列是否相等即可。如果差距在万分之几以内,通常是正常的;如果差了几十万条,那就要回去找测序公司要原始数据了。

3. 实操过程:从 BioProject 到 SRA Run 的完整链路

3.1 创建 BioProject:把课题的"户口"先立起来

打开 NCBI 的提交门户,选择 BioProject 那一项,登录后依次填:项目标题(Title)、公开描述(Public Description)、项目类型(一般选Genome sequencing或Metagenome相关)、资助信息(Funding,有基金号就填)、以及是否已有相关数据。

标题建议写成一句完整的英文陈述,比如16S rRNA amplicon sequencing of rhizosphere soil across a long-term fertilization gradient,别只写Soil bacteria这种太泛的词。公开描述可以稍微展开两三句,说明采样设计、样品数量、研究目的,这段话将来会公开可见,写得清楚一点对数据被引用很有帮助。

保存之后系统会立刻分配一个PRJNA 开头的编号。这个号就相当于你的项目主键,后面 BioSample 和 SRA 都会挂到它下面。如果这是一个大的研究方向下的一小批数据,你还可以把它挂到一个已有的 Umbrella BioProject 下,方便统一管理。

3.2 批量创建 BioSample:模板下载与填写

BioSample 支持两种提交方式:网页单条填和批量模板。样品超过十个,一律走批量。

流程是:在 BioSample 提交页面选择Batch submission,下载 TSV 或 Excel 模板。模板里会有几列是固定列——*sample_name、*organism、*package之类,带星号的是必填;后面是你可以自由添加的属性列。我实际操作时的顺序是这样的:先把所有样品的 sample_name 在 Excel 里列好(这一列必须唯一,不能重复),然后逐个补 attribute 列。

填写时有几个经验点:

一是sample_name 不要用纯序号(比如 1、2、3),因为将来在 SRA 里会生成一个自动的 Sample Name,两者容易混淆。我习惯用SiteA_Rep1、SiteA_Rep2这种带语义的格式。

二是同一批样品尽量保持属性列一致。如果十个样品填了 geo_loc_name,另外十个没填,系统会分开处理,甚至报错。宁可整批都写not collected,也不要一列填一半。

三是填完之后自己先做一遍"翻译检查":把表格里的每一列读一遍,问自己"如果我是完全不认识这个课题的人,看着这一行能不能复现这个样品?"这个自检动作能筛掉八成将来审稿人可能会问的问题。

上传模板后,系统会跑一次校验,颜色标出必填缺失、格式错误、重复 sample_name 等问题。改完重新上传,直到没有红色报错,点提交。审核通过后每个样品会拿到一个SAMN 开头的编号,记得把这份对应关系表单独存一份,后面写文章和填 SRA 表格都要用。

3.3 SRA 元数据表填写:一行一个 Run

这一步是整个流程的核心。进入 SRA Submission Portal,先选 Submitter(联系人),再填 General Info(选已有的 BioProject,设置 Release Date),然后关联 BioSample——如果刚才已经建好了,就直接用 SAMN 号关联,不用重复建。

接下来是最重要的那张元数据表。它的逻辑是"一行对应一个 Run",而 16S 双端测序的一对 R1/R2 属于同一个 Run,所以一行就够,不要拆成两行。表里需要填的关键字段我整理成下面这张对照表:

字段16S 扩增子的常见填法说明
library_ID与 sample_name 对应唯一标识
title简短描述可选但建议填
library_strategyAMPLICON扩增子测序固定值
library_sourceGENOMIC16S 从基因组 DNA 扩增
library_selectionPCR经过 PCR 富集
library_layoutPAIRED / SINGLE双端还是单端
platformILLUMINA视测序平台而定
instrument_modelIllumina MiSeq 等必须与实际上机型号一致
design_description引物序列 + 扩增区域例如 V3-V4,341F/806R
filetypefastq固定值

design_description这一栏千万别偷懒。写清楚"16S rRNA gene V3-V4 region, primers 341F (CCTACGGGNGGCWGCAG) / 806R (GACTACHVGGGTATCTAATCC)",这既是对同行的尊重,也是将来数据能被正确整合进 meta 分析的前提。

填完表保存,系统会自动解析,把一行行拆成 SRX 和 SRR 的对应关系。如果某一行必填项为空,会当场标红。

3.4 文件上传、校验与最终提交

元数据通过之后进入 Files 环节。小批量(几十 G 以内)可以直接用网页上传器,把文件和刚才生成的 MD5 一起拖进去;数据量大或者网络条件一般,建议用命令行客户端传到指定目录,这个方式支持断点续传,夜里挂机跑最省事。

上传完成后系统会逐个校验 MD5,全绿才允许提交。这一步失败最常见的原因是上传过程中文件被压缩软件重新编码过——比如有人上传前用压缩工具"优化"了一遍 gz 文件,MD5 就变了。所以文件一旦算好 MD5,就不要再动它。

提交后进入审核,通常几个工作日内完成。审核通过后你会拿到SRR 开头的 Run 号,这时可以在 SRA Run Selector 里按 BioProject 号检索,确认所有 Run 都齐了、样品名和元数据对应正确。我习惯最后再做一次"下载验证":用 SRA Toolkit 随便拉一个 Run 下来,检查 read 数和本地原始文件是否一致,确认无误再放心去写文章的 Data Availability。

4. 常见问题与排查技巧实录

4.1 元数据被打回的典型原因速查

下面这张表是我这些年实际遇到过的报错,按出现频率排序,基本能覆盖九成情况。

报错现象根本原因处理方式
属性值解析失败值里含中文、空格或特殊符号改英文,用下划线代替空格
日期格式错误写成 2023/6/15 或中文日期改成 2023-06-15 或 2023-06
缺失值不识别填了 unknown、NA、空改用 not collected 等标准词
sample_name 重复批量表里有两个同名行加序号或站点前缀去重
geo_loc_name 格式异常缺冒号或逗号后没空格严格按"国家: 省, 城市"写
organism 未填做 16S 不确定物种就留空了填 uncultured bacterium

我踩过最冤的一次,是在 attribute 名里用了大写字母加空格,比如Collection Date。系统表面接受了,提交后却被打回,理由含糊。后来改成全小写加下划线就一次过了。所以现在我的原则很简单:所有属性名一律小写、下划线分隔、不带空格。

4.2 文件上传与校验失败的排查思路

校验不通过时,先别急着重传整个批次。按这个顺序排查效率最高:先本地重新算一次 MD5,和系统显示的对比,确认是文件本身变了还是传输过程出错;再看文件大小是否和本地一致,差了几 MB 通常是传输中断;最后确认压缩格式是不是 gzip,.zip 和 .gz 是两回事。

如果确定要对某个文件重传,注意不要改文件名,因为元数据表里已经绑定了对应的 library_ID,改名会导致重新匹配。我一般会在本地建一个"上传用"文件夹,算完 MD5 之后就不再去动里面任何文件,这个习惯帮我省了至少三次返工。

还有一个容易被忽略的点:上传前把 R1/R2 顺序对应好。看起来是废话,但样品一多,Excel 里排序之后 R1 和 R2 错位是常事。上传完做一次 read 数比对,能提前发现这个错误。

4.3 提交之后要改数据怎么办

先说结论:能一次做对最好,因为事后修改很麻烦。

元数据在正式释放之前,还有一定调整空间,可以通过提交门户的 Update 功能补充,或者联系 NCBI 的工作人员协助处理。但如果 Run 已经公开,想要删除就必须走撤稿流程,而且accession 号会保留在系统里,只是标记为撤回状态——也就是说,一个错误的 SRR 号会永远挂在那里,将来别人检索时还能看到。

所以我的建议是:数据一旦提交,先别急着释放,把 Release Date 设到文章接收之后。利用这段私有期,自己完整走一遍"从 SRR 号下载数据、跑一遍标准分析流程"的验证,确认无误再定稿。这个动作花半天,但能避免一次不可逆的错误。

另外,如果后来你又补测了一批样品,想加到同一个 BioProject 下,是完全允许的,只要用同一个 PRJNA 号新建 BioSample 和新的 Run 即可,不用重新立项目。

4.4 与论文发表的时间线配合

审稿人问数据登录号的时候,你要给出的是已经提交、已经分配了 accession、但可以处于私有状态的记录。所以时间线上的正确做法是:投稿前完成提交并设置好 Release Date,投稿时在 Cover Letter 或数据可用性声明里写明"数据已提交至 NCBI SRA,登录号 PRJNAxxxxxx,将于文章发表时公开"。这句话是所有期刊都认的标准写法。

文章接收后,记得做两件事:把 Release Date 改成即时公开,以及在最终版里把完整的登录号列表补进 Data Availability Statement。如果样品特别多,写清楚"BioProject: PRJNAxxxxxx,包含 xx 个 BioSample 和 xx 个 Run"就够了,不用把所有 SAMN 号罗列出来。

最后分享一个我自己的小习惯:每次提交完,我会把 BioProject 号、BioSample 与样品名的对应表、SRA 元数据表、MD5 文件、以及这次提交的日期,打包成一个"数据存缴存档"文件夹单独存放。两年后师弟接手这个课题要补数据,或者审稿人三年后追问细节,打开这个文件夹所有信息都在,不用再登录网站一个个翻。这个文件夹我建议直接放进课题组的共享盘,比记在某个人的电脑里靠谱得多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 12:12:22

算法岗CV面试高频题:从卷积原理到目标检测与训练策略

最近半年集中准备算法岗面试,我把计算机视觉相关的八股题按自己的理解重新整理了一遍,笔记标题标了“自用”,其实也是为了提醒自己:这些题不能只背结论,得能徒手推导、能讲出直觉。整理完以后有个很明显的感受——真正…

作者头像 李华
网站建设 2026/10/1 12:11:10

页岩气水平压裂井产能评估:核心流程与关键参数解析

干页岩气开发这些年,我几乎每周都要回答同一个问题:这口井到底能出多少气?领导问、投资方问、连钻井队的人都爱问。可真正落到产能评估的时候,很多人手里的PPT还停在“邻井类比”和“地质甜点打勾”的初级阶段。页岩气藏水平压裂井…

作者头像 李华
网站建设 2026/10/1 12:10:45

OSCP备考资料实战指南:从信息收集到提权的渗透测试训练路线

简介:这份资源面向渗透测试初学者与 OSCP 备考人员,系统整理了从信息收集到提权利用的通用测试方法与技巧,覆盖渗透测试全生命周期,可用于日常知识查询、靶机练习与考前查漏补缺。压缩包共 119 个文件,约 5.87MB&#…

作者头像 李华
网站建设 2026/10/1 12:09:24

拓氪科技:技术+资源双驱动的AI获客服务商,企业选型的重要参考

2026年,AI大模型深度渗透流量分发链路,企业线上增长逻辑发生根本性变化。AI原生流量成为品牌获取曝光、挖掘潜在客户的重要渠道,但市场泥沙俱下,概念炒作、虚标效果、资源外包转售等乱象频发。不少企业采购方投入预算之后&#xf…

作者头像 李华
网站建设 2026/10/1 12:08:53

C++代码复杂性分析:从圈复杂度到算法实战与工程治理

1. 从“一坨看不懂的代码”说起:复杂性到底复杂在哪如果你也是写C的,大概率经历过这么一幕:接手一个跑了七八年的老模块,打开某个.cpp文件,屏幕上一千多行密密麻麻全是函数,每个函数又塞了各种判断、全局变…

作者头像 李华
网站建设 2026/10/1 12:08:37

协程深度解析:从调度原理到Python/Kotlin/C++实战对比

1. 协程到底解决什么问题先聊一个基础问题:为什么我们需要协程?如果只是想写并行程序,线程不是已经用得好好的吗?这就得从操作系统线程的时间片分发机制谈起。线程是由操作系统内核负责调度的,内核为了管理线程&#x…

作者头像 李华