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/BAM | 1-based | reads 与参考的比对 | 比对层 |
| VCF | 1-based | 相对参考的变异 | 变异层 |
| BED | 0-based 半开 | 基因组区间集合 | 区间控制 |
| GFF/GTF | 1-based 闭 | 基因结构注释 | 注释层 |
四、格式在工作流中的流转关系
把这些格式放回一条典型重测序流程,可以看到清晰的层级:FASTQ 经比对生成 SAM/BAM,BAM 经变异检出生成 VCF,VCF 再结合 BED 限定的目标区间和 GFF/GTF 提供的基因结构进行注释与筛选。参考 FASTA 贯穿始终,是比对和变异检出的坐标基准。下面这张图用数据流的方式表达这一流转关系,并标出各格式之间的转换动作。
五、工程实践中的关键检查点
格式本身不难,难的是在流程中保持语义一致。以下检查点建议在流程设计阶段就固定下来:
- 参考版本一致性: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 定义区间与结构语义。只有把这些对象的边界和流转关系固定下来,后续的流程编排、并行化和结果复现才有稳定的基础。