数据库
需要查询蛋白质结构域、家族、位点、域架构或…
适用于通过 InterPro 查询蛋白有哪些结构域/家族/位点、某家族或结构域包含哪些蛋白、物种分布、GO/基因组注释,以及用 IDA 搜索域架构。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要查询蛋白质结构域、家族、位点、域架构特定
解决思路
- 准备环境:阅读并遵循 `uv` skill 的 Setup,确保 `uv` 已安装并在 PATH。
- 许可通知:如果工作区根目录不存在 `.licenses/interpro_database_LICENSE.txt`,显著通知用户查看 https://www.ebi.ac.uk/interpro/ 和 https://www.ebi.ac.uk/about/terms-of-use/,并创建该文件记录通知文本和时间戳。
- 始终执行 `scripts/interpro_client.py` 包装脚本查询数据库,不要直接访问数据库;脚本自动执行 fair use、重试逻辑,并处理 HTTP 429 rate limiting、HTTP 408 background query sleep tracking、HTTP 404/410 terminal errors 和 lazy pagination。
- 探索性查询始终使用 CLI 并设置严格 `--limit`,先快速理解数据 schema,避免污染上下文窗口或获取百万结果。
- 使用 CLI 时用 `--output` 输出到文件,不要全部打印到控制台;用 `jq` 或代码处理输出。
- 复杂管道中原生 import 模块到 Python 脚本,直接消费 generator,避免在大工作流中反序列化 CLI 字符串。
- 如果使用此技能,确保在输出中提及。
- 按四种 API 路径构造端点,不要自己格式化 `/` 分隔字符串:`/{endpoint}`,例如 `uv run ./scripts/interpro_client.py fetch entry --limit 10 --output entries.jsonl`。
- 第二种端点:`/{endpoint}/{sourceDB}`,例如 `uv run ./scripts/interpro_client.py fetch entry --source_db pfam --limit 10 --output pfam_entries.jsonl`。
- 第三种端点:`/{endpoint}/{sourceDB}/{accession}`,例如 `uv run ./scripts/interpro_client.py fetch entry --source_db pfam --accession PF00001 --limit 10 --output pf00001_entry.jsonl`。
- 第四种端点:`/{endpoint}/{sourceDB}/{linked_endpoint}/{sourceDB}/{accession}`,例如 `uv run ./scripts/interpro_client.py fetch entry --source_db interpro --linked_endpoint protein --linked_source_db uniprot --linked_accession P04637 --limit 10 --output p04637_entries.jsonl`。
- `--source_db` 有效值:`/entry` 接受 `interpro`, `pfam`, `cathgene3d`, `ssf`, `panther`, `cdd`, `profile`, `smart`, `ncbifam`, `prosite`, `prints`, `hamap`, `pirsf`, `sfld`, `antifam`;`/protein` 接受 `uniprot`, `reviewed`, `unreviewed`;`/structure` 接受 `pdb`;`/taxonomy` 接受 `uniprot`;`/proteome` 接受 `uniprot`;`/set` 接受 `pfam`, `cdd`。无效值返回 404。
- `/entry` 查询参数:`integrated`、`type`、`go_term`/`go_category`、`ida_search`/`ida_ignore`/`exact`/`ordered`、`extra_fields`、`group_by`/`sort_by`;示例:`uv run ./scripts/interpro_client.py count entry --source_db pfam --query_params type=domain --output count.jsonl`。
- `/protein` 查询参数:`tax_id`(不搜索 lineage)、`match_presence`、`is_fragment`、`group_by`、`extra_fields`、`isoforms`/`residues`/`structureinfo`,以及仅对 `/protein/{source_db}/{accession}` 有效的 `conservation`/`extra_features`;示例:`uv run ./scripts/interpro_client.py fetch protein --source_db uniprot --limit 20 --query_params tax_id=9606 --output human_proteins.jsonl`。
- `/structure` 查询参数:`experiment_type`(如 `X-RAY DIFFRACTION`)、`resolution`、`extra_fields`、`group_by`;示例:`./scripts/interpro_client.py fetch structure --source_db pdb --accession 1ATP --limit 10 --output 1atp_structures.jsonl`。
- `/taxonomy` 查询参数:`key_species`、`with_names`、`filter_by_entry`/`filter_by_entry_db`、`extra_fields`;示例:`./scripts/interpro_client.py fetch taxonomy --source_db uniprot --accession 9606 --limit 10 --output human_taxonomy.jsonl`。
- `/proteome` 查询参数:`extra_fields`;示例:`uv run ./scripts/interpro_client.py fetch proteome --source_db uniprot --accession UP000005640 --limit 10 --output proteome.jsonl`。
- `/set` 查询参数:`extra_fields`(仅对 `/set/{sourceDB}` 有效);示例:`uv run ./scripts/interpro_client.py fetch set --source_db pfam --accession CL0001 --limit 10 --output pfam_clan.jsonl`。
- 需要完整参数时查阅 `references/api_reference.md`;需要端点调用和 JSON 输出 schema 示例时查阅 `references/example_responses.tsv`。
- IDA 搜索第一步:在根 `/entry` 端点使用 `ida_search` 查找包含指定结构域的 Domain Architectures;仅根 `/entry` 有效,不能与非 IDA 参数组合;可用 `ida_ignore` 忽略指定结构域,`ordered` 要求顺序,`exact` 要求精确匹配且必须同时有 `ordered`。示例:`uv run scripts/interpro_client.py fetch entry --query_params ida_search=PF00069,PF00017 --flags ordered exact --output architectures.jsonl`。
- IDA 搜索第二步:从第一步拿到 `ida_id` 后,过滤 `/protein` 端点获取共享该布局的实际蛋白;该过滤可用于 `/protein` 和 `/entry/{sourceDB}/{accession}`。示例:`uv run scripts/interpro_client.py fetch protein --source_db uniprot --query_params ida=619edbb2b445bfa3ad51bd894e3c115b025a5f25 --output matching_proteins.jsonl`。构建管道时循环所有第一步的 `ida_id`,对每个运行第二步。
- 解释 InterPro entry 类型:`Domain` 是可在多种生物环境中存在的功能/结构/序列单元;`Family` 是共享共同进化起源的蛋白组;`Homologous Superfamily` 由结构相似但序列相似度常很低的蛋白组成,通常含 SUPERFAMILY 和 CATH-Gene3D 签名;`Repeat` 通常是 <50 aa 的短重复序列;`Site` 包括 `Active site` 和 `Binding site`。
- 使用 InterPro-N 时以标准 InterPro 为金标准,不用 InterPro-N 替代标准结果;主要用于填补缺口或细化结果。
- 在标准 InterPro 之外,InterPro-N 可分析无命中的 dark matter/未表征蛋白、解析可能被 HMM 合并或漏掉的多串联重复(如 TPR/WD40)、预测被插入序列打断的不连续域。
- 在特定场景可考虑用 InterPro-N 代替标准 InterPro:需要比模糊标准命中更精确的域起止坐标;对碎片化或高度分化序列做大规模宏基因组初筛。
- Fallback:当标准 InterPro 查询无结果或无注释时,必须在 `protein` 端点加 `interpro_n` 标志重试。示例:`uv run ./scripts/interpro_client.py fetch protein --source_db uniprot --accession A0A096LNN2 --flags interpro_n --output A0A096LNN2_interpro_n.jsonl`。
- Python 管道中使用 InterPro-N:`results = fetch_interpro_data(endpoint="protein", source_db="uniprot", accession="A0A096LNN2", flags=["interpro_n"])`。
- 如果找到 InterPro-N 注释,必须告知用户这些注释是 InterPro-N 的深度学习预测。
- 严格查找:始终使用 UniProt Accessions(如 `P04637`)查询蛋白,绝不用基因名(如 `TP53`);如果用户给基因名,先用 Ensembl 或 UniProt 解析为 accession。
- 计数时绝不要迭代:读取初始 API JSON 响应的 `count` 字段,使用 `get_interpro_count()` helper;CLI 正确方式:`uv run ./scripts/interpro_client.py count entry --source_db interpro --query_params type=domain --output count.json`。
- Python 计数正确方式:`from interpro_client import get_interpro_count; cnt = get_interpro_count(endpoint="entry", source_db="interpro", query_params={"type": "domain"})`。
- 禁止用 `fetch` 后再 `wc -l` 等方式计数,例如不要执行 `uv run ./scripts/interpro_client.py fetch entry --source_db interpro --query_params type=domain --output output.jsonl && wc -l output.jsonl`。
- 快速示例:查蛋白所有结构域:`uv run ./scripts/interpro_client.py fetch entry --source_db interpro --linked_endpoint protein --linked_source_db uniprot --linked_accession P04637 --output p04637_domains.jsonl`;URL 等价于 `/entry/interpro/protein/uniprot/P04637`。
- 快速示例:查某个 Entry 的 PDB 结构:`uv run ./scripts/interpro_client.py fetch structure --source_db pdb --linked_endpoint entry --linked_source_db interpro --linked_accession IPR011615 --output ipr011615_structures.jsonl`;URL 等价于 `/structure/pdb/entry/interpro/IPR011615`。
适用边界 · 注意事项
- 不要用 InterPro-N 预测替代标准 InterPro 签名;标准 InterPro 是金标准,不应丢弃。
- 不要用基因名(如 `TP53`)直接查询 InterPro;InterPro 不原生支持或可靠映射基因名,必须先用 Ensembl 或 UniProt 解析为 UniProt accession。
- 不要通过迭代 `fetch` 结果来计数,也不要直接访问数据库或自行拼接 `/` 路径;应使用 `count`/`get_interpro_count()` 和 `scripts/interpro_client.py`。