name: foldseek description: > 使用Foldseek进行结构相似性搜索。在以下情况下使用此技能: (1) 在PDB/AFDB数据库中查找相似结构, (2) 结构同源性搜索, (3) 通过3D结构进行数据库查询, (4) 查找序列无法检测到的远缘同源物, (5) 按相似性对结构进行聚类。
对于序列相似性,请使用uniprot BLAST。 对于结构预测,请使用chai或boltz。 license: MIT category: utilities tags: [search, structure, database, similarity]
Foldseek 结构搜索
先决条件
| 要求 | 最低 | 推荐 |
|---|---|---|
| Python | 3.8+ | 3.10 |
| 内存 | 8GB | 16GB |
| 磁盘 | 10GB | 50GB (用于本地数据库) |
如何运行
注意:Foldseek可以在本地或通过Web服务器运行。不需要GPU。
选项1:Web服务器 (快速;有速率限制,请谨慎使用)
# 将结构上传到Web服务器
curl -X POST "https://search.foldseek.com/api/ticket" \
-F "q=@query.pdb" \
-F "database[]=afdb50" \
-F "database[]=pdb100"
选项2:本地安装
# 安装Foldseek
conda install -c conda-forge -c bioconda foldseek
# 搜索PDB
foldseek easy-search query.pdb /path/to/pdb100 results.m8 tmp/
# 搜索AlphaFold数据库
foldseek easy-search query.pdb /path/to/afdb50 results.m8 tmp/
选项3:Python API
import subprocess
import pandas as pd
def foldseek_search(query_pdb, database, output="results.m8"):
"""运行Foldseek搜索。"""
subprocess.run([
"foldseek", "easy-search",
query_pdb, database, output, "tmp/",
"--format-output", "query,target,pident,alnlen,evalue,bits"
])
return pd.read_csv(output, sep="\t",
names=["query", "target", "pident", "alnlen", "evalue", "bits"])
关键参数
| 参数 | 默认值 | 描述 |
|---|---|---|
--min-seq-id |
0.0 | 最小序列一致性 |
-e |
0.001 | E值阈值 |
--alignment-type |
2 | 0=3Di, 1=TM, 2=3Di+AA |
--max-seqs |
300 | 通过预过滤的最大命中数;减少此值会影响灵敏度 |
数据库
| 数据库 | 描述 | 大小 |
|---|---|---|
pdb100 |
在100%水平聚类的PDB | ~200K个结构 |
afdb50 |
在50%水平聚类的AlphaFold数据库 | ~67M个结构 |
swissprot |
SwissProt结构 | ~500K个结构 |
cath50 |
CATH结构域 | ~50K个结构域 |
输出格式
# results.m8 (表格格式)
query target pident alnlen evalue bits
query 1abc_A 85.2 120 1e-45 180.5
query 2def_B 72.1 115 1e-32 145.2
示例输出
成功运行
$ foldseek easy-search query.pdb pdb100 results.m8 tmp/
[INFO] 加载数据库: pdb100 (194,527 个条目)
[INFO] 正在搜索...
[INFO] 找到 127 个命中结果
前5个命中结果:
1. 1abc_A - 85.2% 一致性, E=1e-45
2. 2def_B - 72.1% 一致性, E=1e-32
3. 3ghi_C - 68.5% 一致性, E=1e-28
4. 4jkl_A - 55.3% 一致性, E=1e-18
5. 5mno_B - 42.1% 一致性, E=1e-10
决策树
我应该使用Foldseek吗?
│
├─ 你要搜索什么?
│ ├─ 通过3D结构 → Foldseek ✓
│ ├─ 通过序列 → 使用BLAST (uniprot技能)
│ └─ 两者都要 → 两者都运行,比较结果
│
└─ 你需要什么?
├─ 查找结构同源物 → Foldseek ✓
├─ 远缘同源物检测 → Foldseek ✓
├─ 结构聚类 → Foldseek ✓
└─ 功能注释 → 与UniProt交叉引用
常见用例
查找相似设计
# 将你的设计与PDB进行比较
foldseek easy-search design.pdb pdb100 similar_natural.m8 tmp/
新颖性检查
# 确保设计是新颖的 (与已知结构相似性低)
foldseek easy-search design.pdb afdb50 novelty.m8 tmp/
# 新颖性标准:最高命中结果一致性 < 30%
支架搜索
# 为基序移植查找支架
foldseek easy-search motif.pdb pdb100 scaffolds.m8 tmp/ \
--min-seq-id 0.0 -e 10
验证
wc -l results.m8 # 命中结果数量
故障排除
无命中结果:降低e值阈值,尝试更大的数据库 命中结果过多:提高最小序列一致性阈值 搜索缓慢:使用较小的数据库
错误解释
| 错误 | 原因 | 修复方法 |
|---|---|---|
Database not found |
路径错误 | 检查数据库位置 |
Invalid PDB |
结构格式错误 | 验证PDB格式 |
Out of memory |
数据库过大 | 使用更多内存或Web服务器 |
下一步:使用 pdb 技能下载命中结果 → 用于支架设计。