Rna Torsionbert
模型简介
该模型是在约4200个RNA结构上进行预训练的DNABERT改进版本,专门用于从RNA序列预测扭转角和伪扭转角。相较于现有最优模型或传统方法推导的角度值,本模型在测试集上的MCQ评估指标表现更优。
模型特点
高精度扭转角预测
在RNA-Puzzles和CASP-RNA测试集上表现优于现有最优模型
长序列支持
支持最长512个核苷酸的序列预测
多角度预测
可预测16种不同的扭转角和伪扭转角
模型能力
RNA序列分析
扭转角预测
伪扭转角预测
使用案例
RNA结构研究
RNA三级结构预测
通过预测的扭转角辅助RNA三级结构建模
提高RNA结构预测的准确性
RNA功能分析
利用扭转角信息分析RNA分子的功能特性
帮助理解RNA分子结构与功能的关系
🚀 RNA-TorsionBERT
RNA-TorsionBERT
是一个基于BERT的语言模型,参数大小为86.9 MB,可根据RNA序列预测其扭转角和伪扭转角。该模型在约4200个RNA结构上进行了预训练,为RNA相关研究提供了有力支持。
🚀 快速开始
使用以下代码片段,即可开始使用 RNA-TorsionBERT
生成文本:
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("sayby/rna_torsionbert", trust_remote_code=True)
model = AutoModel.from_pretrained("sayby/rna_torsionbert", trust_remote_code=True)
sequence = "ACG CGG GGT GTT"
params_tokenizer = {
"return_tensors": "pt",
"padding": "max_length",
"max_length": 512,
"truncation": True,
}
inputs = tokenizer(sequence, **params_tokenizer)
output = model(inputs)["logits"]
⚠️ 重要提示
该模型是从DNABERT - 3模型微调而来,因此分词器与DNABERT使用的分词器相同。输入序列中的核苷酸
U
应替换为T
。输出是每个角度的正弦和余弦值。角度顺序如下:
alpha
、beta
、gamma
、delta
、epsilon
、zeta
、chi
、eta
、theta
、eta'
、theta'
、v0
、v1
、v2
、v3
、v4
。
若要将预测结果转换为角度,可使用以下代码片段:
import transformers
from transformers import AutoModel, AutoTokenizer
import numpy as np
import pandas as pd
from typing import Optional, Dict
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
transformers.logging.set_verbosity_error()
BACKBONE = [
"alpha",
"beta",
"gamma",
"delta",
"epsilon",
"zeta",
"chi",
"eta",
"theta",
"eta'",
"theta'",
"v0",
"v1",
"v2",
"v3",
"v4",
]
class RNATorsionBERTHelper:
def __init__(self):
self.model_name = "sayby/rna_torsionbert"
self.tokenizer = AutoTokenizer.from_pretrained(
self.model_name, trust_remote_code=True
)
self.params_tokenizer = {
"return_tensors": "pt",
"padding": "max_length",
"max_length": 512,
"truncation": True,
}
self.model = AutoModel.from_pretrained(self.model_name, trust_remote_code=True)
def predict(self, sequence: str):
sequence_tok = self.convert_raw_sequence_to_k_mers(sequence)
inputs = self.tokenizer(sequence_tok, **self.params_tokenizer)
outputs = self.model(inputs)["logits"]
outputs = self.convert_sin_cos_to_angles(
outputs.cpu().detach().numpy(), inputs["input_ids"]
)
output_angles = self.convert_logits_to_dict(
outputs[0, :], inputs["input_ids"][0, :].cpu().detach().numpy()
)
output_angles.index = list(sequence)[:-2] # Because of the 3-mer representation
return output_angles
def convert_raw_sequence_to_k_mers(self, sequence: str, k_mers: int = 3):
"""
Convert a raw RNA sequence into sequence readable for the tokenizer.
It converts the sequence into k-mers, and replace U by T
:return: input readable by the tokenizer
"""
sequence = sequence.upper().replace("U", "T")
k_mers_sequence = [
sequence[i : i + k_mers]
for i in range(len(sequence))
if len(sequence[i : i + k_mers]) == k_mers
]
return " ".join(k_mers_sequence)
def convert_sin_cos_to_angles(
self, output: np.ndarray, input_ids: Optional[np.ndarray] = None
):
"""
Convert the raw predictions of the RNA-TorsionBERT into angles.
It converts the cos and sinus into angles using:
alpha = arctan(sin(alpha)/cos(alpha))
:param output: Dictionary with the predictions of the RNA-TorsionBERT per angle
:param input_ids: the input_ids of the RNA-TorsionBERT. It allows to only select the of the sequence,
and not the special tokens.
:return: a np.ndarray with the angles for the sequence
"""
if input_ids is not None:
output[
(input_ids == 0)
| (input_ids == 2)
| (input_ids == 3)
| (input_ids == 4)
] = np.nan
pair_indexes, impair_indexes = np.arange(0, output.shape[-1], 2), np.arange(
1, output.shape[-1], 2
)
sin, cos = output[:, :, impair_indexes], output[:, :, pair_indexes]
tan = np.arctan2(sin, cos)
angles = np.degrees(tan)
return angles
def convert_logits_to_dict(self, output: np.ndarray, input_ids: np.ndarray) -> Dict:
"""
Convert the raw predictions into dictionary format.
It removes the special tokens and only keeps the predictions for the sequence.
:param output: predictions from the models in angles
:param input_ids: input ids from the tokenizer
:return: a dictionary with the predictions for each angle
"""
index_start, index_end = (
np.where(input_ids == 2)[0][0],
np.where(input_ids == 3)[0][0],
)
output_non_pad = output[index_start + 1 : index_end, :]
output_angles = {
angle: output_non_pad[:, angle_index]
for angle_index, angle in enumerate(BACKBONE)
}
out = pd.DataFrame(output_angles)
return out
if __name__ == "__main__":
sequence = "AGGGCUUUAGUCUUUGGAG"
rna_torsionbert_helper = RNATorsionBERTHelper()
output_angles = rna_torsionbert_helper.predict(sequence)
print(output_angles)
✨ 主要特性
- 扭转角和伪扭转角预测:能够精准预测RNA的扭转角和伪扭转角。
- 长序列处理能力:可处理长度达512个核苷酸的序列。
📚 详细文档
模型描述
RNA-TorsionBERT
是一个参数为86.9 MB的基于BERT的语言模型,可根据RNA序列预测其扭转角和伪扭转角。它是在约4200个RNA结构上进行预训练的DNABERT模型。
在测试集(由RNA - Puzzles和CASP - RNA组成)上,与之前的先进模型(如 SPOT - RNA - 1D)或现有方法推断的角度相比,RNA-TorsionBERT
在 MCQ 指标上有显著提升。
📄 许可证
Other
Esm2 T36 3B UR50D
MIT
ESM-2是基于掩码语言建模目标训练的新一代蛋白质模型,适用于各类以蛋白质序列为输入的下游任务微调。
蛋白质模型
Transformers

