跳转到主要内容

蛋白质序列中单氨基酸变异效应的预测器(https://doi.org/10.1007/s00439-021-02411-y)

项目描述

目录

[[目录]]

VESPA -- Variant Effect Score Prediction without Alignments

VESPA 是一个简单而强大的单氨基酸变异效应(SAV)预测器,基于蛋白质语言模型 ProtT5 的嵌入。

基于单序列的SAV效应预测被设置为多阶段管道,包括(1)生成 ProtT5 嵌入,(2)提取每个残基的保守性预测,(3)(可选)提取每个变异的log-odds比率,以及(4)预测所有可能的氨基酸替换效应。步骤(4)可以通过使用带有(2)和(3)作为输入的 VESPA 或使用计算效率更高的方法 VESPA-light(VESPAl)只作为输入的步骤(2),以略微降低预测性能来完成。

有关 VESPAVESPAl 的详细信息,请参阅我们的论文,蛋白质语言模型的嵌入预测保守性和变异效应(Marquet等,2021)。以下展示了 VESPA 在与SOTA方法比较时的性能。

预计算VESPA和VESPA-light预测

目前,这里已提供了针对39个DMS实验的预计算的VESPAVESPAl预测结果:(Marquet等,2021)的补充文件3。此外,VESPAl预测结果还适用于人类蛋白质组(下载时间:2022年1月22日)以及果蝇(黑腹果蝇)蛋白质组(下载时间:2022年3月1日)。

使用方法

安装VESPA的首选方法是使用pip

pip install vespa-effect

输入文件

必需:包含所有野生型序列的单一FASTA文件(注意:此文件可以包含任意数量的序列)。

可选:如果您只对可能突变的子集(特定突变)感兴趣,可以在快速入门中的代码行中添加-m mutations.txt(注意:默认情况下考虑所有突变)。点击此处查看mutations.txt文件格式的说明。


快速入门

为了简化本指南,我们将假设一个包含所有数据的文件夹:例如,FASTA文件位于data/sequences.fasta,而(可选的)mutations.txt位于data/mutations.txt

安装存储库后,您可以运行以下操作:

vespa data/sequences.fasta --prott5_weights_cache data/cache

默认情况下,这将为所有可能的突变运行VESPAl。它将在您的当前工作目录中生成一个名为vespa_run_directory的新文件夹。在此文件夹中,您将找到包含输入特征(嵌入,保守性预测)的两个文件以及一个包含所有可能突变每个序列的VESPAl预测.csv文件的输出文件夹。更多详细信息请参见输出

警告 生成嵌入需要强大的GPU(我们建议至少有12GB的VRAM)。运行VESPA也是如此。有关更多信息,请参阅步骤1:生成嵌入步骤3:提取掩码边缘概率的对数优势比

可选:

  • 如果您已经提供了预计算的嵌入,可以使用这些嵌入而不是生成新的嵌入,方法是在代码行中添加--use_existing_embeddings后跟文件位置。然后运行VESPAl将不需要GPU。
  • 如果您有GPU可用,可以通过在上述代码行中添加--vespa来生成VESPA预测。运行VESPA后,您将在文件夹vespa_run_directory中找到另一个包含对数优势比的文件,作为额外的输入。
  • 使用--prott5_weights_cache后跟文件夹路径指定缓存文件夹的位置(或预加载的ProtT5权重)。通过将权重下载到该文件夹,而不是在每次运行VESPA和/或VESPAl时都下载权重,可以下载权重或如果已存在则重新使用。
  • 如果您还想输出除默认的预测.csv文件外的单个[.h5文件](#.h5 files),请添加--h5_output后跟输出文件位置。如果您只对.h5文件感兴趣,请添加--no_csv

以下您可以找到有关如何单独运行VESPAVESPAl每个步骤的信息。运行vespa脚本将自动为您执行以下子步骤(您选择的可选规格)。如果您对特定中间结果感兴趣,请使用子步骤。


VESPAVESPAl的子步骤

以下步骤可以单独运行,并且可以针对FASTA文件中包含的任意数量的序列。

步骤1:提取ProtT5嵌入

要运行VESPA和/或VESPAl以获取SAV预测,您需要序列的ProtT5嵌入。如果您有GPU,您可以使用包含的嵌入脚本在自己的机器上生成蛋白质嵌入。

vespa_emb data/sequences.fasta -o data/embeddings.h5  --prott5_weights_cache data/cache

如您所见,您需要指定输出文件位置(-o),以及您输入序列的FASTA文件位置。

可选--prott5_weights_cache指定一个缓存目录以存储ProtT5权重。如果没有提供,上述行将在每次运行VESPA和/或VESPAl时将权重下载到您的当前工作目录。

步骤 2:保守性预测

VESPAVESPAl使用每残基保守性预测作为输入。要生成它们,请在VESPA文件夹中运行以下命令:

vespa_conspred data/embeddings.h5 -o data/conspred.h5

我们保守性预测器的输入是ProtT5嵌入。在您的输出文件(-o)中,您将找到需要的9状态保守性概率(每残基),作为模型的输入。有关保守性预测的更多详细信息,请参阅上述论文。

可选:如果您想生成包含预测的保守性类别的文件而不是分配的类别概率,请在上面添加--output_classes

步骤 3:掩码边际概率的对数似然比

此步骤需要GPU!VESPAVESPAl在预测性能上有所不同,同时所需的输入也有所不同。如果您只想运行VESPAl,可以跳过此步骤。

要生成VESPA所需的掩码边际概率的对数似然比,请在VESPA文件夹中运行以下命令:

vespa_logodds data/sequences.fasta -o data/logodds.h5 

可选:

  • 要运行包括突变文件的日志概率脚本,请在上述代码行中添加-m data/mutations.txt
  • 默认情况下,上述命令生成后续步骤所需的.h5文件。我们提供两种选项,通过在上述代码行末添加--single_csv data/single_logodds.csv--csv_dir data/csv_dir/来输出对数似然分数的可读版本。第一个选项生成包含所有序列和SAVs的单个csv文件。对于大型集,我们建议使用第二个选项,该选项按给定FASTA文件的序列ID输出多个csv文件。.csv文件的格式在下面描述。

步骤 4:运行VESPA和/或VESPAl

现在您已经拥有了运行VESPA和/或VESPAl所需的所有数据。默认情况下,vespa脚本将只预测VESPAl的SAV效果。要显式启用VESPA,请添加--vespa(这将运行两个模型),要禁用VESPAl,请添加--no-vespal。要生成预测,请执行以下代码(在VESPA文件夹中):

  • 两者(如果您计算了保守性预测和对数似然)

    vespa_run --vespa data/conspred_probs.h5 data/sequences.fasta --T5_input data/logodds.h5 --output predictions/
    
  • 仅VESPA(如果您计算了保守性预测和对数似然)

    vespa_run --vespa --no-vespal data/conspred_probs.h5 data/sequences.fasta -T5_input data/logodds.h5 --output predictions/
    
  • 仅VESPAl(如果您只计算了保守性预测)

    vespa_run data/conspred_probs.h5 data/sequences.fasta --output predictions/
    

可选:如果您想输出一个单[.h5文件](#.h5 files)以及默认的.csv预测文件,请添加--h5_output后跟输出位置。如果您只对.h5文件感兴趣,请添加--no_csv并删除--output predictions/。更多详细信息可以在输出下找到。

注意:结果文件的格式在VESPA和VESPAl输出部分下面描述。


其他信息

提取原始重建概率

您可能对从ProtT5提取每个突变位置的原始重建概率感兴趣。这些原始重建概率用于计算对数似然比,并在相应的出版物中进行了更详细的解释。要这样做,请使用

vespa_logodds -r --reconstruction_output data/reconstruction_probas data/sequences.fasta -o data/logodds.h5 

可选:添加突变文件。

生成的数据集在 .h5 文件 中包含概率向量,这些向量决定了所有氨基酸的重构概率,并按照 config.py 中的 MUTATION_ORDER 进行排序。如果某个特定的突变没有被计算(即,该位置不在 mutation.txt 中),它包含 -1。

文件规范

本节描述了 VESPAVESPAl 相关的文件格式。

突变文件

一个简单的文本文件,每行包含一个蛋白质 ID 和一个突变(即,突变由换行符 \n 分隔)。每个突变应通过 <PROTEIN_ID>_<SAV-String> 分隔,其中 <SAV-String> 为默认值。默认的 <SAV-String> 格式如下: <fromAA><0-basedSequencePosition><toAA>

序列 ID 需要与序列 FASTA 文件中的 ID 相等。SAV 字符串的格式为: <Original Amino Acid><Position><Replacement Amino Acid>

示例

ENSP00000355206_I0L
ENSP00000355206_I0V
ENSP00000355206_I0L
ENSP00000355206_I0K
ENSP00000355206_I0T

可选:如果您有一个包含 1-based 突变的文件,请添加标志 --one_based_mutations

.h5 文件

多个脚本生成 .h5 文件。这些文件遵循 hdf5-standard,并可以使用库 h5py 在 python 中进行处理。通常,文件被分割成可以由 FASTA 文件中的蛋白质访问号访问的数据集。数据集在相应的 输出部分 中有更详细的解释。

保守性输出

保守性预测将输出一个包含预测的 9-state 保守性概率的 .h5 文件。对于每个 FASTA 文件的 ID,相应的数据集包含一个大小为 9xL 的矩阵,其中 L 是蛋白质序列的长度,9 是预测的保守性类别(索引 0 = 非常可变;索引 8 = 非常保守)。

此外,您可以直接提取每个序列的每残基保守性类别预测文件。

对数似然比输出

默认输出是一个包含每个序列一个 Lx20 矩阵的 .h5 文件。-1 表示未计算相应突变的对数似然比。

当运行 --single_csv data/single_logodds.csv 时,对数似然比输出文件包含所有突变(或突变文件中确定的突变)作为 <PROTEIN_ID>_<SAV-String>,后面跟着一个 ; 和特定突变的对数似然比,每行一个。

示例

B3VI55_LIPSTSTABLE_A438Q;0.053829677402973175
B3VI55_LIPSTSTABLE_A438N;0.061238136142492294
B3VI55_LIPSTSTABLE_A438Y;0.012603843584656715
B3VI55_LIPSTSTABLE_A438M;0.012212143279612064
B3VI55_LIPSTSTABLE_A438H;0.0241163931787014
B3VI55_LIPSTSTABLE_A438W;0.004520446062088013

如果将预测写入目录,例如通过在 第 3 步 中指定 --csv_dir,则脚本将为每个序列创建一个文件,文件名为序列 ID(注意:ID 将被标准化,即每个特殊字符将被替换为 _)。该文件将包含每行的 <Mutation-String>;score

名为 B3VI55_LIPSTSTABLE 的示例文件

A438Q;0.053829677402973175
A438N;0.061238136142492294
A438Y;0.012603843584656715
A438M;0.012212143279612064
A438H;0.0241163931787014
A438W;0.004520446062088013
VESPA 和 VESPAl 输出

VESPA 和/或 VESPAl 的默认输出将在 vespa_run_directory 的输出文件夹中生成每个蛋白质一个 .csv(以分号分隔)文件。如果您指定了输出目录 --output,您将在那里找到 .csv(以分号分隔)文件。为了解决由于长序列 ID 而引起的命名问题,csv 文件将根据 FASTA 文件中的序列出现次数进行编号。将在输出目录中创建一个查找文件 map.json,其中包含从数字到序列 ID 的映射字典。

示例 map.json

{    "0": "B3VI55_LIPSTSTABLE",
    "1": "BF520_ENV",
    "2": "BG_STRSQ",
    "3": "BG505_ENV",
    "4": "HG_FLU",
    "5": "MTH3_HAEAESTABILIZED"}

这些单独的文件将包含具有突变(格式: <fromAA><0-basedSequencePosition><toAA>)的行以及 VESPA 和/或 VESPAl 的相应预测。

示例 0.csv

Mutant;VESPAl;VESPA
M0A;0.4457732174287125;0.3520255108578212
M0L;0.3191178420567241;0.2717188481387661
M0G;0.5355136080284415;0.4110670843315182
M0V;0.3594337197937546;0.2971971641898669
M0S;0.4457732174287125;0.35202555423053
M0R;0.4457732174287125;0.35202621644931126

如果您选择生成 .h5 输出,ID 将是原始的 FASTA ID。该文件包含每个序列 ID 的一个 20xL 形状的矩阵。L 是相应蛋白质长度的长度,20 是可能的氨基酸变异数(包括自身)。氨基酸的顺序由 predict/config.py 中的 MUTANT_ORDER 确定(ALGVSREDTIPKFQNYMHWC)。未计算/指定(例如,野生型替换)的空字段包含 -1。


开发路线图

  • 编写全面的测试
  • 发布 pypi 包
  • 从 github 发布版安装
  • 贡献指南

从当前 Github 发布版安装

警告:实验性:要从 github 安装当前版本,您可以使用

python -m pip install https://github.com/Rostlab/VESPA/releases/download/v0.9.0-beta/vespa-0.9.0b0.tar.gz

引用

如果您想引用我们,请随意引用

Marquet, C., Heinzinger, M., Olenyi, T. 等。蛋白质语言模型的嵌入可以预测保守性和变异效应。Hum Genet (2021)。https://doi.org/10.1007/s00439-021-02411-y

@article{Marquet2021,
  doi = {10.1007/s00439-021-02411-y},
  url = {https://doi.org/10.1007/s00439-021-02411-y},
  year = {2021},
  month = dec,
  publisher = {Springer Science and Business Media {LLC}},
  author = {C{\'{e}}line Marquet and Michael Heinzinger and Tobias Olenyi and Christian Dallago and Kyra Erckert and Michael Bernhofer and Dmitrii Nechaev and Burkhard Rost},
  title = {Embeddings from protein language models predict conservation and variant effects},
  journal = {Human Genetics}
}

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

vespa_effect-1.0.2.tar.gz (3.4 MB 查看散列

上传时间

构建分布

vespa_effect-1.0.2-py3-none-any.whl (3.4 MB 查看散列

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面