Skip to main content

第一阶段:生物学基础(不可跳过)

对应大纲第一阶段 目标:建立最小化的分子生物学认知框架,能读懂领域文献的背景介绍 预计完成时间:2-3 周(每天 1-2 小时)


为什么"不可跳过"?​

很多程序员的第一反应是:我只要会处理文件格式、跑工具就行了,生物学背景可以边做边补。

这个想法在前 3 个月会让你陷入一个困境:你能跑通流程,但看不懂结果。

举个具体的例子:GATK 输出的 VCF 文件里有一列叫 GT,值是 0/1 或 1/1。工具文档告诉你这叫"基因型"。但如果你不知道人类基因组是二倍体(每个位置有两个拷贝),你就不会理解为什么 0/1 叫杂合子、1/1 叫纯合突变,也不会理解为什么某些遗传病需要 1/1 才发病(隐性遗传),而某些只需要 0/1 就够了(显性遗传)。

本阶段的目标不是让你变成生物学家,而是建立足够的直觉,让你能:

  • 看懂论文方法部分的背景描述
  • 理解工具参数设计背后的逻辑
  • 和生物学家/临床医生沟通时不一脸懵

1.1 中心法则(Central Dogma)​

先给你一个直觉​

细胞是一台运行生命程序的计算机。它的存储介质是 DNA,运行时系统是 RNA,最终产物是 蛋白质。

DNA  ──转录──▶  RNA  ──翻译──▶  蛋白质
(硬盘) (内存) (程序运行的结果)

这就是 1958 年 Francis Crick 提出的"中心法则":遗传信息的流向是单向的,从 DNA 到 RNA 到蛋白质。

DNA:硬盘,存储原始信息​

DNA(脱氧核糖核酸)是一种双链螺旋分子,由四种碱基组成:

碱基缩写配对关系
腺嘌呤A与 T 配对
胸腺嘧啶T与 A 配对
鸟嘌呤G与 C 配对
胞嘧啶C与 G 配对

双链的意思是:一条链是 ATCGGTA...,另一条链就一定是它的互补链 TAGCCAT...。这个配对规则(A-T、G-C)是生物信息学里出现频率最高的概念之一——序列比对、引物设计、PCR,全都建立在这个规则上。

# 计算 DNA 互补链(这在生物信息分析中很常用)
def reverse_complement(seq):
complement = {'A': 'T', 'T': 'A', 'G': 'C', 'C': 'G', 'N': 'N'}
return ''.join(complement[b] for b in reversed(seq))

print(reverse_complement("ATCGGTA")) # TACCGAT

人类 DNA 有多长?
人类基因组约有 30 亿个碱基对(3 × 10⁹ bp)。如果把 DNA 拉直,每个细胞里的 DNA 加在一起约有 2 米长。一个普通文本文件里,30 亿个字符大约是 3GB——这就是为什么基因组数据管理本身就是一个工程问题。

染色体:DNA 的打包方式
人类有 46 条染色体(23 对),每条染色体就是一段被蛋白质(组蛋白)缠绕压缩的 DNA。你可以理解为:如果基因组是一个 3GB 的项目代码库,染色体就是 23 个模块目录(因为是两套,所以共 46 个)。

RNA:内存,临时执行用的中间体​

RNA(核糖核酸)和 DNA 很像,主要区别:

  • 单链而非双链
  • 用 U(尿嘧啶) 代替 T(胸腺嘧啶)
  • 不稳定,用完即降解(这正是它作为"内存"的特性)

当细胞需要某个蛋白质时,不会直接读取 DNA——DNA 太珍贵,不能随便访问。它会先把对应基因的 DNA 序列转录成 RNA,再用 RNA 来指导蛋白质合成。

RNA 有多种类型:

类型全称功能
mRNA信使 RNA携带蛋白质的编码信息(你在 RNA-seq 里测的主要是它)
rRNA核糖体 RNA核糖体的组成部分,参与翻译
tRNA转运 RNA把氨基酸送到核糖体,对应密码子
miRNA微小 RNA调控基因表达(约 22 个碱基长)
lncRNA长非编码 RNA调控功能,研究热点之一

