关于 protein-sequence-similarity-search
面向蛋白质比较研究者的序列同源搜索技能,可从氨基酸序列或 FASTA 文件查找同源序列。默认通过 ColabFold API 使用 MMseqs2;用户指定或默认方法失败时可改用 EBI BLAST。
主要功能
- 01使用 MMseqs2 或 BLAST 搜索同源序列
- 02从指定列表选择 BLAST 数据库
- 03汇总匹配结果及比对指标
- 04生成 Markdown 和 JSON 结果文件
适用场景
- 01为蛋白质序列查找同源序列
- 02搜索选定的 BLAST 数据库
- 03比较匹配的覆盖率和序列一致性
- 04保存结果供后续分析
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ google-deepmind/ science-skills --skill protein-sequence-similarity-search安装后在 Claude Code 中输入/protein-sequence-similarity-search确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/citation.bibscripts/mmseqs2_search.pyuniprot_blast.py详细介绍
前置条件
uv:阅读uv技能,并遵循其中的设置说明,确保已安装uv且其位于 PATH 中。- 用户通知:如果工作区根目录中尚不存在 .licenses/protein_sequence_similarity_search_LICENSE.txt,则 (1) 醒目地通知用户查看 https://www.ebi.ac.uk/jdispatcher/sss/ncbiblast 和 https://colabfold.com 中的条款,然后 (2) 创建该文件,记录通知文本和时间戳。
.env文件:确保.env文件存在于你的主目录中。如果不存在,则创建一个。USER_EMAIL(可选,但建议提供):EBI 建议提供此项,以便跟踪 BLAST 任务,但此技能不提供该项也能正常运行。如果此技能看起来与用户请求相关,你必须使用credentials技能中的安全凭据协议检查并请求此凭据。
目标
接受用户提供的氨基酸序列(或 .fasta 文件路径),使用当前最快的方法搜索序列同源物,生成包含排名靠前匹配结果的 Markdown 格式表格,解读关键比对指标,概述推断出的蛋白质功能,并在本地保存结果,以便将来进行程序化分析。
核心规则
- 严格验证:对于 BLAST,只能使用下表列出的数据库代码。
- 不得编造:如果脚本抛出错误或未返回匹配结果,请明确告知用户。不得捏造序列同源物。
- 不得解析输出文件:不要解析 JSON、a3m 或其他原始输出文件。摘要应依据生成的
.md文件。JSON 和其他输出仅供后续工具使用。 - 始终说明方法:每份报告都必须明确说明搜索使用的是快速 MMseqs2(ColabFold API)还是较慢的 EBI BLAST 方法。
- 通知:如果使用此技能,请确保在输出中提及这一点。明确说明使用了相应程序(MMSEQS2 或 EBI BLAST)和序列数据库。
搜索方法选择
根据用户的请求选择搜索方法:
如果用户说“快速搜索”或“快搜”、未指定具体方法/泛指同源物搜索,或者你不确定:使用 mmseqs2_search.py 运行 MMseqs2(快速,默认方法)。
如果 MMseqs2 失败(退出代码 2:RATELIMIT 或 API 错误),或用户明确请求“BLAST”,或指定了某个 BLAST 数据库(例如 uniprotkb_swissprot、pdb、uniprotkb_human):使用 uniprot_blast.py 运行 BLAST。
说明
-
确定用户提供的查询内容。它可以是原始序列字符串(例如
"MKVLY..."),也可以是本地文件路径(例如"./data/sequence.fasta")。 -
确定搜索方法,使用上方列表进行选择。
路径 A:MMseqs2 搜索(默认)
-
生成文件名:根据输入生成描述性输出文件名(例如
proteinA_mmseqs2.json和proteinA_mmseqs2.md)。 -
执行 MMseqs2 脚本:
- 默认:
uv run scripts/mmseqs2_search.py <SEQUENCE_OR_FILE> -o <generated-filename.md> -j <generated-filename.json>- 使用 mgnify:
uv run scripts/mmseqs2_search.py <SEQUENCE_OR_FILE> -o <generated-filename.md> -j <generated-filename.json> --include-mgnify -
脚本将查询 ColabFold MMseqs2 API,并轮询等待任务完成。 通常速度很快(少于 2 分钟)。
-
如果脚本以代码 2 退出(API 故障、速率限制),则自动回退到 BLAST(下方路径 B)。告知用户:“MMseqs2 搜索失败,正在回退到 BLAST。”
-
读取结果:打开并阅读生成的
.md文件。
路径 B:BLAST 搜索(显式请求或回退)
-
数据库选择与验证: 根据用户的提示词确定最合适的数据库。
- 查阅下方的 可用 BLAST 数据库 表。
- 如果用户指定了分类群(例如,“在微生物中查找同源序列”),选择对应的
Database Code(例如,uniprotkb_bacteria)。 - 如果用户明确要求经过筛选的命中结果,使用
uniprotkb_swissprot。 - 如果用户未指定特定数据库,则不要指定
--databases。 - 验证: 确保数据库代码与表中的条目完全一致。如果用户请求的数据库不在列表中,不要继续,并提供允许使用的列表。
-
生成文件名:(例如,
proteinA_ebi_blast.json和proteinA_ebi_blast.md)。 -
此 API 要求在 USER_EMAIL 环境变量中设置用户的电子邮件地址,以便将其加入请求标头。如果此技能与用户的请求相关,必须使用
credentials技能中的安全凭据流程来检查是否已有此凭据,并在需要时请求用户提供。 -
执行 BLAST 脚本:
- 默认(uniprotkb):
uv run scripts/uniprot_blast.py <SEQUENCE_OR_FILE> -o <generated-filename.md> -j <generated-filename.json>- 自定义数据库:
uv run scripts/uniprot_blast.py <SEQUENCE_OR_FILE> -o <generated-filename.md> -j <generated-filename.json> --databases <db1,db2> -
脚本将查询 EBI BLAST API 并轮询服务。**注意:**这可能需要长达 15 分钟;请耐心等待。
-
读取结果: 打开并阅读生成的
.md文件。
通用步骤(两种方法均适用)
- 解读指标: 总结排名前 3 至 5 的序列同源物。使用以下指标评估匹配质量:
- Q-Cov(查询覆盖度): 百分比越高,表示匹配覆盖的查询序列越多。
- E-value: 较低的 E-value(例如,
1e-50)表示极高的统计显著性。 - Seq Identity: 提供进化背景信息(高度保守还是同源关系较远)。
- 进行功能分析:
- 如果结果表包含蛋白质描述,直接进行分析:报告排名靠前的同源物的具体蛋白质名称和功能,并总结发现的各种功能、结构域或蛋白质家族。
- 如果结果仅包含 UniProt 登录号而没有描述(MMseqs2 中常见),请使用 uniprot-database 技能或其他合适的方法查找排名前 3–5 个命中的蛋白质名称和功能,再进行总结。
- 告知用户新创建的两个文件(
.json和.md)及其所在位置。
可用的 BLAST 数据库
uniprotkb– UniProt Knowledgebase(UniProt Knowledgebase 包含 UniProtKB/Swiss-Prot 和 UniProtKB/TrEMBL):UniProt Knowledgebase (UniProtKB)是获取全面且经过整理的蛋白质信息的中心入口,包括功能、分类和交叉引用。 搜索 UniProtKB,即可检索特定序列的“所有已知信息”uniprotkb_swissprot– UniProtKB/Swiss-Prot(UniProtKB 中经过人工注释的部分):UniProt Knowledgebase 中经过人工整理的子集uniprotkb_swissprotsv– UniProtKB/Swiss-Prot 同工型(UniProtKB/Swiss-Prot 中经过人工注释的同工型):UniProt Knowledgebase 中经过人工整理的子集所对应的同工型序列uniprotkb_reference_proteomes– UniProtKB 参考蛋白质组:UniProtKB 参考蛋白质组的分类学子集uniprotkb_trembl– UniProtKB/TrEMBL(UniProtKB 中自动注释的部分):UniProt Knowledgebase 的子集,源自 ENA Sequence(前身为 EMBL-Bank)编码序列的翻译结果,注释由自动化流程生成uniprotkb_refprotswissprot– UniProtKB 参考蛋白质组加 Swiss-Prot:UniProtKB 参考蛋白质组加 Swiss-Protuniprotkb_archaea– UniProtKB 古菌:UniProt Knowledgebase 中古菌的分类学子集uniprotkb_arthropoda– UniProtKB 节肢动物:UniProt Knowledgebase 中节肢动物的分类学子集uniprotkb_bacteria– UniProtKB 细菌:UniProt Knowledgebase 中细菌的分类学子集uniprotkb_complete_microbial_proteomes– UniProtKB 完整微生物蛋白质组:UniProt Knowledgebase 中完整微生物蛋白质组的分类学子集uniprotkb_eukaryota– UniProtKB 真核生物:UniProt Knowledgebase 中真核生物的分类学子集uniprotkb_fungi– UniProtKB 真菌:UniProt Knowledgebase 中真菌的分类学子集uniprotkb_human– UniProtKB 人类:UniProt Knowledgebase 中人类的分类学子集uniprotkb_mammals– UniProtKB 哺乳动物:UniProt Knowledgebase 中哺乳动物的分类学子集uniprotkb_nematoda– UniProtKB 线虫:UniProt Knowledgebase 中线虫的分类学子集uniprotkb_rodents– UniProtKB 啮齿动物:UniProt Knowledgebase 中啮齿动物的分类学子集uniprotkb_vertebrates– UniProtKB 脊椎动物:UniProt Knowledgebase 中脊椎动物的分类学子集uniprotkb_viridiplantae– UniProtKB 绿色植物:UniProt Knowledgebase 中绿色植物的分类学子集uniprotkb_viruses– UniProtKB 病毒:UniProt Knowledgebase 中病毒的分类学子集uniprotkb_enzyme– UniProtKB 酶:UniProt Knowledgebase 中酶的分类学子集uniprotkb_covid19– UniProtKB COVID-19:UniProt Knowledgebase 中 COVID-19 的分类学子集uniref100– UniProt 100% 聚类(UniRef100):包含序列相似度为 100% 的序列的 UniProt 参考聚类(UniRef)。uniref90– UniProt 90% 聚类(UniRef90):包含序列相似度为 90% 的序列的 UniProt 参考聚类(UniRef)。uniref50– UniProt 50% 聚类(UniRef50):包含序列相似度为 50% 的序列的 UniProt 参考聚类(UniRef)。pdb– 蛋白质结构序列(PDBe 蛋白质结构序列):来自 Brookhaven 蛋白质数据库(PDB)所描述结构的蛋白质序列