RNA Foundation Models
RNA 在基因表达调控中扮演核心角色,从转录、剪接、翻译到降解的每个环节都受到精密调控。RNA Foundation Models 通过学习大规模 RNA 序列数据,捕捉序列-结构-功能关系,能够预测 RNA 稳定性、剪接模式、二级结构、蛋白质相互作用等关键特性。
RNA 的独特性
RNA vs DNA
功能多样性: - DNA: 主要负责信息存储 - RNA: - mRNA: 蛋白质编码 - tRNA: 翻译适配器 - rRNA: 核糖体组成 - ncRNA: 调控功能(miRNA, lncRNA, circRNA)
结构复杂性: - DNA: 双链螺旋,结构相对稳定 - RNA: 单链,形成复杂二级/三级结构(发夹、假结、茎环)
化学差异: - RNA 含核糖(ribose),DNA 含脱氧核糖 - RNA 使用尿嘧啶(U)代替胸腺嘧啶(T) - RNA 更易降解
为什么需要 RNA Foundation Models?
挑战: 1. 序列-结构耦合: RNA 功能依赖于二级/三级结构 2. 剪接复杂性: 一个基因可产生多个 mRNA 异构体 3. 表达调控: mRNA 稳定性、定位、翻译效率 4. RNA 修饰: m6A, pseudouridine 等化学修饰影响功能
Foundation Models 的优势: - 整合序列和结构信息 - 学习跨物种保守模式 - 迁移到低资源 RNA 类型 - 预测修饰位点和功能效应
经典模型
1. RNA-FM(2022)
全称: RNA Foundation Model
架构: BERT-like Transformer
训练数据: - RNAcentral 数据库 - 23.7M RNA 序列 - 涵盖多种 RNA 类型(mRNA, rRNA, tRNA, ncRNA)
预训练任务: - Masked Language Modeling(MLM)
输入表示: 单核苷酸 token(A, U, G, C)
模型规模: - 约 100M 参数 - 12 层 Transformer
下游任务: - RNA 二级结构预测 - ncRNA 分类 - RNA-蛋白质相互作用预测 - RNA 修饰位点预测
性能: - 在多个 RNA 任务上超越从头训练的模型 - 零样本迁移到新 RNA 类型
代码示例:
import torch
import fm
# 加载 RNA-FM
model, alphabet = fm.pretrained.rna_fm_t12()
batch_converter = alphabet.get_batch_converter()
model.eval()
# RNA 序列
data = [
("RNA1", "GGGAAACCC"),
("RNA2", "UCGAUCGAUCGAU"),
]
# 准备批次
batch_labels, batch_strs, batch_tokens = batch_converter(data)
# 提取特征
with torch.no_grad():
results = model(batch_tokens, repr_layers=[12])
token_embeddings = results["representations"][12]
print(f"嵌入形状: {token_embeddings.shape}")
# 输出: (batch_size, seq_len, hidden_dim)论文: Chen, J. et al. (2022). Interpretable RNA Foundation Model from Unannotated Data for Highly Accurate RNA Structure and Function Predictions. arXiv:2204.00300.
2. RNABert(2023)
架构: BERT
训练数据: - RNAcentral + Rfam - 约 30M RNA 序列
特点: - 专注于 ncRNA(非编码 RNA) - 学习 RNA 家族特征 - 支持 RNA 功能预测
输入表示: k-mer(类似 DNABERT)
下游任务: - RNA 家族分类 - ncRNA 功能注释 - RNA 相互作用预测
3. SpliceBERT(2023)
专门化: 专注于 mRNA 剪接
架构: BERT
训练数据: - 人类外显子-内含子边界序列 - GENCODE 注释
预训练任务: - MLM - 剪接位点分类(供体/受体/非剪接位点)
下游任务: - 剪接位点预测 - 可变剪接事件检测 - 剪接因子结合预测
性能: - 在剪接位点预测上达到 SOTA - 预测罕见/隐性剪接位点
代码示例:
from transformers import AutoTokenizer, AutoModel
# 加载 SpliceBERT
tokenizer = AutoTokenizer.from_pretrained("biomed-ai/splicebert-510nt")
model = AutoModel.from_pretrained("biomed-ai/splicebert-510nt")
# mRNA 序列(外显子-内含子边界)
sequence = "AGGUAAGU...CAGGU" # 供体位点附近序列
# Tokenize
inputs = tokenizer(sequence, return_tensors="pt")
# 提取嵌入
with torch.no_grad():
outputs = model(**inputs)
embeddings = outputs.last_hidden_state
print(f"嵌入: {embeddings.shape}")论文: Chen, K. et al. (2023). SpliceBERT: A pre-trained model for splice site prediction. bioRxiv.
4. RNA-MSM(Multi-Species Model)(2023)
特点: 跨物种 RNA 预训练
训练数据: - 多物种 RNA 序列(细菌、古菌、真核生物) - 学习进化保守特征
应用: - 跨物种功能预测 - 比较转录组学
5. UTR-LM(2023)
专门化: 5’ 和 3’ UTR(非翻译区)
训练数据: - 人类 5’UTR 和 3’UTR 序列 - eCLIP 数据(RBP 结合)
下游任务: - mRNA 稳定性预测 - 翻译效率预测 - RBP(RNA 结合蛋白)结合位点预测 - miRNA 靶标预测
应用: - mRNA 疫苗设计(优化 UTR 提高稳定性) - 基因治疗载体优化
应用场景
1. RNA 二级结构预测
任务: 预测 RNA 的二级结构(碱基配对模式)
传统方法: - ViennaRNA: 基于热力学自由能最小化 - RNAfold: 动态规划算法
深度学习方法: - SPOT-RNA: CNN + LSTM - E2Efold: 端到端学习 - RNA-FM + 结构预测头: 预训练 + 微调
评估指标: - F1 score(碱基配对预测) - Matthews Correlation Coefficient(MCC)
代码示例:
# 使用 RNA-FM 预测二级结构
import fm
import torch
# 加载模型
model, alphabet = fm.pretrained.rna_fm_t12()
model.eval()
# RNA 序列
sequence = "GGGAAACCCUUUGGGUUUCCC"
# 编码
batch_converter = alphabet.get_batch_converter()
data = [("RNA", sequence)]
_, _, batch_tokens = batch_converter(data)
# 预测接触图
with torch.no_grad():
results = model(batch_tokens, need_head_weights=True)
attention = results["attentions"] # 注意力权重可用于接触预测
# 解析二级结构(简化示例)
# 实际需要后处理将注意力转换为配对概率2. mRNA 稳定性预测
任务: 预测 mRNA 的半衰期
重要性: - mRNA 疫苗设计(提高稳定性) - 基因表达调控理解 - 治疗性 mRNA 优化
特征: - 5’ UTR 序列 - 3’ UTR 序列(ARE 元件) - Poly(A) 尾长度 - 密码子优化
数据集: - Saluki dataset(人类 mRNA 半衰期) - 高通量测序实验数据
代码示例:
from transformers import AutoModelForSequenceClassification
# 假设已微调的 mRNA 稳定性预测模型
model = AutoModelForSequenceClassification.from_pretrained(
"rna-stability-model",
num_labels=1 # 回归:预测半衰期
)
# mRNA 序列(5'UTR + CDS + 3'UTR)
mrna_sequence = "AGCUAGCU...AAAAAA"
# Tokenize
inputs = tokenizer(mrna_sequence, return_tensors="pt")
# 预测半衰期
with torch.no_grad():
outputs = model(**inputs)
predicted_half_life = outputs.logits.item()
print(f"预测半衰期: {predicted_half_life} 小时")3. 剪接预测
任务: 预测可变剪接事件
剪接类型: - 外显子跳跃(Exon Skipping, SE) - 可变 5’ 剪接位点(A5SS) - 可变 3’ 剪接位点(A3SS) - 内含子保留(Intron Retention, IR) - 互斥外显子(Mutually Exclusive Exons, MXE)
工具: - SpliceAI: 深度学习剪接预测(CNN) - SpliceBERT: 基于 Transformer - MMSplice: 模块化剪接模型
应用: - 疾病相关剪接变异识别 - 剪接调控机制研究
代码示例:
# 使用 SpliceAI 预测剪接效应
from spliceai import predict_splice
sequence = "AGGTAAGT...TGCAG" # 包含剪接位点的序列
position = 100 # 变异位置
# 预测
scores = predict_splice(sequence, position)
print(f"供体位点增益: {scores['donor_gain']}")
print(f"受体位点损失: {scores['acceptor_loss']}")4. RNA 修饰预测
常见 RNA 修饰: - m6A(N6-甲基腺苷): 最常见的 mRNA 修饰 - pseudouridine(Ψ): 假尿苷 - m5C(5-甲基胞嘧啶) - m1A(N1-甲基腺苷)
功能: - 影响 mRNA 稳定性 - 调控翻译效率 - 影响 RNA 结构
预测方法: - 基于序列 motif(DRACH 为 m6A motif) - 深度学习模型(CNN, RNN, Transformer)
数据集: - MeRIP-seq / m6A-seq 数据 - 高通量修饰检测数据
代码示例:
# 预测 m6A 修饰位点
def predict_m6a(sequence, model, tokenizer):
"""
预测序列中的 m6A 修饰位点
"""
inputs = tokenizer(sequence, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
probs = torch.sigmoid(outputs.logits)
# 找到高概率位点
m6a_sites = (probs > 0.5).nonzero(as_tuple=True)[1]
return m6a_sites.tolist()
# 示例
rna_seq = "AGACUGGACUUAAA"
sites = predict_m6a(rna_seq, model, tokenizer)
print(f"预测 m6A 位点: {sites}")5. RNA-蛋白质相互作用预测
任务: 预测 RNA 结合蛋白(RBP)的结合位点
重要性: - 理解转录后调控 - 识别 RBP 靶标 - 设计 RNA 干扰工具
方法: - CLIP-seq 数据: 交联免疫沉淀测序 - 深度学习: 学习 RBP 结合 motif
数据集: - ENCODE eCLIP 数据 - 数百个 RBP 的结合谱
代码示例:
# RBP 结合预测
class RBPBindingPredictor(nn.Module):
def __init__(self, rna_model):
super().__init__()
self.rna_encoder = rna_model
self.classifier = nn.Linear(rna_model.config.hidden_size, 1)
def forward(self, input_ids):
embeddings = self.rna_encoder(input_ids).last_hidden_state
pooled = embeddings.mean(dim=1) # 平均池化
logits = self.classifier(pooled)
return logits
# 预测
model = RBPBindingPredictor(rna_fm_model)
sequence = "AGCUAGCU"
prediction = model(tokenizer(sequence, return_tensors="pt")["input_ids"])
print(f"RBP 结合概率: {torch.sigmoid(prediction).item()}")6. 单细胞 RNA 分析
任务: 从单细胞 RNA-seq 数据中识别细胞类型、状态、轨迹
传统工具: - Scanpy, Seurat(基于统计方法)
Foundation Model 增强: - scGPT: 单细胞基因表达 Transformer - Geneformer: 单细胞基因表达基础模型 - scBERT: 单细胞 BERT
应用: - 细胞类型注释 - 细胞轨迹推断 - 基因扰动预测 - 细胞-细胞通讯
技术细节
输入表示
单核苷酸 tokenization:
sequence = "AUCGAUCG"
tokens = ["A", "U", "C", "G", "A", "U", "C", "G"]k-mer tokenization:
sequence = "AUCGAUCG"
k = 3
kmers = ["AUC", "UCG", "CGA", "GAU", "AUC", "UCG"]结构感知编码: - 同时编码序列和二级结构 - 使用括号记号表示配对:(((...)))
预训练策略
Masked Language Modeling(MLM):
原始序列: A U C G A U C G
遮盖序列: A [MASK] C G [MASK] U C G
预测目标: U, A
结构预测任务: - 预测碱基配对 - 预测接触图
对比学习: - 学习相似 RNA 的表示相近 - 区分不同功能的 RNA
数据资源
RNA 序列数据库
- RNAcentral: 非编码 RNA 综合数据库
- Rfam: RNA 家族数据库
- GENCODE: 人类和小鼠基因注释
- miRBase: miRNA 数据库
实验数据
- ENCODE: 表观基因组和转录组数据
- GTEx: 人类组织基因表达
- GEO: 基因表达数据库
结构数据
- PDB: RNA 三维结构
- RNA Strand: RNA 二级结构数据库
- bpRNA: 大规模 RNA 二级结构数据集
评估指标
分类任务
- 准确率(Accuracy)
- AUROC / AUPRC
- F1 Score
结构预测
- F1 Score: 碱基配对预测
- PPV / Sensitivity: 阳性预测值 / 灵敏度
- MCC: Matthews 相关系数
回归任务
- Pearson / Spearman 相关系数
- RMSE / MAE
模型比较
| 模型 | 架构 | 训练数据 | 参数量 | 专门化 | 特点 |
|---|---|---|---|---|---|
| RNA-FM | BERT | RNAcentral (23.7M) | 100M | 通用 | 多 RNA 类型 |
| RNABert | BERT | RNAcentral + Rfam | 未公开 | ncRNA | 家族分类 |
| SpliceBERT | BERT | 人类剪接位点 | 未公开 | 剪接 | 高精度剪接预测 |
| UTR-LM | BERT | 人类 UTR | 未公开 | UTR | 稳定性/翻译 |
| RNA-MSM | Transformer | 多物种 | 未公开 | 跨物种 | 进化保守性 |
实践工具
RNA-FM
GitHub: RNA-FM
# 安装
pip install rna-fm
# 提取特征
python scripts/extract_features.py \
--model rna_fm_t12 \
--fasta input.fasta \
--output embeddings.ptViennaRNA(传统方法对比)
import RNA
# 序列
sequence = "GGGAAACCC"
# 预测最小自由能结构
structure, mfe = RNA.fold(sequence)
print(f"结构: {structure}")
print(f"MFE: {mfe} kcal/mol")
# 配对概率
fc = RNA.fold_compound(sequence)
fc.pf()
bp_prob = fc.bpp()挑战与未来方向
当前挑战
- 结构复杂性
- 三级结构预测困难
- 假结(pseudoknot)难以建模
- 数据稀缺
- 实验标注数据少
- 某些 RNA 类型研究不足
- 长序列建模
- lncRNA 可达数万碱基
- 上下文窗口限制
- 动态性
- RNA 结构动态变化
- 细胞环境影响
未来方向
- 序列-结构联合建模
- 同时预测序列和结构
- 学习结构-功能关系
- 多模态 RNA 模型
- 整合序列、结构、表达、修饰数据
- 全面理解 RNA 功能
- 可解释 RNA 模型
- 识别功能 motif
- 理解调控机制
- RNA 设计
- 从功能到序列的逆向设计
- mRNA 疫苗、治疗性 RNA 优化
- 动态建模
- 捕捉 RNA 结构动态
- 模拟折叠路径
学习资源
论文
- Chen, J. et al. (2022). RNA-FM. arXiv:2204.00300.
- Jaganathan, K. et al. (2019). SpliceAI. Cell.
- Chen, K. et al. (2023). SpliceBERT. bioRxiv.
在线资源
课程
- RNA Biology (MIT OpenCourseWare)
- Computational RNA Biology (Coursera)
相关链接
更新时间:2026-09-29