为什么 RNA 对生物信息学重要?
RNA-seq 测序测的就是细胞里的 mRNA 含量。mRNA 越多,说明这个基因的表达量越高,对应蛋白质的产量也越多。这是研究基因功能、疾病机制的核心方法之一。

蛋白质:程序运行的产物​

蛋白质是由氨基酸按特定顺序连接成的链(多肽链),折叠后形成三维结构,执行各种功能:

  • 酶(加速化学反应)
  • 受体(接收信号)
  • 结构蛋白(提供支撑)
  • 转录因子(调控其他基因的开关)

密码子:三个碱基编码一个氨基酸
RNA 序列每 3 个碱基为一组,称为一个密码子(codon),对应一种氨基酸(共 20 种)。4³ = 64 种密码子编码 20 种氨基酸,因此存在冗余(多个密码子对应同一氨基酸)。

mRNA:  AUG  GCA  AAU  UGA
氨基酸: Met Ala Asn Stop

AUG 是起始密码子(相当于 main() 函数入口),UAA/UAG/UGA 是终止密码子(相当于 return)。

# 标准密码子表(部分)
codon_table = {
'AUG': 'Met', # 起始密码子
'GCA': 'Ala', 'GCC': 'Ala', 'GCG': 'Ala', 'GCU': 'Ala', # 冗余
'UAA': '*', 'UAG': '*', 'UGA': '*', # 终止密码子
# ...共 64 个
}

转录过程(DNA → RNA)​

转录发生在细胞核里,由 RNA 聚合酶(RNA Polymerase)驱动:

  1. RNA 聚合酶识别基因的启动子(Promoter)区域,结合 DNA
  2. 沿 DNA 模板链移动,按碱基互补原则合成 RNA 链(A→U,T→A,G→C,C→G)
  3. 遇到终止子(Terminator)序列后停止
  4. 产生的原始 RNA(pre-mRNA)还需要加工:
    • 加 5' 帽子(保护 mRNA 不被降解)
    • 加 poly-A 尾(同上)
    • 剪接(Splicing):去除内含子,拼接外显子

剪接(Splicing)是一个关键概念:
人类基因平均有 8-10 个外显子,被内含子隔开。成熟 mRNA 只包含外显子序列。同一个基因可以通过不同的剪接方式(可变剪接,Alternative Splicing)产生多种 mRNA,进而产生功能不同的蛋白质。这就是为什么人类只有约 2 万个基因,却能产生超过 10 万种蛋白质。

pre-mRNA: [外显子1] [内含子1] [外显子2] [内含子2] [外显子3]
剪接 ↓
成熟mRNA: [外显子1] ──────── [外显子2] ──────── [外显子3]

翻译过程(RNA → 蛋白质)​

翻译发生在细胞质里,由核糖体(Ribosome)执行:

  1. 核糖体结合到 mRNA 上,从起始密码子(AUG)开始
  2. tRNA 携带对应氨基酸,按密码子顺序一个个对接
  3. 氨基酸之间形成肽键,链条延伸
  4. 遇到终止密码子,多肽链释放,折叠成功能性蛋白质

为什么这和"数据 pipeline"是同一类问题?​

中心法则描述的是一套单向信息流处理系统:

DNA         →   RNA        →   蛋白质
原始数据 中间表示 最终产出
(Git 仓库) (编译产物) (运行中的程序)

类比关系:

  • 启动子 ≈ 触发 pipeline 的事件(如 cron 触发、API 请求)
  • 转录因子 ≈ 开关某个 pipeline 的配置项(feature flag)
  • 可变剪接 ≈ 同一套代码在不同参数下产生不同版本
  • 蛋白质降解 ≈ 容器生命周期管理(用完销毁)
  • 表观遗传修饰 ≈ 环境变量(不改代码,但影响运行行为)

这个类比不是玩文字游戏——生物学本质上是一套信息处理系统,只是底层用化学实现的。理解这一点,会让你在面对陌生的生物学概念时,能快速找到对应的计算机科学直觉。


