2. 组学数据对象与格式
组学分析的可复现性,往往不是败在算法上,而是败在“数据对象”这一层。同一份 FASTQ 在不同流程里可能被比对成不同的 BAM;同一个 BAM 在不同注释版本下可能产出不同的表达矩阵;同一个 VCF 在不同参考基因组或不同过滤规则下可能得到完全不同的变异集合。要谈可复现,先要清楚每一类核心数据对象“是什么、承载什么信息、哪些字段或元数据决定了后续结果”。本节按数据在典型流程中的流转顺序,梳理 FASTQ、BAM、VCF、表达矩阵与甲基化矩阵五类对象,并指出各自最容易破坏复现性的关键点。
一、FASTQ:测序仪的直接产物
FASTQ 是测序仪下机后的原始读段文件,每条读段由四行组成:以 @ 开头的读段标识、碱基序列、以 + 开头的分隔行、以及对应的质量值字符串。质量值采用 Phred 编码,常见为 Phred+33,即字符 ASCII 码减 33 得到 Q 值,Q20 表示错误率 1%,Q30 表示 0.1%。
@A00123:45:HXXXX:1:1101:1000:1000 1:N:0:ACGT
GATCGGAAGAGCACACGTCTGAACTCCAGTCAC
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
FASTQ 的可复现挑战集中在三点。第一,读段标识中的仪器、流动槽、坐标信息在去重、配对和定量时可能被使用,若流程对标识做了改写,后续步骤可能无法对齐。第二,质量编码体系(Phred+33 与早期 Phred+64)若判断错误,会直接导致质控和过滤结果偏差。第三,单端与双端、读长、是否已去除接头,这些信息通常不在文件内显式声明,而依赖样本元数据记录。因此,一份可复现的 FASTQ 交付物至少应附带:样本编号、测序平台、读长、单双端、质量编码、接头序列、以及校验值(如 MD5)。
二、BAM:比对后的读段与比对信息
BAM 是 SAM 的二进制压缩形式,记录每条读段比对到参考基因组的位置、比对质量、CIGAR 字符串、配对信息以及可选标签。CIGAR 描述比对操作,例如 100M 表示 100 个碱基完全匹配,50M2I48M 表示中间有 2 个碱基插入。BAM 必须与参考基因组版本绑定,否则坐标无意义。
BAM 的可复现挑战主要来自“参考基因组 + 比对工具 + 排序去重”三者的组合。参考基因组需明确到具体版本,例如 GRCh38 的某次 patch 或无补丁版本,并记录是否包含 decoy 序列、线粒体序列命名方式(chrM 与 MT 不同)。比对工具(如 BWA-MEM、Bowtie2、STAR)及其版本、参数会显著影响比对率与剪接位点判定。排序与去重策略(如 Picard MarkDuplicates 与 samtools markdup)对重复读段的定义不同,直接影响后续变异检测和定量。可复现的 BAM 交付物应记录:参考基因组标识与校验值、比对命令与版本、排序方式、去重方法、以及索引文件。
三、VCF:变异位点及其基因型
VCF 以行为单位记录变异位点,包含 CHROM、POS、ID、REF、ALT、QUAL、FILTER、INFO 八列固定字段,以及 FORMAT 和样本列。INFO 中的 DP、AF、AC 等描述位点层面信息,FORMAT 中的 GT、AD、DP、GQ 描述每个样本的基因型与支持读段。
VCF 的可复现挑战最为隐蔽。第一,参考基因组版本决定 REF 碱基,版本不一致会导致位点错位。第二,变异检测工具(GATK HaplotypeCaller、DeepVariant、Strelka2)及其版本、模型、过滤参数不同,得到的变异集合差异明显。第三,多等位位点的表示方式、左对齐与归一化(如 bcftools norm)会改变 POS 与 REF/ALT 的写法,若不做统一,合并或比较时会出现“同一变异被当成两个”。第四,过滤规则(硬过滤阈值或 VQSR)必须记录,否则无法判断一个位点为何被保留或剔除。可复现的 VCF 交付物应包含:参考基因组、检测工具与版本、归一化步骤、过滤表达式、以及是否包含基因型与深度信息。
四、表达矩阵与甲基化矩阵:从比对结果到定量对象
表达矩阵通常以基因为行、样本为列,值为原始计数或标准化后的表达量。原始计数矩阵(count matrix)是定量工具(featureCounts、HTSeq、Salmon、kallisto)的直接输出,其可复现性依赖注释文件版本(如 GENCODE 某版本 GTF)、基因模型定义(是否合并重叠基因、是否计入多映射读段)以及定量层级(gene 还是 transcript)。标准化矩阵(TPM、FPKM、CPM)则额外依赖标准化公式与是否做批次校正,因此必须与原始计数一并保存。
甲基化矩阵常见两种形态:基于芯片的 β 值矩阵(每行一个 CpG 位点,每列一个样本,取值 0~1),以及基于测序的甲基化水平矩阵(每个区域或位点的甲基化比例,附带覆盖深度)。β 值的可复现挑战在于探针注释版本、背景校正与染料偏倚校正方法、以及是否过滤低质量探针;测序甲基化矩阵则依赖参考基因组、比对工具、甲基化提取工具(如 Bismark、bismark 的 --cytosine_report)以及覆盖深度阈值。无论哪种矩阵,都必须保留位点或基因的标识体系(探针 ID、基因 ID、染色体坐标)与样本元数据,否则矩阵无法与其它数据对齐。
五、把“对象”变成“可复现交付物”
从上面的梳理可以看到,五类数据对象各自携带不同的“可复现锚点”。FASTQ 锚定在测序与质量层面,BAM 锚定在参考与比对层面,VCF 锚定在检测与归一化层面,矩阵锚定在注释与标准化层面。一个常见的错误是只保存最终矩阵,而丢弃中间 BAM 或 VCF,导致无法回溯某个基因计数为何异常。更稳妥的做法是:对每一类对象,在流程中固定其生成命令、工具版本、参考文件校验值,并把它们写入流程配置或运行日志,而不是依赖分析者的记忆。
在实际项目中,可以用一份“数据对象清单”来约束交付。清单不必复杂,但应覆盖每个对象的来源、版本、校验值和生成命令。例如,对 BAM 记录参考基因组 FASTA 的 MD5、比对工具版本与命令行;对 VCF 记录归一化命令与过滤表达式;对表达矩阵记录 GTF 版本与定量工具参数。这样,当结果出现差异时,可以逐层比对锚点,快速定位是参考版本、注释版本还是参数设置导致的偏差。可复现不是要求所有分析都得到完全相同的数值,而是要求每一步的输入、工具与参数都被明确记录,使差异可解释、可追溯、可重放。