E
facebook
3.5M
22
Esm2 T6 8M UR50D
MIT
ESM-2是基于掩码语言建模目标训练的新一代蛋白质模型,适用于对蛋白质序列进行各类任务的微调。
蛋白质模型
Transformers

E
facebook
1.5M
21
Esm2 T33 650M UR50D
MIT
ESM-2是基于掩码语言建模目标训练的最先进蛋白质模型,适用于对蛋白质序列进行分析和预测任务
蛋白质模型
Transformers

E
facebook
640.23k
41
Esm2 T12 35M UR50D
MIT
ESM-2是基于掩码语言建模目标训练的前沿蛋白质模型,适用于各类蛋白质序列分析任务
蛋白质模型
Transformers

E
facebook
332.83k
15
Prot Bert
基于BERT架构的蛋白质序列预训练模型,通过自监督学习捕捉蛋白质序列的生物物理特性
蛋白质模型
Transformers

P
Rostlab
276.10k
111
Prostt5
MIT
ProstT5是一种蛋白质语言模型,能够在蛋白质序列与结构之间进行翻译。
蛋白质模型
Transformers

P
Rostlab
252.91k
23
Prot T5 Xl Uniref50
基于T5-3B架构的蛋白质序列预训练模型,通过自监督学习捕捉蛋白质的生物物理特性
蛋白质模型
Transformers

P
Rostlab
78.45k
44
Esm2 T30 150M UR50D
MIT
ESM-2是基于遮蔽语言建模目标训练的最先进蛋白质模型,适用于对各类以蛋白质序列为输入的任务进行微调。
蛋白质模型
Transformers

E
facebook
69.91k
7
Prot Bert Bfd
基于Bert架构的蛋白质序列预训练模型,通过自监督学习从21亿蛋白质序列中提取生物物理特征
蛋白质模型
Transformers

P
Rostlab
30.60k
16
Esm1b T33 650M UR50S
MIT
ESM-1b是基于Transformer的蛋白质语言模型,通过无监督学习蛋白质序列数据,可用于蛋白质结构和功能预测。
蛋白质模型
Transformers

E
facebook
24.20k
18
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98