第二章 生物信息学基础:DNA序列、基因与变异的基本概念、人类基因组参考序列

聊SNP和分子动力学模拟之前,得先把底层的生物信息学概念夯实了。我见过不少做计算的同学,代码写得漂亮,但一遇到生物学概念就开始绕弯子。说白了,你不懂DNA怎么编的码,就看不懂变异怎么产生的。咱们这一章就把这些地基打好。

2.1 DNA序列:生命的四字母语言

DNA双螺旋结构大家中学都见过。它由四种核苷酸组成——A(腺嘌呤)、T(胸腺嘧啶)、G(鸟嘌呤)、C(胞嘧啶)。这四种碱基就是生命的“四字母代码”。A和T配对,C和G配对,这叫互补原则。

我刚开始做生物信息学项目时,总觉得把序列当成字符串处理就完事了。后来吃了个亏——处理全基因组比对时没考虑互补链的方向,结果跑了三天才发现全部错了。所以有件事得记牢:DNA链有方向,从5'端到3'端。绝大多数生物学流程都默认这个方向。

看看最基本的数据格式——FASTA。存DNA序列最常用的格式,几行就能搞定:

>基因标识符 描述信息
ATCGATCGATCGATCGATCG
ATCGATCGATCGATCGATCG
ATCGATCGATCGATCGATCG

以>开头的那行是序列头,包含标识符和注释。后面是序列本身,通常每行60-80个碱基,便于阅读。

实际项目中,一个FASTA文件可能包含整条染色体,三亿多个碱基。别慌,计算机处理方式和处理普通字符串差别不大,只是内存开销比较大。

元素 符号 互补碱基 化学分类
A 腺嘌呤 T 嘌呤
T 胸腺嘧啶 A 嘧啶
G 鸟嘌呤 C 嘌呤
C 胞嘧啶 G 嘧啶

小技巧:处理DNA序列时,我习惯先把所有小写字母转为大写,避免后续比对出错。一行Python搞定:sequence = sequence.upper()。

2.2 基因与变异:从密码到突变

基因是什么?简单来说,就是一段能编码蛋白质或功能性RNA的DNA片段。人类基因组大约有两万个蛋白质编码基因,但只占不到2%的序列。其余98%是“非编码区”——过去叫“垃圾DNA”,现在我们知道里面藏着大量调控元件。

基因长什么样?结构很精妙——外显子(编码区)和内含子(非编码区)交替排列。转录时,先得到前体mRNA,内含子被剪接掉,外显子拼接成成熟的mRNA,再去翻译成蛋白质。

我曾在研究某个疾病相关基因时,发现一个变异正好落在内含子和外显子的交界处——剪接位点。这个位置一旦突变,整个剪接过程就会出问题。嗯,这种变异一般疾病关联性非常强。

变异嘛,就是DNA序列的改变。大致分这么几类:

  • SNP(单核苷酸多态性):单个碱基变了。最常见,约占总变异的90%。我们的重点。
  • InDel(插入/缺失):插进去或丢掉几个碱基。
  • CNV(拷贝数变异):某段DNA重复的次数变了。
  • 结构变异:大段DNA颠倒、易位之类的。

SNP分两种场景:

  1. 同义突变:碱基变了,但密码子编码的氨基酸没变。这种变异通常不影响蛋白功能。
  2. 非同义突变:蛋白质序列直接变了。又细分为错义突变(换了一个氨基酸)和无义突变(直接变了个终止子,蛋白质截断)。

关键点:我们做SNP与MD动力学结合,重点关注的是非同义突变,尤其是那些落在蛋白功能域或活性位点附近的SNP。为什么?因为蛋白结构变了,动力学行为才会相应改变。

2.3 人类基因组参考序列:我们对比的“标尺”

说实话,没有参考基因组,我们根本没法检测变异。

人类基因组参考序列,是许多科研人员几十年努力的结晶。最早的版本来自人类基因组计划(2003年完成)。后来经过不断的修正、补洞、提升质量,现在最新的是GRCh38(也叫hg38)。每次更新会发布一个新的“补丁”版本——比如GRCh38.p14。

参考基因组不是某个具体人的基因组,而是一个“合成品”。它整合了十几个匿名捐献者的DNA,去除那些罕见的、致病性的变异后,拼接出来的一个代表性序列。

我刚开始做变异检测时,踩过一个坑:参考基因组版本不一致。我的注释流程用的是hg19,但同事提供的比对数据是用GRCh38建的索引。结果比对率从98%骤降到60%——对不上啊。那回之后,我养成了在项目文档里写明参考基因组版本的习惯。

主要版本的差异:

版本 发布年份 主要改进
GRCh36 (hg18) 2006 早期完整版本
GRCh37 (hg19) 2009 修复大量小错误,提升连续性
GRCh38 (hg38) 2013 增加替代序列(alt loci),填补着丝粒缺口
T2T-CHM13 2022 完整端粒到端粒,填补了所有缺口

T2T版本是里程碑式的进展——第一次真正意义上把人类基因组的每个碱基都读全了。但对于常规SNP检测项目,GRCh38仍是行业标准。

在实际分析中,参考基因组通常长这样:读取特定染色体上某个位置的碱基。

# 查看参考基因组中chr1前100个碱基(简化示例)
>chr1
NNNNNATTTCACTTTCATCAAAGCACAAAGCATCAA
TTATCACACTATGTGCTTGTCAGAGCTTCAGTCCT
AATATATTCAAATCAGTCCTCCATGCCCATCCTGC

N代表未知碱基或高度重复的区域。一般数据分析时,遇到N要特别小心。

避坑指南:我曾经把N直接当成变异位点处理了——结果那一批次的结果全废了。记住:N不是变异,是组装时的缺口。如果在变异检测前不做过滤,你会得到一堆“假阳性”。

为什么会这样?因为比对软件会把测序读段硬往参考序列上贴。如果参考序列是N,测序数据是实实在在的A、T、C、G,就可能判为SNP。但事实是那个位置根本没测出来,N的置信度是最低的。

好了,掌握了这些基础概念,再看SNP数据时,就不会一头雾水了。下一步我们要把变异信息放到蛋白质结构上——这才是联动的关键。

生物信息学基础概念关系图 生物信息学核心概念结构图 DNA序列 (A/T/C/G) 基因 (外显子 + 内含子) 编码蛋白质 / 调控元件 序列变异 SNP / InDel / CNV / SV SNP(核心关注) 同义 / 非同义突变 人类参考基因组 GRCh38 / T2T-CHM13 序列比对 & 变异检测 定位SNP位点 SNP列表 → 映射到蛋白结构 箭头表示数据流向