1.2 基因组基础概念​

概念全景​

概念类比实际含义
基因组(Genome)整个代码仓库人类约 30 亿碱基对,包括编码区和非编码区
染色体(Chromosome)代码库的模块目录人类 23 对,共 46 条
基因(Gene)一个函数编码特定蛋白的 DNA 片段,约 2 万个
外显子(Exon)函数体的有效代码被翻译成蛋白质的部分,约占基因组 1.5%
内含子(Intron)函数体内的注释转录后被剪切掉,不编码蛋白质
启动子(Promoter)函数声明前的装饰器控制基因何时、在哪里表达
SNP代码里的一个字符差异个体遗传差异的基础,约 500 万个
Indel代码里插入/删除一段插入或缺失几个碱基
突变(Mutation)Bug可能致病,也可能无影响
等位基因(Allele)同一函数的不同版本二倍体生物每个位置有两个等位基因

人类基因组的数字​

了解这些量级,才能对数据处理有直觉:

总碱基对数:  ~3,200,000,000 bp (3.2 Gbp)
基因数量: ~20,000 个(蛋白质编码基因)
外显子总长: ~35,000,000 bp(约占 1.5%)
常见 SNP 数: ~10,000,000 个
一个人的文件大小(FASTQ, 30× WGS):~100 GB
压缩后(BAM):~30-40 GB

只有约 1.5% 的基因组编码蛋白质——其余 98.5% 曾被称为"垃圾 DNA",但现在知道其中包含大量调控元件、结构 RNA 等功能性序列。WGS 测全部,WES 只测那 1.5%,Panel 测更少。

二倍体与基因型​

人类是二倍体生物:每条染色体有两个拷贝(一个来自父亲,一个来自母亲)。因此每个基因组位置有两个等位基因。

位置 chr1:925952:
父源染色体:G(参考等位基因)
母源染色体:A(变异等位基因)

基因型表示:0/1(杂合子,heterozygous)
如果两条都是 A:1/1(纯合突变,homozygous alternate)
如果两条都是 G:0/0(纯合参考,homozygous reference)

这就是 VCF 文件里 GT 字段的含义。

临床意义:

  • 显性遗传病(如亨廷顿病):一个拷贝突变(0/1)就会发病
  • 隐性遗传病(如囊性纤维化):需要两个拷贝都突变(1/1)才发病
  • 这就是为什么携带者(0/1)不发病,但子女有 25% 概率得病

SNP:个体差异的基础​

SNP(Single Nucleotide Polymorphism,单核苷酸多态性)是基因组中特定位置上个体之间的碱基差异。

人群参考序列:...ATCG[G]TACG...
个体 A: ...ATCG[G]TACG...(和参考一致)
个体 B: ...ATCG[A]TACG...(有 SNP,G→A)

SNP 的三种重要类型:

  1. 同义 SNP(synonymous):改变 DNA 但不改变氨基酸(密码子冗余导致)

    GCA → GCG  两者都编码 Ala,蛋白质功能不变
  2. 错义 SNP(missense):改变氨基酸,可能影响蛋白质功能

    GAG → GTG  Glu → Val,这就是镰刀型细胞贫血症的突变
  3. 无义 SNP(nonsense):产生提前终止密码子,蛋白质被截断

    CAG → TAG  Gln → Stop,蛋白质提前终止

如何理解 SNP 频率:

  • 常见 SNP(人群频率 > 1%):通常是中性的,是进化过程中保留的多样性
  • 罕见变异(频率 < 0.1%):更可能对蛋白质功能有影响,是遗传病研究的重点
  • de novo 突变:在父母中没有,在孩子中首次出现的突变,常见于重症遗传病

Indel:插入和缺失​

Indel 是 Insertion(插入)和 Deletion(缺失)的合称。

参考序列:ATCG--TACG
有插入的:ATCGAATACG(插入了 AA)
有缺失的:AT--GTACG(缺失了 CG)

为什么 Indel 比 SNP 更危险?
如果 Indel 的长度不是 3 的倍数,会导致移码突变(Frameshift Mutation)——密码子的阅读框完全错乱,后续所有氨基酸都变了,蛋白质通常失去功能。

