序列、字符串与坐标系统
生物序列(DNA, RNA, 蛋白质)在计算层面上被抽象为有限字母表上的字符串。理解这一抽象以及随之而来的坐标系统约定,是所有后续算法(如比对、组装)的物理基础。
- 掌握 DNA 的四字符字母表 {A, C, G, T} 及其双链互补特性
- 理解"反向互补" (Reverse Complement) 在测序数据处理中的核心地位
- 区分 0-based 与 1-based、半开区间与闭区间等坐标约定
- 理解字符串抽象与坐标约定如何为后续比对、组装等核心方法提供物理基础
1. 从分子到字符串
Section titled “1. 从分子到字符串”在计算机眼里,复杂的生物大分子被简化为线性排列的字符。这一抽象是生物信息学所有后续计算的基础——比对、组装、变异检测、Motif 搜索,归根结底都是字符串操作。
三种核心字母表
Section titled “三种核心字母表”- DNA 字符串
- 字母表 $Sigma = {A, C, G, T}$。长度可从几百 bp(Reads)到几百 Mb(染色体)。人类基因组约 $3 imes 10^9$ bp。
- RNA 字符串
- 字母表 $Sigma = {A, C, G, U}$。RNA 中的 U(尿嘧啶)取代了 DNA 中的 T(胸腺嘧啶)。通常代表转录后的信息片段,如 mRNA、tRNA、rRNA。
- 蛋白质字符串
- 字母表 $Sigma$ 包含 20 种标准氨基酸(单字母编码:A, C, D, E, F, G, H, I, K, L, M, N, P, Q, R, S, T, V, W, Y)。蛋白质的性质很大程度上取决于氨基酸序列。
字符串的层次
Section titled “字符串的层次”生物序列并非均匀的同质字符串,而是具有内部层次结构的:
基因组(Genome, ~3 Gb) └── 染色体(Chromosome, ~50-250 Mb) └── 基因(Gene, ~1-100 kb) └── 外显子(Exon, ~50 bp - 几 kb) └── 密码子(Codon, 3 bp) └── 碱基(Nucleotide, 1 bp)理解这种层次结构对于设计高效的索引和搜索算法至关重要。例如,在进行全基因组比对时,通常先在染色体级别定位,再在基因级别精细比对,而非直接在碱基级别进行暴力搜索。
2. 关键特性:方向性与互补性
Section titled “2. 关键特性:方向性与互补性”5' 到 3' 方向
Section titled “5' 到 3' 方向”DNA 和 RNA 链具有极性(Polarity)。核苷酸通过磷酸二酯键连接,化学方向决定了信息流的走向:
- 5' 端:磷酸基团端,通常写在序列的左侧。
- 3' 端:羟基端,通常写在序列的右侧。
在生物信息学中,除非特别说明,字符串默认按 5' 端到 3' 端的顺序存储。这一约定是所有比对算法和搜索算法的隐含前提。
DNA 聚合酶只能沿 5' 到 3' 方向合成新链,这一生物学事实深刻影响了测序技术的设计和数据处理的方式。
反向互补(Reverse Complement)
Section titled “反向互补(Reverse Complement)”由于 DNA 是双链且反向平行的,理解反向互补操作是处理测序数据的基本功。
对于序列 :
- 互补(Complement):按 A-T, G-C 配对规则得到
3'-TACG-5'。 - 反向(Reverse):将字符串前后颠倒,得到
5'-GCAT-3'。
用数学符号表示:给定序列 ,其反向互补序列 为:
其中 表示 的互补碱基(, , , )。
反向互补的算法挑战
Section titled “反向互补的算法挑战”在搜索 Motif 或比对 Reads 时,必须同时考虑原始序列及其反向互补链,因为测序仪可能从任何一条链上读取信息。这意味着:
- 双链搜索:在参考基因组上搜索时,通常需要同时搜索正链和反链(反向互补),然后将结果合并。
- Read 比对:比对器(如 BWA、Bowtie2)会自动尝试将 Read 同时比对到正链和反链,取得分更高的结果。
- k-mer 索引:构建 de Bruijn 图或 k-mer 索引时,通常约定使用字典序较小的 k-mer 作为规范形式(Canonical k-mer),以避免正反链的重复计数。
模糊碱基与 IUPAC 编码
Section titled “模糊碱基与 IUPAC 编码”在实际的测序数据中,并非所有位置都能被明确识别为 A、C、G 或 T。IUPAC(国际纯粹与应用化学联合会)定义了一套扩展编码来表示不确定的碱基:
| 符号 | 含义 | 说明 | | :--- | :--- | :--- | | A | A | 腺嘌呤 | | C | C | 胞嘧啶 | | G | G | 鸟嘌呤 | | T | T | 胸腺嘧啶 | | N | A/C/G/T | 任意碱基(Unknown) | | R | A/G | 嘌呤(Purine) | | Y | C/T | 嘧啶(Pyrimidine) | | S | G/C | 强氢键(3 个氢键) | | W | A/T | 弱氢键(2 个氢键) | | K | G/T | 酮基(Keto) | | M | A/C | 氨基(Amino) | | B | C/G/T | 非 A | | D | A/G/T | 非 C | | H | A/C/T | 非 G | | V | A/C/G | 非 T |
在参考基因组中,N 通常表示未测序或无法确定的区域(如着丝粒、端粒等高度重复区域)。
3. 坐标系统:生物信息学的"巨坑"
Section titled “3. 坐标系统:生物信息学的"巨坑"”不同工具和文件格式对位置的计数规则不同,这常导致 Off-by-one(差一) 错误。坐标系统的混淆是生物信息学初学者最常遇到的陷阱之一。
两种坐标系统
Section titled “两种坐标系统”| 维度 | 0-based (零基) | 1-based (一基) |
|---|---|---|
| **起始编号** | 从 0 开始计算 | 从 1 开始计算 |
| **区间表示** | 通常为半开区间 $[start, end)$ | 通常为闭区间 $[start, end]$ |
| 示例格式 | BED, BAM (内部), Python 索引 | VCF, GFF, SAM (文本列), R (Bioconductor) |
| **长度计算** | $end - start$ | $end - start + 1$ |
除了起始编号的差异,区间端点的包含性也不同:
- 半开区间 :包含 ,不包含 。Python 风格,BED 格式使用。
- 闭区间 :同时包含 和 。VCF、GFF 格式使用。
对于序列 ACTG:
- 在 0-based 半开区间 系统中:
- 第一个碱基
A的位置是 0 - 区间
[0, 2)代表AC(位置 0 和 1) - 区间长度为
- 第一个碱基
- 在 1-based 闭区间 系统中:
- 第一个碱基
A的位置是 1 - 区间
[1, 2]代表AC(位置 1 和 2) - 区间长度为
- 第一个碱基
注意:同一个生物学区间在这两种系统中的数值表示不同。BED 格式中的 [0, 100) 和 GFF 格式中的 [1, 100] 实际上代表的是同一个区域。
常见格式与坐标系统对照
Section titled “常见格式与坐标系统对照”| 文件格式 | 坐标系统 | 区间类型 | 说明 | | :--- | :--- | :--- | :--- | | BED | 0-based | 半开 | UCSC 系列工具使用 | | GFF/GTF | 1-based | 闭 | 基因注释标准格式 | | VCF | 1-based | 单点 | 变异位点坐标 | | SAM | 1-based | 闭(文本列) | POS 列从 1 开始 | | BAM | 0-based | 半开(内部) | BAM 二进制内部使用 0-based | | GenBank | 1-based | 闭 | NCBI 序列格式 |
实践中的坐标转换
Section titled “实践中的坐标转换”在编写脚本处理不同格式的数据时,坐标转换是几乎不可避免的。以下是常见的转换规则:
- BED 到 GFF:,
- GFF 到 BED:,
- SAM POS 到 BAM 0-based:
许多数据处理事故(如提取了错误的基因组区域、统计了错误长度的区间)都可以追溯到坐标系统的混淆。建议在项目中统一使用一种坐标约定,并在格式转换时显式处理差异。
4. 后续衔接
Section titled “4. 后续衔接”本页建立的字符串抽象和坐标系统约定,是后续核心方法的物理基础。编辑距离(Edit Distance)与序列比对的完整算法将在编辑距离与比对中展开;k-mer 分析、子串索引与基因组组装所需的数据结构则在 k-mer 与子串分析中详细讨论。建议在进入这些页面之前,确保对本页的反向互补操作和坐标转换规则已经熟悉。