TAPE蛋白质嵌入评估框架:终极指南与入门教程

TAPE蛋白质嵌入评估框架:终极指南与入门教程

【免费下载链接】tapeTasks Assessing Protein Embeddings (TAPE), a set of five biologically relevant semi-supervised learning tasks spread across different domains of protein biology.项目地址: https://gitcode.com/gh_mirrors/tape6/tape

Tasks Assessing Protein Embeddings (TAPE) 是一套用于评估蛋白质嵌入模型的标准化框架,包含五个生物学相关的半监督学习任务,覆盖蛋白质生物学的不同领域。本文将为初学者提供一个完整的TAPE框架入门指南,帮助你快速掌握蛋白质嵌入模型的评估方法。

什么是TAPE蛋白质嵌入评估框架?

TAPE(Tasks Assessing Protein Embeddings)是一个专为蛋白质嵌入模型设计的基准测试框架。它提供了预训练语料库、五个有监督下游任务、预训练语言模型权重以及完整的基准测试代码。TAPE的目标是为蛋白质嵌入模型提供标准化的评估方法,帮助研究人员客观比较不同模型的性能。

该框架最初基于TensorFlow实现,后来更新为PyTorch版本,以提高易用性和促进未来发展。如果你需要复现原始论文的结果,可以使用原始TensorFlow版本,而当前PyTorch版本更适合日常使用和二次开发。

TAPE框架的核心组件

1. 预训练模型

TAPE提供了多种预训练模型,包括:

  • bert-base:基于Transformer的模型
  • babbler-1900:UniRep模型
  • xaa, xab, xac, xad, xae:trRosetta模型的集成版本

这些模型可以通过HuggingFace API轻松加载和使用,无需手动下载权重文件。

2. 评估任务

TAPE包含以下标准评估任务:

  • 语言建模(language_modeling)
  • 掩码语言建模(masked_language_modeling)
  • 二级结构预测(secondary_structure)
  • 接触预测(contact_prediction)
  • 远程同源性检测(remote_homology)
  • 荧光预测(fluorescence)
  • 稳定性预测(stability)
  • trrosetta(仅适用于trrosetta模型)

完整的模型和任务列表可以在tape/datasets.py和tape/models/modeling*.py中找到。

3. 数据集

TAPE提供了多种数据集,包括:

  • 预训练语料库(Pfam)
  • 二级结构数据集
  • 接触预测数据集(ProteinNet)
  • 远程同源性数据集
  • 荧光数据集
  • 稳定性数据集

数据有LMDB和原始JSON两种格式可供选择,默认存放在./data文件夹中,也可以指定其他目录。

快速安装TAPE框架

我们建议在Python虚拟环境中安装TAPE:

$ pip install tape_proteins

这条简单的命令将自动安装所有必要的依赖项,让你快速开始使用TAPE框架。

使用TAPE的基本流程

1. 加载预训练模型

TAPE构建在HuggingFace的transformers库之上,使用其API来定义模型和提供预训练模型。通过这个API,预训练模型将在需要时自动下载并缓存。

import torch from tape import ProteinBertModel, TAPETokenizer model = ProteinBertModel.from_pretrained('bert-base') tokenizer = TAPETokenizer(vocab='iupac') # iupac是TAPE模型的词汇表,UniRep模型使用unirep词汇表 # Pfam家族: Hexapep, Clan: CL0536 sequence = 'GCTVEDRCLIGMGAILLNGCVIGSGSLVAAGALITQ' token_ids = torch.tensor([tokenizer.encode(sequence)]) output = model(token_ids) sequence_output = output[0] pooled_output = output[1]

2. 使用预训练模型嵌入蛋白质序列

给定输入的fasta文件,你可以通过tape-embed命令生成包含蛋白质嵌入的.npz文件:

tape-embed unirep my_input.fasta output_filename.npz babbler-1900 --tokenizer unirep

嵌入函数是完全批处理的,会自动在机器上可用的所有GPU上分配任务。在Titan Xp上,它可以处理大约200个序列/秒。

生成输出文件后,可以像这样加载到numpy中:

arrays = np.load('output_filename.npz', allow_pickle=True) list(arrays.keys()) # 将输出fasta文件中的键名(如果未命名则为'0','1',...) arrays[<protein_id>] # 返回一个字典,包含'pooled'和'avg'键(如果使用--full_sequence_embed标志则为'seq')

3. 训练语言模型

TAPE提供了两个训练命令:tape-traintape-train-distributed。前者使用标准的PyTorch数据分布在所有可用GPU上进行分布式训练,后者使用torch.distributed.launch风格的多处理在指定数量的GPU上进行分布式训练(也可用于多节点分布式训练)。