# 移码突变示意
original = "ATG GCA AAU CGA UGA" # Met-Ala-Asn-Arg-Stop
# 插入一个 T 在第 4 位
frameshift = "ATG TGC AAA UCG AUG A..." # 完全不同的氨基酸序列

基因表达:同样的 DNA,不同的细胞​

人体所有细胞(肝细胞、神经元、红细胞)都含有完全相同的基因组,但它们的形态和功能截然不同。原因是不同细胞会表达不同的基因子集。

控制基因表达的机制:

  1. 转录因子:结合到启动子/增强子上,激活或抑制转录
  2. 表观遗传修饰(Epigenetics):不改变 DNA 序列,但影响基因是否被读取
    • DNA 甲基化(methylation):通常抑制基因表达
    • 组蛋白修饰(histone modification):影响 DNA 的紧密程度
  3. 增强子(Enhancer):可以在距离基因很远的地方控制基因表达
同样的 DNA 代码,不同的运行时配置 → 不同的运行结果
↕ ↕
同样的基因组,不同的表观遗传状态 → 不同的细胞类型

参考基因组:你的"标准库"​

生物信息分析里有一个叫参考基因组(Reference Genome)的概念,它是一个"标准人"的基因组序列,用于:

  • 测序 reads 的比对(把短片段定位回基因组的位置)
  • 变异检测的基准(和参考基因组不同的地方就是变异)

常用人类参考基因组版本:

版本别名说明
GRCh37hg192009 年发布,很多老数据用这个
GRCh38hg382013 年发布,目前主流,修正了很多错误
T2T-CHM13hg0022022 年的端粒到端粒完整版,未来趋势

注意:hg19 和 hg38 坐标不兼容! 同一个基因在两个版本里的染色体坐标可能完全不同。混用会导致严重错误。这就像 API 版本不兼容——一定要在分析开始前确定用哪个版本,全程保持一致。

# 下载 hg38 参考基因组
wget https://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.fa.gz
# 构建 BWA 索引(比对前必须做)
bwa index hg38.fa

1.3 三个关键概念深入:变异、频率、功能影响​

变异 vs 突变 vs 多态性​

这三个词在不同语境下有微妙区别:

词英文含义
变异Variant中性词,和参考基因组不同的位置
突变Mutation通常指有功能影响或致病的变异
多态性Polymorphism在人群中频率 ≥ 1% 的常见变异

在代码里你会看到 VCF 文件(Variant Call Format),存储的是"变异",不预设功能影响。注释步骤(ANNOVAR/VEP)才会给每个变异打上"致病性"标签。

变异数据库:读懂注释结果的关键​

数据库内容用途
dbSNP已知 SNP 的 rs 编号rs1234 这类 ID 就来自这里
gnomAD14 万人的变异频率判断变异是否罕见
ClinVar临床意义注释致病性、良性、意义不明
HGMD人类基因突变数据库已知致病突变的收录

实际分析中的过滤逻辑:

候选变异 100,000 个
↓ gnomAD 频率 < 0.1%(过滤常见多态性)
剩余 ~5,000 个
↓ 仅保留编码区变异(错义、无义、移码)
剩余 ~500 个
↓ ClinVar 已知致病 + 预测工具(CADD score > 20)
剩余 ~20-50 个
↓ 与临床表型匹配的基因
最终候选:1-5 个

1.4 一个完整的例子:从 DNA 到遗传病​

让我们用一个真实案例把所有概念串起来:镰刀型细胞贫血症(Sickle Cell Disease)

背景:

  • 致病基因:HBB(β-血红蛋白)
  • 变异:chr11:5,246,696,G → A(hg38 坐标)
  • 密码子变化:GAG → GTG
  • 氨基酸变化:Glu(谷氨酸)→ Val(缬氨酸),蛋白质第 6 位
  • 遗传方式:常染色体隐性(需要 1/1 才发病)

信息流:

