跳转至

深度学习在基因组学

一句话概述:深度学习利用多层神经网络自动学习基因组数据中的复杂模式,在变异致病性预测(AlphaMissense)、基因表达预测(Enformer)、蛋白质结构预测(AlphaFold)等领域取得突破性进展。

核心知识点速查表

概念说明
CNN卷积神经网络,擅长提取序列/图像局部特征
RNN/LSTM循环神经网络,处理序列数据的依赖关系
Transformer自注意力机制,能捕获长距离依赖(GPT/BERT基础)
AlphaFoldDeepMind的蛋白质结构预测模型
EnformerDeepMind的基因表达预测模型
ESMMeta的蛋白质语言模型
DNA基础模型基于Transformer的DNA序列预训练模型

一、基因组学中的深度学习应用

应用场景代表模型网络类型
蛋白质结构预测AlphaFold2/3Transformer
变异致病性预测AlphaMissense, PrimateAICNN+Attention
基因表达预测EnformerTransformer
DNA序列理解DNABERT, Nucleotide TransformerBERT
蛋白质功能预测ESM-2Transformer
调控元件预测DeepSEA, BasenjiCNN
单细胞分析scBERT, scGPTTransformer
药物靶点预测DeepDTACNN+RNN

二、实操示例

2.1 使用预训练模型

# === 使用ESM-2预测蛋白质功能 ===
# pip install fair-esm
import torch
import esm

# 加载预训练模型
model, alphabet = esm.pretrained.esm2_t33_650M_UR50D()  # 6.5亿参数模型
batch_converter = alphabet.get_batch_converter()          # 序列转换器
model.eval()                                               # 评估模式

# 准备蛋白质序列
data = [
    ("protein1", "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQAPILSRVGDGTQDNLSGAEK"),
    ("protein2", "MRGAGAIIGLMAAGLMSGSAMAALVYPLAKHQPVLTG")
]

# 编码序列
batch_labels, batch_strs, batch_tokens = batch_converter(data)  # 转换

# 提取特征(嵌入向量)
with torch.no_grad():                                     # 不计算梯度
    results = model(batch_tokens, repr_layers=[33])        # 最后一层表示
    embeddings = results["representations"][33]             # 提取嵌入

# 每个蛋白质得到一个特征向量,可用于下游分类/聚类
print(f"嵌入维度: {embeddings.shape}")

2.2 简单CNN序列分类

# === PyTorch构建DNA序列分类CNN ===
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, Dataset
import numpy as np

# 数据准备:DNA序列 → one-hot编码
def one_hot_encode(seq):
    """将DNA序列转为one-hot编码"""
    mapping = {'A': [1,0,0,0], 'C': [0,1,0,0],
               'G': [0,0,1,0], 'T': [0,0,0,1], 'N': [0,0,0,0]}
    return np.array([mapping.get(base, [0,0,0,0]) for base in seq])  # 逐碱基编码

# 定义CNN模型
class DNAClassifier(nn.Module):
    def __init__(self, seq_len=200):
        super().__init__()
        self.conv1 = nn.Conv1d(4, 64, kernel_size=8)     # 第1卷积层
        self.conv2 = nn.Conv1d(64, 128, kernel_size=4)    # 第2卷积层
        self.pool = nn.MaxPool1d(4)                        # 最大池化
        self.dropout = nn.Dropout(0.3)                     # Dropout防过拟合
        self.fc1 = nn.Linear(128 * 11, 64)                # 全连接层
        self.fc2 = nn.Linear(64, 2)                        # 输出层(2分类)
        self.relu = nn.ReLU()                               # 激活函数

    def forward(self, x):
        x = x.permute(0, 2, 1)                            # (batch, 4, seq_len)
        x = self.relu(self.conv1(x))                       # 卷积+激活
        x = self.pool(x)                                    # 池化
        x = self.relu(self.conv2(x))                       # 第2层卷积
        x = self.pool(x)                                    # 池化
        x = x.flatten(1)                                    # 展平
        x = self.dropout(self.relu(self.fc1(x)))           # 全连接+Dropout
        return self.fc2(x)                                  # 输出

# 训练
model = DNAClassifier()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)  # Adam优化器
criterion = nn.CrossEntropyLoss()                            # 交叉熵损失

for epoch in range(20):                                      # 训练20轮
    model.train()
    for X_batch, y_batch in train_loader:
        pred = model(X_batch)                                # 前向传播
        loss = criterion(pred, y_batch)                      # 计算损失
        optimizer.zero_grad()                                # 梯度清零
        loss.backward()                                      # 反向传播
        optimizer.step()                                     # 更新参数

三、面试高频考点

Q1: AlphaFold对生信领域的影响?

  • 解决了蛋白质折叠问题(50年挑战)
  • AlphaFold DB提供>2亿蛋白质预测结构
  • 加速药物设计、酶工程、分子机制研究
  • AlphaFold3可预测蛋白质-核酸-小分子复合物

Q2: 深度学习 vs 传统ML在生信中的选择?

场景推荐
小样本(<500例)传统ML(RF/SVM/LASSO)
大样本、序列数据深度学习
需要可解释性传统ML
图像数据(病理/空间组学)CNN/Vision Transformer
蛋白质/DNA序列预训练语言模型(ESM/DNABERT)

Q3: 生信领域的基础模型(Foundation Models)有哪些?

  • 蛋白质:ESM-2(Meta), AlphaFold(DeepMind), ProtTrans
  • DNA:DNABERT-2, Nucleotide Transformer, Evo
  • 单细胞:scGPT, GeneFormer, scBERT
  • 临床:Med-PaLM, BioGPT

速查表

# === 生信深度学习速查 ===
# 蛋白质结构: AlphaFold (ColabFold在线版)
# 蛋白质嵌入: ESM-2 (pip install fair-esm)
# DNA嵌入: DNABERT-2 (HuggingFace)
# 单细胞: scGPT (GitHub)
# 变异预测: AlphaMissense

# 常用框架: PyTorch > TensorFlow (生信领域)
# GPU需求: 预训练需大量GPU,推理用预训练模型可小GPU