用esm模型do蛋白 embedding
2024-01-02 本文已影响0人
马尔代夫Maldives
Github官方文档包含了整个包的所有代码及使用方法:
Github官方文档:https://github.com/facebookresearch/esm
一、python代码实现esm模型蛋白embedding
示例代码见:E:\cgx硬盘\★Python and AI\(cgx★★)生物\esm (Facebook)\esm_protein_embedding\facebook_ems_model_protein_embedding.ipynb
二、整个FASTA文件内蛋白embedding(采用命令行脚本)
1.按官网步骤pip安装esm包;
2.官网下载原文件并解压得到:
image.png3.进入该文件一级目录,在该目录下打开终端并进入安装有esm包的环境,然后运行以下代码(来源于Github官网):
python scripts/extract.py esm2_t33_650M_UR50D examples/data/some_proteins.fasta examples/data/some_proteins_emb_esm2 --repr_layers 0 32 33 --include mean per_tok
说明:
scripts/extract.py:原代码
esm2_t33_650M_UR50D:用到的预训练模型(其他模型可以在官网找)
examples/data/some_proteins.fasta:待embedding的蛋白质fasta文件
examples/data/some_proteins_emb_esm2:存储fasta文件中每个蛋白的embedding结果文件(一个蛋白一个文件),其中some_proteins_emb_esm2是文件夹(目录)名称,如有该目录已经存在则直接用,不存在则自动生成。
--rep -layers: (默认值:final only)选择要包含嵌入的层。
--include: 指定要保存的嵌入。您可以使用以下方法:
- per_tok 完整的序列嵌入(seq_len x hidden_dim),即每个氨基酸都有一个hidden_dim长度的嵌入。
- mean 完整的序列嵌入上的平均值(1 x hidden_dim),即在(seq_len x hidden_dim)的基础上对seq_len方向求平均,结果是所有蛋白质都被表征成了hidden_dim长度的向量。
-
bos 包括序列开始标记的嵌入。(注意:不要与预训练模型一起使用-我们在没有boss令牌监督的情况下进行了训练)
下图是我的实操:
1.png
从上图可以看出,代码首先自动下载了模型,然后自动处理:
预训练模型存储路径.png
代码运行结束后,已经在对应目录下生成了每个蛋白的embedding文件了(以.pt结尾):
自动生成目标文件.png