第四节:SRA数据库命名规则——Run编号与样本前缀

SRA,全称Sequence Read Archive,是NCBI下面最大的高通量测序数据仓库。你想想看,全球每天有多少课题组往里面提交数据?如果命名没个规矩,那检索起来简直就是噩梦。

我记得刚入行那会儿,有一次从SRA下载了一批RNA-seq数据,跑完定量一看,样本标签全乱了。后来才发现,我把Run编号和样本前缀搞混了。嗯,从那以后,我花了一整天把SRA的命名体系摸了个透。今天就把这些经验掰开揉碎了讲给你。

4.1 Run编号:SRA数据的最小单元

说白了,SRA的Run编号就是每条测序文库的唯一标识符。格式很简单:SRR + 数字。举个例子:

SRR12345678

前三个字母代表提交者类别,后面8位数字按顺序分配。我整理了一下常见的字母前缀:

前缀 含义 典型来源
SRR SRA Run 标准实验提交
ERR ENA Run 欧洲数据库提交
DRR DDBJ Run 日本数据库提交
SRX SRA Experiment 实验描述单元
SRS SRA Sample 样本生物实体
SRP SRA Study 研究项目

这里有个坑。很多人以为SRR和SRX能混用,其实完全不是一回事。SRR指向具体的测序数据文件,而SRX指向实验设计——包括文库构建、测序平台、试剂这些元数据。我在项目里见过有人拿SRX编号去下载FASTQ,结果空手而归。你记住了,下载数据用SRR,查实验信息用SRX。

4.2 样本前缀:看懂命名中的生物学含义

SRA的命名体系里藏着一条层级链:

Study → Sample → Experiment → Run

每个层级都有自己的前缀。我画了个结构图,帮你一次性理清楚:

SRA层级命名结构 Study (SRP) SRP123456 Sample (SRS) SRS654321 Experiment (SRX) SRX987654 Run (SRR) SRR1357924 层级关系说明 一个Study包含多个Sample 一个Sample有多个Experiment 一个Experiment产生多个Run 一个Run对应一条FASTQ (或一对FASTQ,双端) 下载数据只看SRR!

你看,从SRP到SRR,层层递进。每个Run都挂在一个Experiment下面,每个Experiment都对应一个Sample。明白了这个结构,你就能精准定位数据来源。

4.3 不同提交者模式下的命名差异

SRA支持三种提交模式,命名规则略有不同:

  1. 标准提交:系统自动分配SRR编号,与原始文件名无关
  2. 批量提交:可以保留部分原始命名特征,但SRR前缀不变
  3. BioProject关联提交:SRR自动关联到对应的SRS和SRX

核心要点:不管哪种模式,SRR编号都是唯一下载入口。我的建议是,拿到数据后第一时间把SRR和原始样本名做一个映射表,后面做分析时才不会乱。

4.4 实战:从SRA查询中提取批次信息

SRA提供了多种查询接口。我个人最常用的是esearch和efetch组合,从命令行直接拉取:

esearch -db sra -query "SRP123456" | \
efetch -format runinfo | \
cut -d',' -f1,7,8,12 > sra_metadata.csv

这段命令会返回什么?我拆开给你看:

  • -db sra:指定SRA数据库
  • -query "SRP123456":按项目编号搜索
  • -format runinfo:输出CSV格式的运行信息
  • cut:提取第1、7、8、12列,分别是Run、Sample、Experiment和LibraryName

输出结果大概长这样:

Run,Sample,Experiment,LibraryName
SRR12345678,SRS111111,SRX222222,Brain_tissue_rep1
SRR12345679,SRS111111,SRX222223,Brain_tissue_rep2
SRR12345680,SRS111112,SRX222224,Liver_tissue_rep1

你看,同一行里的SRS编号相同,说明这两个Run来自同一个样本。这就是批次信息的核心线索。

小技巧:如果只想获取Run编号列表,用esearch -db sra -query "SRP123456" | efetch -format runinfo | cut -d',' -f1 | grep -v "Run"。一行命令搞定,省去了手动翻页的麻烦。

4.5 避坑指南:我曾经踩过的坑

写几个真实的教训,你碰到了能省不少时间:

  • 混淆SRR和SRX:用SRX去下载FASTQ,数据根本不存在。SRX只是实验描述,FASTQ只挂载在SRR下面。
  • 忽略SRS对样本的映射:同一SRS下的SRR如果来自不同Experiment,文库协议可能不同,合并时要小心。
  • 拿SRP当文件路径用:SRP只代表项目,不指向具体数据文件。下数据还是要靠SRR。

严重警告:千万不要手动修改SRA官方分配的SRR编号!我曾经见过有课题组为了"方便管理",把SRR12345改成了"sample1_R1"。结果一提交给审稿人,根本无法复现分析。SRA的编号就是数据的身份证,改了就作废。

4.6 逆向提取:从FASTQ文件名反推SRA编号

有时候你手里只有FASTQ文件,文件名叫得乱七八糟,怎么找到它在SRA里的原始信息?

我教一个土办法,但确实管用:

# 假设文件名是 sample1_R1.fastq.gz
# 先计算MD5
md5sum sample1_R1.fastq.gz

# 去SRA的MD5校验库搜索
# 也可以直接搜文件名中的关键词

如果文件名里直接包含了SRR编号,那就太省心了。例如:

SRR12345678_1.fastq.gz
SRR12345678_2.fastq.gz

这种命名是SRA官方下载工具的默认输出格式。_1和_2分别代表双端测序的两条文件。我建议你下载时保留这种命名习惯,后续处理能省掉很多麻烦。