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-train和tape-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 NSTEPS4. 训练下游任务模型
使用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 SF5. 评估下游任务模型
要评估下游任务模型,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 accuracyTAPE框架性能基准
TAPE提供了一个临时排行榜,展示了不同模型在各个任务上的性能。所有排行榜上的模型都使用无监督预训练。
二级结构预测
| 排名 | 模型 | 准确率(3类) |
|---|---|---|
| 1. | One Hot + Alignment | 0.80 |
| 2. | LSTM | 0.75 |
| 2. | ResNet | 0.75 |
| 4. | Transformer | 0.73 |
| 4. | Bepler | 0.73 |
| 4. | Unirep | 0.73 |
| 7. | One Hot | 0.69 |
接触预测
| 排名 | 模型 | L/5 Medium + Long Range |
|---|---|---|
| 1. | One Hot + Alignment | 0.64 |
| 2. | Bepler | 0.40 |
| 3. | LSTM | 0.39 |
| 4. | Transformer | 0.36 |
| 5. | Unirep | 0.34 |
| 6. | ResNet | 0.29 |
| 6. | One Hot | 0.29 |
远程同源性检测
| 排名 | 模型 | Top 1 准确率 |
|---|---|---|
| 1. | LSTM | 0.26 |
| 2. | Unirep | 0.23 |
| 3. | Transformer | 0.21 |
| 4. | Bepler | 0.17 |
| 4. | ResNet | 0.17 |
| 6. | One Hot + Alignment | 0.09 |
| 6. | One Hot | 0.09 |
荧光预测
| 排名 | 模型 | Spearman相关系数 |
|---|---|---|
| 1. | Transformer | 0.68 |
| 2. | LSTM | 0.67 |
| 2. | Unirep | 0.67 |
| 4. | Bepler | 0.33 |
| 5. | ResNet | 0.21 |
| 6. | One Hot | 0.14 |
稳定性预测
| 排名 | 模型 | Spearman相关系数 |
|---|---|---|
| 1. | Transformer | 0.73 |
| 1. | Unirep | 0.73 |
| 1. | ResNet | 0.73 |
| 4. | LSTM | 0.69 |
| 5. | Bepler | 0.64 |
| 6. | One Hot | 0.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),仅供参考