2. 生物信息数据对象与文件格式

生物信息工作流工程的第一道工程约束,不是算法,而是数据对象与文件格式。一个流程能否被稳定复现,很大程度上取决于我们是否清楚每个环节“吃进去什么、吐出来什么、这些文件里到底存了什么语义”。本节围绕测序分析中最常见的六类格式展开:FASTQ、FASTA、SAM/BAM、VCF、BED、GFF/GTF,重点讲清它们的结构、语义边界,以及它们在工作流中的流转位置。

一、从原始信号到序列记录:FASTQ 与 FASTA

FASTQ 是测序仪下机数据的事实标准,每条记录固定四行:以 @ 开头的序列标识行、碱基序列行、以 + 开头的分隔行、以及与该序列等长的质量值行。质量值采用 Phred 编码,常见 Sanger 编码下 ASCII 33 对应 Q0,ASCII 74 对应 Q41。质量值不是装饰,它直接决定后续比对时允许的错配、变异检出时的过滤阈值,以及是否需要对末端低质量碱基做修剪。

@SRR1234567.1 1/1
GATCGGAAGAGCACACGTCTGAACTCCAGTCAC
+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

FASTA 则只保留序列本身,用 > 开头标识行加序列行表示,没有质量信息。它通常出现在两个位置:一是参考基因组、转录组等“静态资源”,二是比对后由 BAM 还原出的共识序列或组装结果。因此 FASTQ 与 FASTA 的关键区别不是“谁更高级”,而是是否携带逐碱基质量。工作流中,FASTQ 是输入侧对象,FASTA 既可能是输入侧参考,也可能是输出侧结果。

二、比对结果的容器:SAM 与 BAM

比对之后,reads 与参考序列的对应关系被写入 SAM 格式。SAM 由头部注释行(@HD、@SQ、@RG、@PG)和比对记录行组成。每条记录至少 11 个必选字段:QNAME、FLAG、RNAME、POS、MAPQ、CIGAR、RNEXT、PNEXT、TLEN、SEQ、QUAL。其中 FLAG 是位标记,例如 0x4 表示该 read 未比对成功,0x10 表示反向链;CIGAR 描述比对操作,如 100M 表示 100 个碱基完全匹配,50M2I48M 表示中间有 2 个碱基插入。

BAM 是 SAM 的二进制压缩版本,通常配合 .bai 索引使用。索引的意义在于支持按基因组区间随机访问,而不是每次从文件头顺序扫描。工作流中,SAM/BAM 是“比对层”的核心对象:上游接 FASTQ 与参考 FASTA,下游被变异检出、定量、可视化等模块消费。需要特别注意的是,BAM 中保存的是比对位置与比对状态,它并不直接告诉你“这个位点是不是变异”,那是 VCF 的职责。

三、变异与区间:VCF、BED、GFF/GTF

VCF 描述变异位点。它由头部元信息行(##)和表头行(#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT)以及数据行组成。数据行中,REF 与 ALT 共同定义等位基因,INFO 存放位点级注释,FORMAT 与后续样本列存放基因型、深度、等位基因深度等。VCF 的语义核心是“相对于参考基因组的差异”,因此它必须与参考版本严格对应,否则坐标和等位基因都会错位。

BED 与 GFF/GTF 都描述区间,但语义不同。BED 是 0-based、半开区间,最简三列 chrom start end,常用于定义目标区域、捕获区间、可分析区域。GFF/GTF 是 1-based、闭区间,包含 seqid source type start end score strand phase attributes 九列,用于描述基因、转录本、外显子等层级结构。两者坐标约定不同,混用时必须显式转换,否则会出现一个碱基的系统偏移。

格式坐标约定核心语义典型工作流位置
FASTQ无坐标带质量的原始 reads输入
FASTA无坐标参考序列或共识序列输入/输出
SAM/BAM1-basedreads 与参考的比对比对层
VCF1-based相对参考的变异变异层
BED0-based 半开基因组区间集合区间控制
GFF/GTF1-based 闭基因结构注释注释层

四、格式在工作流中的流转关系

把这些格式放回一条典型重测序流程,可以看到清晰的层级:FASTQ 经比对生成 SAM/BAM,BAM 经变异检出生成 VCF,VCF 再结合 BED 限定的目标区间和 GFF/GTF 提供的基因结构进行注释与筛选。参考 FASTA 贯穿始终,是比对和变异检出的坐标基准。下面这张图用数据流的方式表达这一流转关系,并标出各格式之间的转换动作。

生物信息数据对象在工作流中的流转 FASTQ reads + 质量值 FASTA 参考序列 SAM / BAM 比对记录 + 索引 VCF 变异位点 BED 目标区间 GFF / GTF 基因结构注释 比对 参考索引 变异检出 区间限定 功能注释 坐标约定:SAM/BAM/VCF/GFF/GTF 为 1-based;BED 为 0-based 半开区间。 参考 FASTA 是比对与变异检出的坐标基准,版本必须与 VCF 头部一致。

五、工程实践中的关键检查点

格式本身不难,难的是在流程中保持语义一致。以下检查点建议在流程设计阶段就固定下来:

  • 参考版本一致性:VCF 头部 ##reference 与比对所用 FASTA 必须一致,否则坐标和 REF 碱基都可能对不上。
  • 坐标转换显式化:BED 与 GFF/GTF 混用时,先统一到同一坐标系,再进入区间运算,避免一个碱基偏移。
  • 索引与排序:BAM 需 samtools sort 后建 .bai,VCF 需 bgzip 加 tabix,否则区间查询会退化为全文件扫描。
  • 质量值编码:确认 FASTQ 是 Phred+33 还是 Phred+64,错误假设会系统性偏移所有质量阈值。
  • FLAG 与 CIGAR 校验:统计未比对、次要比对、软剪切比例,判断比对质量是否满足下游变异检出要求。
一个实用习惯:在流程入口处对每个输入文件做一次“格式体检”——用 head 看头部、用 samtools quickcheck 验 BAM 完整性、用 bcftools view -h 看 VCF 头部参考版本。这一步通常比事后排查坐标错位便宜得多。

理解这些格式,本质上是在理解工作流中“数据对象如何被定义、被约束、被传递”。FASTQ 定义原始观测,FASTA 定义坐标基准,SAM/BAM 定义比对关系,VCF 定义差异,BED 与 GFF/GTF 定义区间与结构语义。只有把这些对象的边界和流转关系固定下来,后续的流程编排、并行化和结果复现才有稳定的基础。