第2章:生物学背景:中心法则与生物数据表示
做可解释性度量,第一步不是看算法,是看懂数据从哪里来。
生物学数据不是凭空冒出来的。它遵循一套严格的“生产流程”——中心法则。我记得早年跟生物实验组合作时,他们总说我“你们做计算的看不懂数据背后的生物学意义”。后来我发现,问题不在于算法,而在于我根本不理解这些测序数据是怎么产生的。
2.1 中心法则:生命的信息流
中心法则描述了遗传信息在生物体内的流动方向。说白了,就是DNA怎么决定你长什么样。
我建议你把这个图记在脑子里。每次处理生物学数据时,问自己一个问题:我现在在中心法则的哪个环节?这会直接影响你怎么选择度量指标。
2.2 生物数据表示:从碱基到信号
不同的生物学数据类型,它们的数学表示完全不同。这是可解释性度量必须跨过的第一道坎。
| 数据类型 | 原始表示 | 常见文件格式 | 关键特征 |
|---|---|---|---|
| DNA序列 | 字符序列(A/C/G/T) | FASTA, BED, VCF | 离散、带注释、有方向性 |
| RNA测序 | 字符+质量分数 | FASTQ, GTF, SAM | 可变剪接、丰度信息 |
| 蛋白质序列 | 字符序列(20种氨基酸) | FASTA, PDB | 结构依赖性、保守性评分 |
| 质谱数据 | 信号强度 vs m/z | mzML, mgf, RAW | 连续信号、噪声高、峰检测 |
| 图像数据 | 像素矩阵 | TIFF, PNG, OME-TIFF | 高维、空间相关性 |
核心观点:可解释性度量的“好”与“坏”,很大程度上取决于你的数据表示是否对齐了生物学真实。
2.3 实测数据格式:你一定会遇到的“坑”
我在项目中带过不少新人,发现最容易出问题的不是算法,而是数据格式。来,我给你说说最常见的几种。
2.3.1 FASTA:最基础的序列格式
FASTA格式很简单,一个头行一个序列行。但它的“可解释性”几乎为零——只有字符,没有质量。
>chr1_random
ACGTTCGATCGTAGCTAGCTAGCTAGCTGATCGATCGTACGT
>chr1_random_alt
GCTAGCTAGCTAGCTAGCATGCATGCTAGCTAGCTAGCTAGT
我的建议:别在FASTA上直接做数值计算,除非你做了one-hot编码或k-mer化。我见过有人直接拿字符算相似度,那结果完全没意义。
2.3.2 FASTQ:带质量的序列才是“活的”
测序仪出来的原始数据是FASTQ格式。它比FASTA多了一个质量行。
@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
+
!''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65
第四行的每一个符号都代表一个碱基的测序质量。质量分数用ASCII字符表示,范围是0-40。值越高,越可信。
我曾经踩过的坑:在一次RNA-Seq差异分析中,我忽略了低质量碱基过滤。结果下游的“可解释性”热图看起来很好看,但实际上有一半的信号来自测序错误。从那以后,我拿到任何FASTQ都先跑一遍FastQC,确保数据质量过关,再做可解释性分析。
2.3.3 SAM/BAM/CRAM:比对的“证据链”
当序列比对到参考基因组后,数据变成SAM格式。它是10个制表符分隔的列。
@HD VN:1.6 SO:coordinate
@SQ SN:chr1 LN:248956422
@PG ID:bwa PN:bwa VN:0.7.17
read001 99 chr1 10001 60 101M = 10200 200 ACGTACGT... IIIIIIII...
read002 163 chr1 10050 60 101M = 9980 -70 TGCATGCA... IIIIIIII...
CIGAR字符串(比如101M)告诉我们是怎么对齐的。这个信息对可解释性度量非常宝贵——它告诉你读段是唯一比对还是多比对,有没有插入缺失。
实用指标:比对质量(MAPQ)、CIGAR复杂度、编辑距离。这些指标对于度量模型预测的可信度非常关键。
2.3.4 GTF/GFF:基因组“地图注释”
没有注释文件,你压根不知道基因组上的那些区域是干什么的。GTF就是这张“地图”。
chr1 HAVANA gene 11869 14412 . + . gene_id "ENSG00000223972"; gene_name "DDX11L1";
chr1 HAVANA transcript 11869 14409 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328";
chr1 HAVANA exon 11869 12227 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; exon_number "1";
注意第九列是一个分号分隔的键值对。我建议在解析时使用专门的工具(比如pyensembl或gffutils),不要手写正则表达式——我试过,坑太多了。
2.4 生物数据的关键统计属性
做可解释性度量,你需要知道数据的统计分布长什么样。
| 属性 | DNA数据 | RNA数据 | 蛋白质数据 |
|---|---|---|---|
| 数据类型 | 离散字符 | 离散+连续质量 | 离散字符+连续强度 |
| 分布特征 | 偏向GC | 零膨胀负二项 | 多峰、截断 |
| 噪声模型 | 测序错误(随机) | 技术重复+生物学可变性 | 离子抑制、共洗脱 |
| 维度 | 1D序列 | 1D序列 | 2D信号或3D结构 |
| 可解释性难点 | 没有直接对应表型 | 多重映射、可变剪接 | 翻译后修饰复杂 |
2.5 一个真实的“避坑”故事
我曾经参与过一个项目,目标是开发一个模型预测基因表达量。数据预处理阶段,同学们直接用了原始FASTQ的read counts,没有做文库大小标准化和GC偏差校正。
你想想看,如果不做标准化,不同样本间的数据根本不可比。模型输出的“重要特征”很可能只是文库差异,而不是真正的生物学信号。
正确的做法是:先做质量控制、标准化、矫正批次效应,然后再建模型。可解释性度量必须在“干净”的数据上做,否则就是garbage in, garbage out。
我的经验:在开始任何可解释性分析之前,先做三件事:1)数据质量报告;2)标准化;3)批次效应检查。这三步做好,你后面的工作才有意义。
2.6 小结:记住这几条
- 中心法则决定了数据的“家族”:DNA、RNA、蛋白质各有各的数学表示。
- 每种生物数据格式都有它的设计意图——理解意图才能设计好的度量。
- 质量值、比对信息、注释信息是可解释性度量的“黄金”来源。
- 统计学特征(分布、噪声、维度)直接影响你用什么度量方法。