项目介绍:Nucleotide Transformer 和 SegmentNT
这是一个由InstaDeep发布的开源项目,展示了用于基因组语言建模的先进工具。在这个项目中,可以找到两种主要类型的模型:Nucleotide Transformer模型和SegmentNT模型,它们使用特定的技术帮助研究人员更好地理解和预测DNA序列中的信息。
Nucleotide Transformer模型
Nucleotide Transformer模型是一系列使用变压器技术进行基因组语言建模的工具。这些模型的特别之处在于,它们不仅利用单一参考基因组的信息,还结合了来自3200多种不同人类基因组的DNA序列,以及850种不同物种的基因组数据。这些庞大的模型通过严格和广泛的评估,展示了在分子表型预测中的极高准确性。
此项目中的Nucleotide Transformer模型是与Nvidia和TUM合作开发的,使用了强大的计算资源进行训练,提升了对不同基因组任务的预测表现。
Agro Nucleotide Transformer模型
Agro Nucleotide Transformer模型是专为农业领域所设计的。它被训练在48种植物的参考基因组上,特别侧重于作物物种。在多个预测任务中,比如调控特征、RNA加工和基因表达,AgroNT展现了出色的性能,达到了当前最先进的水平。
SegmentNT模型
SegmentNT模型是使用Nucleotide Transformer作为骨干开发的细分模型。这些模型的核心技术是使用1维U-Net分割头,以单核苷酸分辨率预测DNA序列中多个种类的基因组元素的位置。这些元素包括蛋白质编码基因、lncRNA、外显子、内含子等,模型在此任务上表现出色,与最先进的U-Net分割架构相比,展示了卓越的性能。
使用指南
如何开始
- 克隆该存储库到本地机器。
- 通过运行
pip install .
来安装所需的软件包。
安装完成后,可以使用简单的几行代码下载并进行推断。
import haiku as hk
import jax
import jax.numpy as jnp
from nucleotide_transformer.pretrained import get_pretrained_model
# 获取预训练模型
parameters, forward_fn, tokenizer, config = get_pretrained_model(
model_name="500M_human_ref",
embeddings_layers_to_save=(20,),
max_positions=32,
)
forward_fn = hk.transform(forward_fn)
# 数据准备与标记化
sequences = ["ATTCCGATTCCGATTCCG", "ATTTCTCTCTCTCTCTGAGATCGATCGATCGAT"]
tokens_ids = [b[1] for b in tokenizer.batch_tokenize(sequences)]
tokens_str = [b[0] for b in tokenizer.batch_tokenize(sequences)]
tokens = jnp.asarray(tokens_ids, dtype=jnp.int32)
# 初始化随机密钥
random_key = jax.random.PRNGKey(0)
# 推断
outs = forward_fn.apply(parameters, random_key, tokens)
# 在指定层获取嵌入
print(outs["embeddings_20"].shape)
Supported model names include:
- 500M_human_ref
- 500M_1000G
- 2B5_1000G
- 2B5_multi_species
- 50M_multi_species_v2
- 100M_multi_species_v2
- 250M_multi_species_v2
- 500M_multi_species_v2
- 1B_agro_nt
Tokenization详解
模型训练时使用的序列长度上限为1000个标记,包括自动添加到序列开头的<CLS>标记。标记器从左到右开始,通过将字母"A", "C", "G"和"T"组合成6-mer进行标记化。
贡献和致谢
该项目得到了多个研究人员和团队的支持,包括Nvidia, TUM, Google等的参与,他们提供了宝贵的计算资源和技术支持。若您在研究中使用了此项目的内容,请根据相关文献进行引用。
常见问题与反馈
如果对代码或模型有任何疑问或反馈,用户可以与开发团队进行联系。我们感谢您对我们工作的兴趣!