跳转到内容

参考基因组、坐标系统与注释

快速概览

这页想回答的是:为什么同一份测序数据,只有先放进某个参考背景、再配上正确的注释对象,后面的比对、定量、变异解释和数据库映射才真正有意义。

  • 参考基因组提供的是共同坐标框架,不等于"真实基因组的完整代表"。
  • 坐标系统和注释对象决定了你看到的位置、feature 和结果解释是否处在同一个语义层。
所属板块 基础与数学

对象层、坐标系统、coverage 与概率图模型的共同语言。

阅读目标 帮助建立阅读上下文

先判断这页与你当前问题的关系,再决定是否深入展开。

建议前置 先建立相关基础对象与方法直觉

建议先建立相关基础对象与方法直觉,再进入本页。

参考基因组是很多生物信息学流程默认的”共同坐标系”。

当我们说一个 read 被比到哪里、一个变异发生在哪个位置、一个 exon 覆盖了哪个区间时,本质上都在使用这套参考背景。

但只有参考序列还不够。真正让这些坐标变得可解释的,还包括:

  • 坐标系统:定义区间从哪里开始、到哪里结束;
  • 注释文件:把坐标区间进一步标记为 gene、transcript、exon、CDS 等对象;
  • 命名与版本背景:决定不同文件、数据库和流程是否能放到同一坐标系里理解。

因此,这页关注的不是单个文件格式,而是三者合起来如何构成分析的解释框架。

很多实际问题并不是算法不会,而是参考系统没对齐:

  • 参考基因组版本和注释版本不匹配;
  • 0-based / 1-based 坐标系统混淆;
  • 某个结果使用了 chr1,另一个文件使用了 1
  • 同一基因在不同数据库对象里的标识无法正确对应;
  • 把定位结果、feature 定义和下游数据库解释放在了不同背景上。

只要这层基础没有先理清,后面的比对、定量、variant calling 和功能解释都可能建立在错误坐标系上。

gene structure illustration
参考坐标上的 gene、transcript、exon、intron 和 UTR 结构,是 RNA-seq 定量、变异注释和功能解释的共同对象层。

它是一个被选定的序列框架,方便我们把 reads、变异、注释和功能信息放到统一背景下理解。

它解决的问题是:

  • 序列应该对齐到哪里;
  • 结果应该在什么坐标系里表达;
  • 不同样本之间如何共享同一套位置描述。

但它并不等于某个个体或群体的”完整真实基因组”。它更像分析时共同使用的一张底图。

坐标系统决定”某个区间到底从哪里开始、到哪里结束”。

这包括多个层面的约定:

  • 位置是 0-based 还是 1-based;
  • 区间边界是否包含终点;
  • 染色体名称写作 chr1 还是 1
  • 不同文件类型和工具之间如何解释同一个区间。

这些差异看起来很小,但对位点级分析来说,一个位置的偏移就足以改变全部解释。

注释告诉我们:在参考坐标上的不同区域分别对应什么生物学对象。

它把”位置”进一步变成:

  • 哪些区域对应 gene;
  • 哪些属于 transcript;
  • 哪些是 exon、intron、CDS;
  • 某个变异或覆盖区域可能影响哪些对象。

没有注释,很多比对、定量和变异结果只能停留在”坐标层”,很难进入真正的生物学解释层。

维度 它解决什么问题 典型表现
参考基因组 给所有 reads、变异和 feature 提供统一坐标框架 FASTA、assembly 版本、参考序列长度和 contig 集合
坐标系统 规定区间如何表示、命名和比较 0-based / 1-based、chr1 vs 1、区间边界约定
注释文件 把坐标区间映射到 gene / transcript / exon 等对象 GTF/GFF、annotation release、feature 属性字段

三者缺一不可:

  • 没有参考基因组,你没有统一坐标框架;
  • 没有坐标系统约定,你无法稳定比较不同文件里的区间;
  • 没有注释,你只能看到位置,无法知道这些位置对应什么对象。
1
基础层

准备参考背景

先确定使用哪套参考基因组和对应版本。
这是后续 BAM、VCF、feature counting 和数据库对照的共同背景。
2
对象层

加载注释对象

再配上与参考版本匹配的 GTF/GFF 或其他注释资源。
参考版本对了,不代表注释版本就自动匹配。
3
证据层

生成定位结果

reads 被放到参考坐标系里,得到 BAM/CRAM 等结果。
这时你有了"放在哪里"的证据,但还没有完整解释。
4
解释层

接入任务语义

根据注释对象和数据库背景,把定位结果转成表达、变异或功能层解释。
真正的解释来自参考、坐标和注释三者一起工作。

如果你拿到一套 BAM、VCF、GTF 或数据库结果,通常先检查下面几件事:

  1. 参考版本是否一致
    • FASTA、BAM header、VCF header、注释文件和数据库说明是否指向同一 assembly。
  2. 染色体命名是否兼容
    • chr1 还是 1,是否存在不同 contig 集合。
  3. 坐标约定是否一致
    • 特别是区间类文件和工具之间的 0-based / 1-based 差异。
  4. 注释对象是否匹配当前问题
    • 你是要看 gene、transcript、exon 还是 CDS?
  5. 数据库对象是否接得上
    • 结果里的坐标或 ID 能否正确映射到当前注释与数据库版本。

这些检查通常比”先跑下游命令”更重要,因为它们决定了后面的结果到底能不能解释。

假设你在 RNA-seq 中拿到下面这些文件:

  • 参考序列 genome.fa
  • 注释文件 genes.gtf
  • 比对结果 sample.bam
  • 下游表达定量结果 counts.tsv

如果你发现:

  • sample.bam 使用的是某套参考版本;
  • genes.gtf 来自另一版本的注释;
  • 某些染色体命名写法也不一致;

那么即使比对程序和计数程序都能运行,结果也可能出现:

  • feature 对不上;
  • 某些 reads 无法被正确归到目标 gene / transcript;
  • counts 的解释和数据库查询结果彼此不一致。

这说明参考、坐标系统和注释并不是”前期准备工作”,而是整个分析解释链条的核心约束。