mcpField
P
protein-sequence-similarity-search

protein-sequence-similarity-search

github.com/google-deepmind数据与数据库3.4k2.2k 次安装5 天前更新
代码仓库

关于 protein-sequence-similarity-search

面向蛋白质比较研究者的序列同源搜索技能,可从氨基酸序列或 FASTA 文件查找同源序列。默认通过 ColabFold API 使用 MMseqs2;用户指定或默认方法失败时可改用 EBI BLAST。

主要功能

  1. 01使用 MMseqs2 或 BLAST 搜索同源序列
  2. 02从指定列表选择 BLAST 数据库
  3. 03汇总匹配结果及比对指标
  4. 04生成 Markdown 和 JSON 结果文件

适用场景

  1. 01为蛋白质序列查找同源序列
  2. 02搜索选定的 BLAST 数据库
  3. 03比较匹配的覆盖率和序列一致性
  4. 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.bib
scripts/
mmseqs2_search.py
uniprot_blast.py

详细介绍

前置条件

  1. uv:阅读 uv 技能,并遵循其中的设置说明,确保已安装 uv 且其位于 PATH 中。
  2. 用户通知:如果工作区根目录中尚不存在 .licenses/protein_sequence_similarity_search_LICENSE.txt,则 (1) 醒目地通知用户查看 https://www.ebi.ac.uk/jdispatcher/sss/ncbiblast 和 https://colabfold.com 中的条款,然后 (2) 创建该文件,记录通知文本和时间戳。
  3. .env 文件:确保 .env 文件存在于你的主目录中。如果不存在,则创建一个。
  4. 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。

说明

  1. 确定用户提供的查询内容。它可以是原始序列字符串(例如 "MKVLY..."),也可以是本地文件路径(例如 "./data/sequence.fasta")。

  2. 确定搜索方法,使用上方列表进行选择。

路径 A:MMseqs2 搜索(默认)
  1. 生成文件名:根据输入生成描述性输出文件名(例如 proteinA_mmseqs2.json 和 proteinA_mmseqs2.md)。

  2. 执行 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
    
  3. 脚本将查询 ColabFold MMseqs2 API,并轮询等待任务完成。 通常速度很快(少于 2 分钟)。

  4. 如果脚本以代码 2 退出(API 故障、速率限制),则自动回退到 BLAST(下方路径 B)。告知用户:“MMseqs2 搜索失败,正在回退到 BLAST。”

  5. 读取结果:打开并阅读生成的 .md 文件。

路径 B:BLAST 搜索(显式请求或回退)
  1. 数据库选择与验证: 根据用户的提示词确定最合适的数据库。

    • 查阅下方的 可用 BLAST 数据库 表。
    • 如果用户指定了分类群(例如,“在微生物中查找同源序列”),选择对应的 Database Code(例如,uniprotkb_bacteria)。
    • 如果用户明确要求经过筛选的命中结果,使用 uniprotkb_swissprot。
    • 如果用户未指定特定数据库,则不要指定 --databases。
    • 验证: 确保数据库代码与表中的条目完全一致。如果用户请求的数据库不在列表中,不要继续,并提供允许使用的列表。
  2. 生成文件名:(例如,proteinA_ebi_blast.json 和 proteinA_ebi_blast.md)。

  3. 此 API 要求在 USER_EMAIL 环境变量中设置用户的电子邮件地址,以便将其加入请求标头。如果此技能与用户的请求相关,必须使用 credentials 技能中的安全凭据流程来检查是否已有此凭据,并在需要时请求用户提供。

  4. 执行 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>
    
  5. 脚本将查询 EBI BLAST API 并轮询服务。**注意:**这可能需要长达 15 分钟;请耐心等待。

  6. 读取结果: 打开并阅读生成的 .md 文件。

通用步骤(两种方法均适用)
  1. 解读指标: 总结排名前 3 至 5 的序列同源物。使用以下指标评估匹配质量:
    • Q-Cov(查询覆盖度): 百分比越高,表示匹配覆盖的查询序列越多。
    • E-value: 较低的 E-value(例如,1e-50)表示极高的统计显著性。
    • Seq Identity: 提供进化背景信息(高度保守还是同源关系较远)。
  2. 进行功能分析:
    • 如果结果表包含蛋白质描述,直接进行分析:报告排名靠前的同源物的具体蛋白质名称和功能,并总结发现的各种功能、结构域或蛋白质家族。
    • 如果结果仅包含 UniProt 登录号而没有描述(MMseqs2 中常见),请使用 uniprot-database 技能或其他合适的方法查找排名前 3–5 个命中的蛋白质名称和功能,再进行总结。
  3. 告知用户新创建的两个文件(.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-Prot
  • uniprotkb_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)所描述结构的蛋白质序列

评论

支持 Markdown