Foldseek
Foldseek 能够快速、灵敏地比较大型蛋白质结构集。
相关论文
目录
网络服务器
使用 Foldseek 网络服务器(代码)在几秒钟内对 AlphaFoldDB 和 PDB 搜索您的蛋白质结构:search.foldseek.com 🚀
安装
# Linux AVX2 版本(使用以下命令检查:cat /proc/cpuinfo | grep avx2)
wget https://mmseqs.com/foldseek/foldseek-linux-avx2.tar.gz; tar xvzf foldseek-linux-avx2.tar.gz; export PATH=$(pwd)/foldseek/bin/:$PATH
# Linux SSE2 版本(使用以下命令检查:cat /proc/cpuinfo | grep sse2)
wget https://mmseqs.com/foldseek/foldseek-linux-sse2.tar.gz; tar xvzf foldseek-linux-sse2.tar.gz; export PATH=$(pwd)/foldseek/bin/:$PATH
# Linux ARM64 版本
wget https://mmseqs.com/foldseek/foldseek-linux-arm64.tar.gz; tar xvzf foldseek-linux-arm64.tar.gz; export PATH=$(pwd)/foldseek/bin/:$PATH
# MacOS
wget https://mmseqs.com/foldseek/foldseek-osx-universal.tar.gz; tar xvzf foldseek-osx-universal.tar.gz; export PATH=$(pwd)/foldseek/bin/:$PATH
# Conda 安装(适用于 Linux 和 macOS)
conda install -c conda-forge -c bioconda foldseek
ARM64 和 SSE2 的其他预编译二进制文件可在 https://mmseqs.com/foldseek 获取。
内存需求
为获得最佳软件性能,请根据您的 RAM 和搜索需求考虑以下三个选项:
-
包含 Cα 信息(默认)。 使用此公式计算 RAM -
(6 字节 Cα + 1 3Di 字节 + 1 AA 字节) * (数据库残基数)
。54M AFDB50 条目需要 151GB。 -
不包含 Cα 信息。 通过禁用
--sort-by-structure-bits 0
,RAM 需求降至 35GB。但这会改变命中排名和最终得分,而不影响 E 值。结构位主要与 E 值 > 10^-1 的命中排名相关。 -
单一查询搜索。 使用
--prefilter-mode 1
,不受内存限制并计算所有无间隙比对。此选项可为单一查询优化利用 foldseek 的多线程功能。
教程视频
我们在 SBGrid 上展示了 Foldseek 教程,演示了 Foldseek 的网络服务器和命令行界面。 点击此处查看。
文档
Foldseek 的许多模块(子程序)依赖于 MMseqs2。有关这些模块的更多信息,请参阅 MMseqs2 维基。有关 Foldseek 特定文档,请查看 Foldseek 维基 此处。
快速入门
搜索
easy-search
模块允许对一个或多个单链蛋白质结构(以 PDB/mmCIF 格式,平面或 gzip 压缩)进行查询,搜索目标数据库、文件夹或单个单链蛋白质结构(对于多链蛋白质,请参见 complexsearch)。默认的比对信息输出是制表符分隔文件,但 Foldseek 也支持叠加的 Cα PDB 文件和HTML。
foldseek easy-search example/d1asha_ example/ aln tmpFolder
搜索输出
制表符分隔
默认输出字段为:query,target,fident,alnlen,mismatch,gapopen,qstart,qend,tstart,tend,evalue,bits
,但可以使用 --format-output
选项自定义,例如 --format-output "query,target,qaln,taln"
返回查询和目标序列的标识符以及成对比对,以制表符分隔格式。您可以选择多种不同的输出列。
代码 | 描述 |
---|---|
query | 查询序列标识符 |
target | 目标序列标识符 |
qca | 查询的 Cα 坐标 |
tca | 目标的 Cα 坐标 |
alntmscore | 比对的 TM-score |
qtmscore | 按查询长度标准化的 TM-score |
ttmscore | 按目标长度标准化的 TM-score |
u | 旋转矩阵(由 TM-score 计算) |
t | 平移向量(由 TM-score 计算) |
lddt | 比对的平均 LDDT |
lddtfull | 每个比对位置的 LDDT |
prob | 查询和目标为同源的估计概率(例如,属于同一 SCOPe 超家族) |
叠加的 Cα PDB 文件
Foldseek 的 --format-mode 5
生成 PDB 文件,其中所有目标 Cα 原子基于比对坐标叠加到查询结构上。
每个成对比对都会生成自己的 PDB 文件,因此在进行大规模搜索时请谨慎使用此选项。
交互式 HTML
本地运行的 Foldseek 可以通过指定 --format-mode 3
生成类似于网络服务器生成的 HTML 搜索结果。
foldseek easy-search example/d1asha_ example/ result.html tmp --format-mode 3
重要搜索参数
选项 | 类别 | 描述 |
---|---|---|
-s | 敏感度 | 调整敏感度和速度的平衡;数值越低速度越快,越高则更敏感(快速:7.5,默认:9.5) |
--exhaustive-search | 敏感度 | 跳过预过滤并执行全对全比对(更敏感但速度大大降低) |
--max-seqs | 敏感度 | 调整传递给比对的预过滤数量;增加可能导致更多匹配(默认:1000) |
-e | 敏感度 | 列出E值低于此值的匹配(范围0.0-inf,默认:0.001);增加它会报告更多远距离结构 |
--alignment-type | 比对 | 0:3Di Gotoh-Smith-Waterman(局部,不推荐),1:TMalign(全局,慢),2:3Di+AA Gotoh-Smith-Waterman(局部,默认) |
-c | 比对 | 列出高于此比例的已对齐(覆盖)残基的匹配(参见--cov-mode)(默认:0.0);更高覆盖率 = 更全局的比对 |
--cov-mode | 比对 | 0:查询和目标的覆盖率,1:目标的覆盖率,2:查询的覆盖率 |
比对模式
默认情况下,Foldseek使用其局部3Di+AA结构比对,但它也支持使用全局TMalign重新比对匹配结果,以及使用TMscore重新评分比对。
foldseek easy-search example/d1asha_ example/ aln tmp --alignment-type 1
如果比对类型设置为tmalign(--alignment-type 1
),结果将按查询长度归一化的TMscore排序。TMscore用于报告两个字段:e-value=(qTMscore+tTMscore)/2和score=(qTMscore*100)。所有输出字段(如pident、fident和alnlen)都基于TMalign比对计算。
从FASTA输入进行结构搜索
通过直接从氨基酸序列预测3Di进行搜索,无需现有蛋白质结构。 此功能使用ProstT5蛋白质语言模型,默认在CPU上运行,比ColabFold预测的结构快约400-4000倍。
foldseek databases ProstT5 weights tmp
foldseek databases PDB pdb tmp
foldseek easy-search QUERY.fasta pdb result.m8 tmp --prostt5-model weights
或从fasta文件创建结构数据库。
foldseek createdb db.fasta db --prostt5-model weights
也支持使用GPU/CUDA进行更快的推理。从源码编译时使用cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_CUDA=1 -DCUDAToolkit_ROOT=Path-To-Cuda-Toolkit
,并调用createdb/easy-search --prostt5-model weights --gpu 1
。
数据库
databases
命令下载预生成的数据库,如PDB或AlphaFoldDB。
# pdb
foldseek databases PDB pdb tmp
# alphafold db
foldseek databases Alphafold/Proteome afdb tmp
我们目前支持以下数据库:
名称 类型 分类学 网址
- Alphafold/UniProt 氨基酸 是 https://alphafold.ebi.ac.uk/
- Alphafold/UniProt50 氨基酸 是 https://alphafold.ebi.ac.uk/
- Alphafold/Proteome 氨基酸 是 https://alphafold.ebi.ac.uk/
- Alphafold/Swiss-Prot 氨基酸 是 https://alphafold.ebi.ac.uk/
- ESMAtlas30 氨基酸 - https://esmatlas.com
- PDB 氨基酸 是 https://www.rcsb.org
创建自定义数据库和索引
目标数据库可以通过createdb
预处理。这在多次搜索相同目标结构集时很有用。
foldseek createdb example/ targetDB
foldseek createindex targetDB tmp #可选,生成并存储索引到磁盘
foldseek easy-search example/d1asha_ targetDB aln.m8 tmpFolder
聚类
easy-cluster
算法旨在通过将结构分配给代表性蛋白质结构来进行结构聚类。它接受PDB或mmCIF格式的输入,支持平面和gzip压缩文件。默认情况下,easy-cluster生成三个带有以下前缀的输出文件:(1) _clu.tsv
,(2) _repseq.fasta
,和 (3) _allseq.fasta
。第一个文件(1)是描述从代表到成员映射的制表符分隔文件,第二个文件(2)仅包含代表序列,第三个文件(3)包括所有聚类成员序列。
foldseek easy-cluster example/ res tmp -c 0.9
输出聚类
制表符分隔聚类
提供的格式以制表符分隔的两列布局(代表和成员)表示蛋白质结构聚类。每行表示一个聚类代表和聚类成员的关系,表明成员与代表具有显著的结构相似性,因此属于同一聚类。
Q0KJ32 Q0KJ32
Q0KJ32 C0W539
Q0KJ32 D6KVP9
E3HQM9 E3HQM9
E3HQM9 F0YHT8
代表fasta
_repseq.fasta
包含聚类的所有代表性蛋白质序列。
>Q0KJ32
MAGA....R
>E3HQM9
MCAT...Q
所有成员fasta
在_allseq.fasta
文件中,聚类的所有序列都存在。新聚类由代表序列的两个相同名称行标记,第一行代表聚类,第二行是第一个聚类序列的名称行。随后是所有成员的fasta格式序列。
>Q0KJ32
>Q0KJ32
MAGA....R
>C0W539
MVGA....R
>D6KVP9
MVGA....R
>D1Y890
MVGV....R
>E3HQM9
>E3HQM9
MCAT...Q
>Q223C0
MCAR...Q
重要聚类参数
选项 | 类别 | 描述 |
---|---|---|
-e | 敏感度 | 列出E值低于此值的匹配(范围0.0-inf,默认:0.001);增加它会报告更多远距离结构 |
--alignment-type | 比对 | 0:3Di Gotoh-Smith-Waterman(局部,不推荐),1:TMalign(全局,慢),2:3Di+AA Gotoh-Smith-Waterman(局部,默认) |
-c | 比对 | 列出高于此比例的已对齐(覆盖)残基的匹配(参见--cov-mode)(默认:0.0);更高覆盖率 = 更全局的比对 |
--cov-mode | 比对 | 0:查询和目标的覆盖率,1:目标的覆盖率,2:查询的覆盖率 |
--min-seq-id | 比对 | 被聚类的最小序列一致性 |
--tmscore-threshold | 比对 | 接受比对TMscore > 阈值的比对 |
--lddt-threshold | 比对 | 接受比对LDDT得分 > 阈值的比对 |
多聚体搜索
easy-multimersearch
模块旨在查询一个或多个蛋白质复合物(多链)结构(支持的输入格式:PDB/mmCIF,平面或gzip压缩)与目标蛋白质复合物结构数据库。它报告复合物之间的相似性度量(例如,TMscore)。
使用多聚体搜索
以下示例使用可在Foldseek仓库的example
目录中找到的文件。
如果您使用软件的预编译版本,可以直接下载这些文件:1tim.pdb.gz和8tim.pdb.gz。
使用easy-multimersearch
进行复合物的成对比对,运行以下命令:
foldseek easy-multimersearch example/1tim.pdb.gz example/8tim.pdb.gz result tmpFolder
Foldseek easy-multimersearch
也可用于搜索一个或多个查询复合物与目标数据库:
foldseek databases PDB pdb tmp
foldseek easy-multimersearch example/1tim.pdb.gz pdb result tmpFolder
Multimer 搜索输出
制表符分隔的复合体
默认情况下,easy-multimersearch
以制表符分隔的文件格式报告输出对齐结果。
默认输出字段为:query,target,fident,alnlen,mismatch,gapopen,qstart,qend,tstart,tend,evalue,bits,complexassignid
,但可以使用 --format-output
选项进行自定义,例如:--format-output "query,target,complexqtmscore,complexttmscore,complexassignid"
将输出改为显示特定的评分和标识符。
代码 | 描述 |
---|---|
通用 | |
query | 查询序列标识符 |
target | 目标序列标识符 |
仅用于 scorecomplex | |
complexqtmscore | 复合体对齐的 TM-score,按查询长度归一化 |
complexttmscore | 复合体对齐的 TM-score,按目标长度归一化 |
complexu | 复合体对齐的旋转矩阵(由 TM-score 计算) |
complext | 复合体对齐的平移向量(由 TM-score 计算) |
complexassignid | 复合体对齐的索引 |
输出示例:
1tim.pdb.gz_A 8tim.pdb.gz_A 0.967 247 8 0 1 247 1 247 5.412E-43 1527 0
1tim.pdb.gz_B 8tim.pdb.gz_B 0.967 247 8 0 1 247 1 247 1.050E-43 1551 0
复合体报告
easy-multimersearch
还会生成一份报告(前缀为 _report
),提供复合体间链匹配的摘要,包括标识符、链、TM 评分、旋转矩阵、平移向量和分配 ID。报告包含以下字段:
列 | 描述 |
---|---|
1 | 查询复合体的标识符 |
2 | 目标复合体的标识符 |
3 | 查询复合体中匹配的链(逗号分隔) |
4 | 目标复合体中匹配的链(逗号分隔) |
5 | 按查询长度归一化的 TM 评分 [0-1] |
6 | 按目标长度归一化的 TM 评分 [0-1] |
7 | 九个旋转矩阵 (U) 值(逗号分隔) |
8 | 三个平移向量 (T) 值(逗号分隔) |
9 | 复合体对齐 ID |
输出示例:
1tim.pdb.gz 8tim.pdb.gz A,B A,B 0.98941 0.98941 0.999983,0.000332,0.005813,-0.000373,0.999976,0.006884,-0.005811,-0.006886,0.999959 0.298992,0.060047,0.565875 0
主要模块
easy-search
快速蛋白质结构搜索easy-cluster
快速蛋白质结构聚类createdb
从蛋白质结构(PDB、mmCIF、mmJSON)创建数据库databases
下载预组装的数据库
示例
使用 TMscore 重新评分对齐结果
获取以 min(alnLen,qLen,targetLen) 归一化的对齐 TMscore 以及旋转矩阵的最简单方法是通过以下命令:
foldseek easy-search example/ example/ aln tmp --format-output query,target,alntmscore,u,t
另外,也可以使用以下命令计算特定类型对齐输出(如 3Di+AA)的 TMscore:
foldseek createdb example/ targetDB
foldseek createdb example/ queryDB
foldseek search queryDB targetDB aln tmpFolder -a
foldseek aln2tmscore queryDB targetDB aln aln_tmscore
foldseek createtsv queryDB targetDB aln_tmscore aln_tmscore.tsv
aln_tmscore.tsv
的输出格式:查询和目标标识符、TMscore、平移向量(3)和旋转向量(3x3)
聚类搜索结果
以下命令对输入结构进行全对全对齐,仅保留覆盖序列 80% 的对齐结果(-c 0.8)(关于对齐覆盖选项的更多信息,请参阅此处)。然后使用贪心集合覆盖算法对结果进行聚类。可以使用 --cluster-mode 调整聚类模式,更多信息请参阅此处。聚类输出格式的说明请参阅此处。
foldseek createdb example/ db
foldseek search db db aln tmpFolder -c 0.8
foldseek clust db aln clu
foldseek createtsv db db clu clu.tsv
以查询为中心的多序列对齐
Foldseek 可以使用以下命令以 a3m 格式输出多序列对齐结果。
要将 a3m 格式转换为 FASTA 格式,可以使用以下脚本 reformat.pl(reformat.pl in.a3m out.fas
)。
foldseek createdb example/ targetDB
foldseek createdb example/ queryDB
foldseek search queryDB targetDB aln tmpFolder -a
foldseek result2msa queryDB targetDB aln msa --msa-format-mode 6
foldseek unpackdb msa msa_output --unpack-suffix a3m --unpack-name-mode 0