要训练Transformer进行掩码语言建模,可以运行:

tape-train-distributed transformer masked_language_modeling --batch_size BS --learning_rate LR --fp16 --warmup_steps WS --nproc_per_node NGPU --gradient_accumulation_steps NSTEPS

4. 训练下游任务模型

使用tape-train命令也可以在下游任务上训练模型。只需使用与训练语言模型相同的语法,添加--from_pretrained <path_to_your_saved_results>标志。例如,要在二级结构预测上训练预训练的Transformer:

tape-train-distributed transformer secondary_structure \ --from_pretrained results/<path_to_folder> \ --batch_size BS \ --learning_rate LR \ --fp16 \ --warmup_steps WS \ --nproc_per_node NGPU \ --gradient_accumulation_steps NSTEPS \ --num_train_epochs NEPOCH \ --eval_freq EF \ --save_freq SF

5. 评估下游任务模型

要评估下游任务模型,TAPE提供了tape-eval命令。该命令将输出模型预测以及你指定的一组指标。目前支持均方误差(mse)、平均绝对误差(mae)、Spearman相关系数(spearmanr)和准确率(accuracy)。

命令语法为:

tape-eval MODEL TASK TRAINED_MODEL_FOLDER --metrics METRIC1 METRIC2 ...

例如,要评估在二级结构上训练的Transformer:

tape-eval transformer secondary_structure results/<path_to_trained_model> --metrics accuracy

TAPE框架性能基准

TAPE提供了一个临时排行榜,展示了不同模型在各个任务上的性能。所有排行榜上的模型都使用无监督预训练。

二级结构预测

排名模型准确率(3类)
1.One Hot + Alignment0.80
2.LSTM0.75
2.ResNet0.75
4.Transformer0.73
4.Bepler0.73
4.Unirep0.73
7.One Hot0.69

接触预测

排名模型L/5 Medium + Long Range
1.One Hot + Alignment0.64
2.Bepler0.40
3.LSTM0.39
4.Transformer0.36
5.Unirep0.34
6.ResNet0.29
6.One Hot0.29

远程同源性检测

排名模型Top 1 准确率
1.LSTM0.26
2.Unirep0.23
3.Transformer0.21
4.Bepler0.17
4.ResNet0.17
6.One Hot + Alignment0.09
6.One Hot0.09

荧光预测

排名模型Spearman相关系数
1.Transformer0.68
2.LSTM0.67
2.Unirep0.67
4.Bepler0.33
5.ResNet0.21
6.One Hot0.14

稳定性预测

排名模型Spearman相关系数
1.Transformer0.73
1.Unirep0.73
1.ResNet0.73
4.LSTM0.69
5.Bepler0.64
6.One Hot0.19

如何扩展TAPE框架

TAPE的新仓库经过精心设计,使其更易于理解和扩展。你可以通过添加新模型和新任务来扩展TAPE的功能。有关如何添加新模型和任务的示例,请参见examples文件夹。

数据下载

TAPE的所有数据都托管在AWS上。要下载所有TAPE数据,可以运行download_data.sh脚本。我们还提供了各个数据集的单独链接:

LMDB格式数据

预训练语料库(Pfam) | 二级结构 | 接触预测(ProteinNet) | 远程同源性 | 荧光 | 稳定性

原始数据

原始数据文件以JSON格式存储,以实现最大的可移植性。

预训练语料库(Pfam) | 二级结构 | 接触预测(ProteinNet) | 远程同源性 | 荧光 | 稳定性

开始使用TAPE

要开始使用TAPE框架,首先克隆仓库:

git clone https://gitcode.com/gh_mirrors/tape6/tape

然后按照安装说明设置环境。TAPE提供了详细的文档和示例,帮助你快速上手。无论你是蛋白质结构预测领域的新手还是经验丰富的研究人员,TAPE都能为你提供一个标准化、公正的蛋白质嵌入模型评估平台。

如果你在使用过程中遇到任何问题或有功能需求,请通过GitHub issues与开发团队联系。我们欢迎社区贡献,一起改进这个强大的蛋白质嵌入评估框架!

引用指南

如果你发现TAPE有用,请引用相关论文。此外,任何使用TAPE中提供的数据集的人都必须描述和引用他们使用的所有数据集组件。为方便起见,data_refs.bib包含所有必要的引用。

【免费下载链接】tapeTasks Assessing Protein Embeddings (TAPE), a set of five biologically relevant semi-supervised learning tasks spread across different domains of protein biology.项目地址: https://gitcode.com/gh_mirrors/tape6/tape

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考