🚀 Isoformer
Isoformer 是一个能够准确预测差异转录表达的模型,它超越了现有方法,并充分利用了多种模态的数据。该框架能够从三个预训练编码器中高效地迁移知识,这些编码器分别是用于 DNA 模态的 Enformer、用于 RNA 模态的 Nucleotide Transformer v2 以及用于蛋白质模态的 ESM2。
标签与数据集
属性 |
详情 |
标签 |
DNA、RNA、蛋白质、生物学、基因组学 |
数据集 |
InstaDeepAI/multi_omics_transcript_expression |
开发者
由 InstaDeep 开发。
🚀 快速开始
下面是一个简单的代码片段,用于根据 DNA、RNA 和蛋白质序列获取嵌入向量和基因表达预测结果。
基础用法
from transformers import AutoTokenizer, AutoModelForMaskedLM
import numpy as np
import torch
tokenizer = AutoTokenizer.from_pretrained("InstaDeepAI/isoformer", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("InstaDeepAI/isoformer",trust_remote_code=True)
protein_sequences = ["RSRSRSRSRSRSRSRSRSRSRL" * 9]
rna_sequences = ["ATTCCGGTTTTCA" * 9]
sequence_length = 196_608
rng = np.random.default_rng(seed=0)
dna_sequences = ["".join(rng.choice(list("ATCGN"), size=(sequence_length,)))]
torch_tokens = tokenizer(
dna_input=dna_sequences, rna_input=rna_sequences, protein_input=protein_sequences
)
dna_torch_tokens = torch.tensor(torch_tokens[0]["input_ids"])
rna_torch_tokens = torch.tensor(torch_tokens[1]["input_ids"])
protein_torch_tokens = torch.tensor(torch_tokens[2]["input_ids"])
torch_output = model.forward(
tensor_dna=dna_torch_tokens,
tensor_rna=rna_torch_tokens,
tensor_protein=protein_torch_tokens,
attention_mask_rna=rna_torch_tokens != 1,
attention_mask_protein=protein_torch_tokens != 1,
)
print(f"Gene expression predictions: {torch_output['gene_expression_predictions']}")
print(f"Final DNA embedding: {torch_output['final_dna_embeddings']}")
📦 训练数据
Isoformer 在从 GTex 门户获取的 RNA 转录表达数据上进行训练。具体来说,这些数据是来自 5000 多个个体的 30 种组织的转录本 TPM 测量值。总体而言,该数据集包含约 17 万个独特的转录本,其中 9 万个是蛋白质编码转录本,对应约 2 万个独特的基因。