DNA:     ...CAC CTG ACT CCT GTG GAG AAG...(正常)
↓ 突变 G→A
...CAC CTG ACT CCT GTG GAG AAG...
↑
这个 G 变成了 A

mRNA: GAG → GTG
蛋白质: Glu → Val(HbS 蛋白的第 6 个氨基酸)
结果: HbS 蛋白在低氧环境下聚合,红细胞变成镰刀形,阻塞毛细血管

在 VCF 文件里,这条变异长这样:

chr11  5246696  rs334  T  A  .  PASS  AF=0.006;AC=12

(注意:VCF 里显示的是反义链,所以 REF 是 T 而不是 G)

注释后的信息(ANNOVAR 输出):

Gene: HBB
Effect: nonsynonymous SNV
AA Change: p.Glu7Val (注意:有的标注方式从第6位算,有的从第7位)
ClinVar: Pathogenic
gnomAD AF: 0.006 (非洲人群中更高)
CADD Score: 24.5 (> 20 认为有功能影响)

1.5 自测题​

读完本节后,你应该能回答这些问题:

  1. 为什么可变剪接让 2 万个基因能产生超过 10 万种蛋白质?
  2. VCF 文件里的 GT: 0/1 和 GT: 1/1 分别意味着什么?
  3. 一个 Indel 如果长度是 6 bp,会导致移码突变吗?
  4. 为什么 hg19 和 hg38 坐标不能混用?
  5. 一个变异在 gnomAD 里频率是 30%,它更可能是致病突变还是正常多态性?

1.6 推荐资源(带使用建议)​

入门视频​

MIT OpenCourseWare: 7.016 Introductory Biology

  • 地址:B 站搜索"MIT 7.016"有中文字幕搬运版
  • 建议:先看第 1-6 讲(约 9 小时),覆盖中心法则和基因表达
  • 跳过:遗传学实验操作部分(对生物信息方向意义不大)

Khan Academy 生物学系列

  • 中心法则部分:约 2 小时,讲解清晰,有动画
  • 适合用来补充不理解的具体概念

教材​

《生物信息学》(陈铭 主编,清华大学出版社)

  • 国内大学课程用书,数学和编程背景的人会觉得比较亲切
  • 重点读:第 1-3 章(序列数据库、序列比对基础)

《Bioinformatics Data Skills》(Vince Buffalo)

  • 英文,面向有编程基础的读者
  • 第 1-3 章是很好的生物学背景介绍

在线资源​

NCBI Insights 博客 (ncbi.nlm.nih.gov/insights)

  • 了解数据库更新和背后的设计逻辑
  • 特别推荐:关于 RefSeq 和 GenBank 区别的文章

Ensembl 基因浏览器(ensembl.org)

  • 直接在浏览器里看一个基因的结构:外显子、内含子、已知变异
  • 推荐练习:搜索 BRCA1,看它有多少个外显子,有哪些已知致病变异

动手练习建议​

第一周:

# 在 UCSC Genome Browser 里看 HBB 基因的结构
# 网址: genome.ucsc.edu → 搜索 HBB → 查看 Gene tracks

第二周:

# 用 Biopython 解析一个简单的基因序列
from Bio.Seq import Seq
dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG")
mrna = dna.transcribe() # ATGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG
protein = dna.translate() # MAIVMGR*KGAR*
print(protein)

第三周:

  • 在 ClinVar 里查找 BRCA1 的致病变异,理解注释信息的每个字段
  • 在 gnomAD 里查找一个常见 SNP 和一个罕见变异,对比它们的人群频率

本阶段完成标志​

当你能做到以下几点,说明第一阶段目标达成:

  • 能向别人解释"为什么 RNA-seq 能测基因表达量"(不超过 3 句话)
  • 看到 VCF 文件里的 GT:DP:GQ 字段,知道每个字段大概是什么意思
  • 能区分 WGS、WES、RNA-seq 分别在测什么、用在什么场景
  • 知道 hg19 和 hg38 是什么,为什么不能混用
  • 能用 Biopython 或纯 Python 处理简单的 DNA/蛋白质序列

完成后,进入 第二阶段:核心数据格式——真正开始动手跑测序数据分析。