参考基因组、坐标系统与注释
这页想回答的是:为什么同一份测序数据,只有先放进某个参考背景、再配上正确的注释对象,后面的比对、定量、变异解释和数据库映射才真正有意义。
- 参考基因组提供的是共同坐标框架,不等于"真实基因组的完整代表"。
- 坐标系统和注释对象决定了你看到的位置、feature 和结果解释是否处在同一个语义层。
参考基因组是很多生物信息学流程默认的"共同坐标系"。
当我们说一个 read 被比到哪里、一个变异发生在哪个位置、一个 exon 覆盖了哪个区间时,本质上都在使用这套参考背景。
但只有参考序列还不够。真正让这些坐标变得可解释的,还包括:
- 坐标系统:定义区间从哪里开始、到哪里结束;
- 注释文件:把坐标区间进一步标记为 gene、transcript、exon、CDS 等对象;
- 命名与版本背景:决定不同文件、数据库和流程是否能放到同一坐标系里理解。
因此,这页关注的不是单个文件格式,而是三者合起来如何构成分析的解释框架。
很多实际问题并不是算法不会,而是参考系统没对齐:
- 参考基因组版本和注释版本不匹配;
- 0-based / 1-based 坐标系统混淆;
- 某个结果使用了
chr1,另一个文件使用了1; - 同一基因在不同数据库对象里的标识无法正确对应;
- 把定位结果、feature 定义和下游数据库解释放在了不同背景上。
只要这层基础没有先理清,后面的比对、定量、variant calling 和功能解释都可能建立在错误坐标系上。
它是一个被选定的序列框架,方便我们把 reads、变异、注释和功能信息放到统一背景下理解。
它解决的问题是:
- 序列应该对齐到哪里;
- 结果应该在什么坐标系里表达;
- 不同样本之间如何共享同一套位置描述。
但它并不等于某个个体或群体的"完整真实基因组"。它更像分析时共同使用的一张底图。
坐标系统决定"某个区间到底从哪里开始、到哪里结束"。在参考基因组与注释的语境下,除了 0-based / 1-based 和区间开闭的差异外,还需要注意染色体命名(chr1 vs 1)以及不同文件类型对同一区间的解释方式。这些差异看起来很小,但对位点级分析来说,一个位置的偏移就足以改变全部解释。坐标系统的详细说明与 worked example 见序列、字符串与坐标系统。
注释告诉我们:在参考坐标上的不同区域分别对应什么生物学对象。
它把"位置"进一步变成:
- 哪些区域对应 gene;
- 哪些属于 transcript;
- 哪些是 exon、intron、CDS;
- 某个变异或覆盖区域可能影响哪些对象。
没有注释,很多比对、定量和变异结果只能停留在"坐标层",很难进入真正的生物学解释层。
一个 GTF 行长什么样
Section titled “一个 GTF 行长什么样”以 GENCODE 注释中 BRCA1 基因为例:
chr17 GENCODE exon 43044295 43044695 . - . gene_id "ENSG00000012048"; transcript_id "ENST00000357654"; exon_number "1"; gene_name "BRCA1";逐字段解读:
chr17:染色体GENCODE:注释来源exon:特征类型43044295–43044695:坐标区间(1-based,闭区间)-:负链gene_id / transcript_id / exon_number:属性键值对
坐标转换示例:如果 BED 文件使用 0-based 半开区间,同一段 exon 写作 chr17 43044294 43044695(start 减 1,end 不变)。
三者是如何一起工作的
Section titled “三者是如何一起工作的”| 维度 | 它解决什么问题 | 典型表现 |
|---|---|---|
| 参考基因组 | 给所有 reads、变异和 feature 提供统一坐标框架 | FASTA、assembly 版本、参考序列长度和 contig 集合 |
| 坐标系统 | 规定区间如何表示、命名和比较 | 0-based / 1-based、chr1 vs 1、区间边界约定 |
| 注释文件 | 把坐标区间映射到 gene / transcript / exon 等对象 | GTF/GFF、annotation release、feature 属性字段 |
三者缺一不可:
- 没有参考基因组,你没有统一坐标框架;
- 没有坐标系统约定,你无法稳定比较不同文件里的区间;
- 没有注释,你只能看到位置,无法知道这些位置对应什么对象。
在流程中它们通常如何出现
Section titled “在流程中它们通常如何出现”准备参考背景
加载注释对象
生成定位结果
接入任务语义
实践中先检查什么
Section titled “实践中先检查什么”如果你拿到一套 BAM、VCF、GTF 或数据库结果,通常先检查下面几件事:
- 参考版本是否一致
- FASTA、BAM header、VCF header、注释文件和数据库说明是否指向同一 assembly。
- 染色体命名是否兼容
- 是
chr1还是1,是否存在不同 contig 集合。
- 是
- 坐标约定是否一致
- 特别是区间类文件和工具之间的 0-based / 1-based 差异。
- 注释对象是否匹配当前问题
- 你是要看 gene、transcript、exon 还是 CDS?
- 数据库对象是否接得上
- 结果里的坐标或 ID 能否正确映射到当前注释与数据库版本。
这些检查通常比"先跑下游命令"更重要,因为它们决定了后面的结果到底能不能解释。
假设你在 RNA-seq 中拿到下面这些文件:
- 参考序列
genome.fa - 注释文件
genes.gtf - 比对结果
sample.bam - 下游表达定量结果
counts.tsv
如果你发现:
sample.bam使用的是某套参考版本;genes.gtf来自另一版本的注释;- 某些染色体命名写法也不一致;
那么即使比对程序和计数程序都能运行,结果也可能出现:
- feature 对不上;
- 某些 reads 无法被正确归到目标 gene / transcript;
- counts 的解释和数据库查询结果彼此不一致。
这说明参考、坐标系统和注释并不是"前期准备工作",而是整个分析解释链条的核心约束。