用 BioServices 构建跨数据库生物信息学查询工作流:UniProt、KEGG、ChEMBL 等 40+ 数据库的统一 Python 接口
【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills
BioServices 是一个提供统一编程接口访问约 40 个生物信息学网络服务与数据库的 Python 包,在本仓库的 BioServices Skill 中,它被封装为一套可直接运行、面向 Agent 的科学技能,适用于在一个工作流内用一致的 API 同时查询 UniProt、KEGG、ChEMBL、Reactome 等多个服务,完成跨库分析、ID 映射、序列比对与通路网络构建。读完本文,你将掌握该 Skill 的核心服务用法、四条现成脚本流水线的运行方式,以及标识符映射、蛋白全流程分析等实战方案,并能结合仓库源码与测试验证行为、定位版本差异。
Skill 概览与使用场景
BioServices Skill 面向需要在单条 Python 工作流中串接多个生物学数据库的场景。它同时透明处理 REST 与 SOAP/WSDL 两种协议,屏蔽了各服务底层协议差异,让开发者以相近的 API 风格访问异构资源。Skill 头部(frontmatter)中声明了版本与边界:
- 目标版本bioservices 1.16.0(PyPI,2026 年 3 月发布),要求Python 3.9–3.12;
- 许可证 GPLv3,允许工具为 Read / Write / Edit / Bash;
- 需要联网访问 40+ 生物信息学 Web API;NCBI BLAST 需提供联系邮箱(
NCBI_EMAIL环境变量或显式参数)。
本仓库的 docs/skills.md 对该 Skill 的定位是"提供跨服务一致 API、自动结果缓存、错误处理与重试逻辑、支持 REST 与 SOAP、将结果转换为 Python 对象(dict、list、BioPython 对象),并处理认证、限速与 API 版本管理"。
何时应该选择本 Skill:
- 从 UniProt、PDB、Pfam 检索蛋白质序列、注释或结构;
- 通过 KEGG 或 Reactome 分析代谢通路与基因功能;
- 在 ChEBI、ChEMBL、PubChem 中检索化合物信息;
- 在不同生物数据库(KEGG↔UniProt、化合物 ID)之间转换标识符;
- 运行序列相似性搜索(BLAST、MUSCLE 比对);
- 查询基因本体条目(QuickGO、GO 注释);
- 获取蛋白-蛋白相互作用数据(PSICQUIC、IntactComplex);
- 挖掘基因组数据(BioMart、ArrayExpress、ENA);
- 在同一工作流中整合多个生物信息资源。
若只是对单个数据库做快速查找,本 Skill 的 frontmatter 建议优先使用gget;序列与文件的底层操作则建议使用biopython,从而与其他 Skill 形成互补定位。
环境准备:安装与凭据
安装固定版本(推荐用uv,与仓库其他 Skill 保持一致):
uv pip install "bioservices==1.16.0"依赖会自动安装。上游 CI 覆盖 Python 3.9–3.12。
凭据要求(大多数服务无需 API Key):
| 服务 | 要求 |
|---|---|
| NCBI BLAST | 联系邮箱,通过NCBI_EMAIL环境变量或在NCBIblast.run()中传email= |
| 部分 EBI 服务 | 可选;若遇限速可查看服务文档 |
建议每个 Shell 会话设置一次:
export NCBI_EMAIL=your.email@example.com使用真实的机构或实验室邮箱——NCBI 可能会因大量 BLAST 使用而联系你。邮箱会由脚本做格式校验(见下文resolve_ncbi_email),不设置则 BLAST 步骤被跳过。
核心能力之一:蛋白质分析(UniProt)
UniProt 是蛋白质序列与功能信息数据库。核心方法三个:search()用灵活检索词查蛋白、retrieve()按多种格式取条目、mapping()做库间 ID 转换:
from bioservices import UniProt u = UniProt(verbose=False) # 按名称搜索蛋白 results = u.search("ZAP70_HUMAN", frmt="tab", columns="id,genes,organism") # 获取 FASTA 序列 sequence = u.retrieve("P43403", "fasta") # 跨数据库映射标识符 kegg_ids = u.mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403")方法签名细节见 services_reference.md:
search(query, frmt="tab", columns=None, limit=None, sort=None, compress=False, include=False, **kwargs):frmt支持"tab" / "fasta" / "xml" / "rdf" / "gff" / "txt";columns为逗号分隔列表(如"id,genes,organism,length");返回指定格式字符串。retrieve(uniprot_id, frmt="txt"):frmt支持"txt" / "fasta" / "xml" / "rdf" / "gff"。mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403"):query支持单 ID 或逗号分隔的多个 ID,返回输入到输出 ID 的映射字典。searchUniProtId(pattern, columns="entry name,length,organism", limit=100):基于 ID 的便捷检索,返回制表符分隔值。
常用 columns:id, entry name, genes, organism, protein names, length, sequence, go-id, ec, pathway, interactor。
版本注意(UniProt ≥1.10):UniProt 于 2022 年 6 月更新 REST API,用户侧方法大体不变,但表格型columns名称可能与旧示例不同。若解析失败,可查上游 UniProt 模块中的_legacy_names映射表对齐新名称。
在 protein_analysis_workflow.py 中,search_protein()展示了更稳健的检索逻辑:当输入看起来像 6 位、以O/P/Q开头的 UniProt accession 时先直接retrieve;否则调用search(..., limit=5),解析首条结果的id, genes, organism, length, protein names。这也演示了返回 TSV 的解析套路——去表头后按\t切分字段。
核心能力之二:通路发现与分析(KEGG)
KEGG 覆盖代谢通路、基因与物种。Skill 以人类ZAP70基因为贯穿示例:
from bioservices import KEGG k = KEGG() k.organism = "hsa" # 设为人类 # 按名称查找物种 k.lookfor_organism("droso") # 查找果蝇相关物种 # 按名称查找通路 k.lookfor_pathway("B cell") # 返回匹配的通路 ID # 获取包含指定基因的通路 pathways = k.get_pathway_by_gene("7535", "hsa") # ZAP70 基因 # 拉取并解析通路数据 data = k.get("hsa04660") parsed = k.parse(data) # 提取通路内部相互作用 interactions = k.parse_kgml_pathway("hsa04660") relations = interactions['relations'] # 蛋白-蛋白相互作用 # 转为 Simple Interaction Format sif_data = k.pathway2sif("hsa04660")关键方法签名与用途(见 services_reference.md):
| 方法 | 说明 |
|---|---|
list(database) | 列出 KEGG 某库条目,database可为organism/pathway/module/disease/drug/compound |
find(database, query) | 按关键词检索,返回带 ID 的匹配条目列表 |
get(entry_id) | 按 ID 取原始条目(基因、通路、化合物等) |
parse(data) | 将 KEGG 条目解析为结构化 dict |
lookfor_organism(name)/lookfor_pathway(name) | 按名称模式搜索物种 / 通路 |
get_pathway_by_gene(gene_id, organism) | 找出包含某基因的通路 ID |
parse_kgml_pathway(pathway_id) | 解析通路 KGML,返回含entries与relations的 dict |
pathway2sif(pathway_id) | 提取 SIF 相互作用,过滤激活/抑制事件,返回相互作用元组列表 |
parse_kgml_pathway()返回的relations结构可通过rel.get('name')读取相互作用类型(activation、inhibition、phosphorylation、binding/association 等)、通过rel.get('link')读取PPrel(蛋白-蛋白关系)等链接类型——这正是 pathway_analysis.py 统计"通路规模与相互作用类型分布"的数据来源。
核心能力之三:化合物跨库检索与映射
化合物检索采用 "KEGG 起步、UniChem 搭桥" 的经典链路:
from bioservices import KEGG, UniChem k = KEGG() # 按名称搜化合物 results = k.find("compound", "Geldanamycin") # 返回 cpd:C11222 # 获取含库间链接的化合物信息 compound_info = k.get("cpd:C11222") # 内含 ChEBI 链接 # 通过 UniChem 将 KEGG 交叉引用到 ChEMBL u = UniChem() chembl_id = u.get_compound_id_from_kegg("C11222") # 返回 CHEMBL278315标准工作流:
- 在 KEGG 中按化合物名称搜索;
- 提取 KEGG 化合物 ID(形如
C11222,需去掉cpd:前缀); - 用 UniChem 做 KEGG → ChEMBL 映射;
- 从 KEGG 条目中顺带提取 ChEBI ID(常内嵌于 DBLINKS 区块)。
版本注意事项(务必先探测 API 可用性):bioservices 1.16.0 中已移除 per-source 的get_compound_id_from_*便捷方法。运行前先检查hasattr(u, "get_compound_id_from_kegg"),若不存在则改用当前 UniChem API,例如u.get_compounds(compound, source_type)后读取res["compounds"][0]["sources"]。ChEMBL 检索同理:用get_molecule,而非 1.6 之前的get_compound_by_chemblId(这正是 compound_cross_reference.py 注释强调的内容)。
UniChem 的关键源 ID 编号(在 services_reference.md 与 identifier_mapping.md 中均有记载):
| 源 ID | 数据库 | 源 ID | 数据库 |
|---|---|---|---|
| 1 | ChEMBL | 6 | KEGG |
| 2 | DrugBank | 7 | ChEBI |
| 3 | PDB | 14 | FDA/SRS |
| 4 | IUPHAR/BPS | 22 | PubChem |
| 5 | PubChem |
核心能力之四:BLAST 序列相似性搜索(NCBIblast)
NCBI BLAST 需要联系邮箱——优先使用NCBI_EMAIL环境变量(与 BioPython Entrez 及仓库其他 Skill 约定一致):
import os from bioservices import NCBIblast s = NCBIblast(verbose=False) email = os.environ["NCBI_EMAIL"] # 运行前设置:export NCBI_EMAIL=you@lab.org # 对 UniProtKB 运行 BLASTP jobid = s.run( program="blastp", sequence=protein_sequence, stype="protein", database="uniprotkb", email=email, ) # 查询作业状态并取结果 s.getStatus(jobid) results = s.getResult(jobid, "out")注意:BLAST 作业是异步的,必须先查询状态再取结果。相关签名(见 services_reference.md):
run(program, sequence, stype, database, email, **params):program支持blastp/blastn/blastx/tblastn/tblastx;stype为protein或dna;database如uniprotkb、pdb、refseq_protein;返回作业 ID。getStatus(jobid):返回"RUNNING"、"FINISHED"、"ERROR"。getResult(jobid, result_type):result_type为"out"(默认)/"ids"/"xml"。
protein_analysis_workflow.py 中实现了完整轮询循环:5 秒间隔轮询、最长等待 300 秒、FINISHED后取"out"结果、ERROR或超时则安全退出。
核心能力之五:标识符映射(UniProt + UniChem)
不同数据库标识符体系的换算贯穿几乎一切跨库分析。BioServices 提供四条路线:UniProt Mapping(蛋白/基因 ID 全谱换算)、UniChem(化合物 ID)、KEGG 内嵌交叉引用(解析条目)、PICR(蛋白标识符交叉引用服务)。
from bioservices import UniProt, KEGG # UniProt 映射(支持大量数据库对) u = UniProt() results = u.mapping( fr="UniProtKB_AC-ID", # 源数据库 to="KEGG", # 目标数据库 query="P43403" # 待转换标识符 ) # KEGG 基因 ID → UniProt kegg_to_uniprot = u.mapping(fr="KEGG", to="UniProtKB_AC-ID", query="hsa:7535") # 化合物则用 UniChem from bioservices import UniChem u = UniChem() chembl_from_kegg = u.get_compound_id_from_kegg("C11222")UniProt 支持 100+ 数据库对,Skill 文档按类别整理了高频映射组合。基因/蛋白类:UniProtKB_AC-ID ↔ KEGG / Ensembl / Ensembl_Protein / Ensembl_Transcript / RefSeq_Protein / RefSeq_Nucleotide / GeneID / HGNC / MGI。结构类:UniProtKB_AC-ID ↔ PDB / Pfam / InterPro。表达与蛋白质组学:↔ PRIDE / ProteomicsDB / PaxDb。物种特异性:↔ FlyBase / WormBase / SGD / ZFIN。通路与网络:↔ GO / Reactome / STRING / BioGRID / OMA等。
常见映射代码参考(见 identifier_mapping.md):
- 基因/蛋白:
UniProtKB_AC-ID、UniProtKB、KEGG(如hsa:7535)、GeneID(Entrez)、Ensembl、Ensembl_Protein、Ensembl_Transcript、RefSeq_Protein(NP_)、RefSeq_Nucleotide(NM_); - 命名权威:
HGNC、MGI、RGD、SGD、FlyBase、WormBase、ZFIN; - 结构:
PDB、Pfam、InterPro、SUPFAM、PROSITE; - 通路网络:
Reactome、BioCyc、PathwayCommons、STRING、BioGRID。
KEGG 基因 ID 采用organism:gene_id复合格式,如hsa:7535可拆为物种前缀hsa(人类)与基因号7535。KEGG 条目中的DBLINKS(化合物)/ 缩进数据库链接段(基因)也直接内嵌了 ChEBI、UniProt、PubChem 等 ID,可正则解析提取——详细示例见 identifier_mapping.md。
常用映射组合速查
| 组合 | 用法示例 | 预期结果形态 |
|---|---|---|
| UniProt → KEGG | u.mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403") | {'P43403': ['hsa:7535']} |
| KEGG → UniProt | fr="KEGG", to="UniProtKB", query="hsa:7535" | {'hsa:7535': ['P43403']} |
| UniProt → Ensembl | fr="UniProtKB_AC-ID", to="Ensembl", query="P43403" | {'P43403': ['ENSG00000115085']} |
| UniProt → Ensembl_Protein | fr="UniProtKB_AC-ID", to="Ensembl_Protein", ... | {'P43403': ['ENSP00000381359']} |
| UniProt → PDB | fr="UniProtKB_AC-ID", to="PDB", query="P04637" | {'P04637': ['1A1U','1AIE','1C26',...]} |
| UniProt → RefSeq_Protein | fr="UniProtKB_AC-ID", to="RefSeq_Protein", ... | {'P43403': ['NP_001070.2']} |
注意返回类型:一个源 ID 可能映射到多个目标 ID(典型如 PDB 结构),因此返回值为列表,处理时要按result[uniprot_id]是 list 来迭代。
UniChem 侧则基于源 ID 编号做化合物换算:
u = UniChem() # 获取某化合物在全部数据库中的 ID all_ids = u.get_all_compound_ids("CHEMBL278315", src_id=1) # 1 = ChEMBL # 指定库间转换:from_src_id=6 (KEGG), to_src_id=1 (ChEMBL) result = u.get_src_compound_ids("C11222", from_src_id=6, to_src_id=1)Skill 文档还给出了完整的函数化封装模式:identifier_mapping.md 中的 Pattern 1 "Gene Symbol → 多库 ID"(先u.search("gene:ZAP70 AND organism:9606")拿 UniProt,再逐库映射 KEGG/Ensembl/RefSeq/PDB)、Pattern 2 "化合物名 → 全库 ID"、Pattern 3 "分批带错误处理的安全映射"、Pattern 4 "多跳映射(Gene → UniProt → KEGG → Pathways)"。
常见映射故障排查
- 找不到映射(空/None):核实源 ID 确实存在于源库;检查库代码拼写;尝试反向映射;部分 ID 本就无对应注释。
- 批量过大超时:按 50–100 个/批切分(
chunked_mapping)。 - 一个源 ID 对应多目标:按列表处理并迭代。
- 物种歧义:检索务必限定物种,如
gene:TP53 AND organism:9606,避免gene:TP53命中多个物种。 - 过期 ID:先
u.retrieve(id, frmt="txt")看AC行的主/次级 accession,用现行 ID 再映射。
核心能力之六:基因本体与蛋白相互作用
QuickGO 提供基因本体注释查询,GO 三大类别为 Biological Process(BP)、Molecular Function(MF)、Cellular Component(CC):
from bioservices import QuickGO g = QuickGO(verbose=False) # 获取 GO term 信息 term_info = g.Term("GO:0003824", frmt="obo") # 检索蛋白注释 annotations = g.Annotation(protein="P43403", format="tsv")蛋白-蛋白相互作用走 PSICQUIC。PSICQUIC 并非每个发行版都内置——它在 1.16.0 中缺失,因此要防御式导入并回退到IntactComplex、OmniPath或STRING:
from bioservices import PSICQUIC s = PSICQUIC(verbose=False) # 查询特定数据库(如 MINT) interactions = s.query("mint", "ZAP70 AND species:9606") # 列出可用相互作用数据库 databases = s.activeDBs可用数据库:MINT、IntAct、BioGRID、DIP、InnateDB、MatrixDB、MPIDB、UniProt 及 30+ 其他库。查询语法支持 AND、OR 与物种过滤,如"ZAP70 AND species:9606";返回 PSI-MI TAB 格式。解析惯例:按\t切分后,第 4/5 列为参与蛋白(uniprotkb:...前缀需剥除),第 11 列为相互作用类型——这与 workflow_patterns.md 及脚本中的字段索引一致。
由于 PSICQUIC 可能缺席,protein_analysis_workflow.py 采用try: from bioservices import PSICQUIC / except ImportError: PSICQUIC = None的降级策略,导入失败时该步骤打印提示后跳过,不让可选步骤拖垮整条流水线——这是编写兼容多版本代码的示范模式。
全链路实战:从脚本到源码的四条流水线
Skill 附带四个可直接执行或改造的脚本,分别对应 SKILL.md 列出的工作流。测试用例位于 tests/bioservices/test_scripts.py,用 mock 替换全部网络服务,断言"本会发出的请求"以及固定应答的解析正确性,全流程不联网即可验证。
1. 完整蛋白质分析流水线
对给定蛋白做端到端刻画:UniProt 搜索 → FASTA 序列 → BLAST 同源搜索 → KEGG 通路发现 → PSICQUIC 相互作用 → GO 注释:
export NCBI_EMAIL=your.email@example.com python scripts/protein_analysis_workflow.py ZAP70_HUMAN # 或在不设置 NCBI_EMAIL 时,把邮箱作为可选第二参数 python scripts/protein_analysis_workflow.py ZAP70_HUMAN your.email@example.com # 跳过耗时的 BLAST(可数分钟级) python scripts/protein_analysis_workflow.py P43403 user@example.com --skip-blast(以上命令需在 skills/bioservices 目录下执行。)脚本亮点(源码见 protein_analysis_workflow.py):
resolve_ncbi_email()(L43-48):CLI 参数与环境变量取邮箱并用正则^[^@\s]+@[^@\s]+\.[^@\s]+$校验,非法/缺失时 BLAST 优雅跳过;search_protein():直接识别 accession(6 位且首字母O/P/Q)避免误检索;- BLAST 轮询最长 300 秒,实时打印 elapsed;
- 每步独立
try/except包裹,单点失败不断链,末尾输出汇总表(Sequence/BLAST/Pathways/Interactions/GO 各自 ✓/✗/⊘ 状态)。
2. 通路网络分析
分析某物种所有通路的规模与相互作用,导出 CSV/SIF:
python scripts/pathway_analysis.py hsa output_directory/ # 仅分析前 N 条通路 python scripts/pathway_analysis.py mmu ./mouse_pathways --limit 50(需在 skills/bioservices 目录下执行。)脚本 pathway_analysis.py 的产出物包括:
pathway_summary.csv:每个通路的基因数、相互作用数及按类型(activation / inhibition / phosphorylation / binding/association / other)分列的计数;all_interactions.sif:SIF 三列格式(source<TAB>type<TAB>target),可直接导入 Cytoscape;pathways/子目录:逐通路*_interactions.csv(Source/Target/Interaction_Type/Link_Type)。
值得注意的源码细节是 KEGG 平铺文本的解析纪律:字段名顶格起行、续行缩进 12 空格。测试 fixture 用 ATP(C00002,formulaC10H16N5O13P3、exact mass506.9957、ChEBI 15422)校验解析器"必须精确取出这些值,且不得把 PATHWAY 块之后缩进的 DBLINKS 行误当作通路"(见 test_scripts.py),映射了脚本中current_section重置逻辑(L94-100)。统计部分还会输出基因数最多的前 10 通路与最"互联"的前 10 通路。
3. 化合物跨库检索
按名称检索化合物并汇总多库标识符与性质:
python scripts/compound_cross_reference.py Geldanamycin python scripts/compound_cross_reference.py "Adenosine triphosphate" python scripts/compound_cross_reference.py Aspirin --output aspirin_info.txt(需在 skills/bioservices 目录下执行。)脚本 compound_cross_reference.py 分五步:KEGG 检索化合物 → 解析 KEGG 条目(NAME/FORMULA/EXACT_MASS/MOL_WEIGHT/ChEBI/PATHWAY)→ UniChem 映射 KEGG→ChEMBL → ChEBI 详情(getCompleteEntity,自动补CHEBI:前缀)→ ChEMBL 详情(get_molecule,提取pref_name、full_mwt、alogp、hba/hbd、canonical_smiles)。注意它对旧方法名get_compound_by_chemblId的注释:那是 1.6 之前命名,当前用get_molecule。
4. 批量标识符转换
命令行批处理工具,输入每行一个 ID,自动切块、错误重试、限速与 CSV 导出:
python scripts/batch_id_converter.py input_ids.txt --from UniProtKB_AC-ID --to KEGG python scripts/batch_id_converter.py gene_ids.txt --from GeneID --to UniProtKB --output mapping.csv python scripts/batch_id_converter.py ids.txt --from uniprot --to ensembl --chunk-size 50 # 列出支持别名后退出 python scripts/batch_id_converter.py --list-databases(需在 skills/bioservices 目录下执行。)batch_id_converter.py 特性:
- 别名归一化
normalize_database_code():DATABASE_CODES字典让uniprot、entrez、refseq等别名自动映射为官方代码(如UniProtKB_AC-ID、GeneID、RefSeq_Protein),官方代码原样通过; - 批量转换支持
--chunk-size(默认 100)与--delay(默认 0.5s)控制请求节奏;某个块失败时逐 ID 降级重试; - 输出 CSV 含
Source_ID / Source_DB / Target_IDs / Target_DB / Mapping_Status,多条目标以;分隔; --save-failed可将失败 ID 另存文件,便于后续重试。
测试对该批处理机制覆盖全面:大列表按请求大小正确切块、失败块逐条重试、从未返回的 ID 标记失败、CSV 的Failed行确实是未映射项、别名双向归一化(test_scripts.py)。
多服务集成与最佳实践
输出格式处理
不同服务返回不同格式,SKILL.md 给出对应策略:
- XML:用 BeautifulSoup 解析(多数 SOAP 服务);
- TSV:TSV 表格数据交给 Pandas DataFrame,如
pd.read_csv(StringIO(results), sep="\t"); - Dict/JSON:直接 Python 处理;
- FASTA:交给 BioPython 做序列分析,如
SeqIO.read(StringIO(fasta_data), "fasta")。
与 Pandas / BioPython / NetworkX 的融合示例见 workflow_patterns.md:FASTA 经SeqIO得到len(record.seq)与描述;TSV 检索结果直接pd.read_csv(..., sep="\t")。结合前文对 KEGG 平铺文本"顶格字段 + 缩进续行"的解析约束,可看出 BioServices 生态的输出处理必须针对格式逐一设计解析器——这也是 Skill 附带测试专门覆盖解析正确性的原因。
限速、超时与日志
from bioservices import KEGG k = KEGG(verbose=False) # 抑制 HTTP 请求细节日志 k.TIMEOUT = 30 # 慢网络下调整超时 # 若服务支持:k.DELAY = 1 # 请求间延迟 # 部分服务支持结果缓存:service.CACHE = True / service.clear_cache()绝大多数服务支持verbose参数;TIMEOUT与可选的DELAY控制限速行为(详见 services_reference.md)。批处理通用纪律包括:批量间time.sleep(0.5)礼貌限速、对空结果做非空校验、长任务分块打印进度、中间结果落盘(json.dump(..., indent=2))。
错误处理
服务调用包在 try-except 中,且对空结果显式判定:
try: results = u.search("ambiguous_query") if results: # 处理结果 pass except Exception as e: print(f"Search failed: {e}")物种代码速查
使用标准物种缩写,需列举全部物种可用k.list("organism")或k.organismIds:
hsa:Homo sapiens(人类)mmu:Mus musculus(小鼠)dme:Drosophila melanogaster(果蝇)sce:Saccharomyces cerevisiae(酵母)eco:Escherichia coli(大肠杆菌)
参考工作流模板
除脚本外,workflow_patterns.md 定义了可复用的多步模板,并可直接套用:基因功能注释(UniProt 搜gene:TP53 AND organism:9606→ KEGG 通路 → QuickGO 按 BP/P/F/C 分组注释 → 解析retrieve(txt)中的FT DOMAIN特征行)、蛋白互作网络构建(用 PSICQUIC 逐个蛋白查询后以 NetworkX 建图并导出.gml供 Cytoscape 可视化)、多物种比较分析(对hsa/mmu/dme/sce循环调用lookfor_pathway("cell cycle")比较通路存在性)。
Skill 资源清单与延伸阅读
本 Skill 的资源组织如下:
- 脚本(skills/bioservices/scripts,可直接执行或改造):
- protein_analysis_workflow.py:端到端蛋白表征;
- pathway_analysis.py:KEGG 通路发现与网络提取(导出 CSV/SIF);
- compound_cross_reference.py:多库化合物检索;
- batch_id_converter.py:批量 ID 映射。
- 参考文档(按需加载):
- services_reference.md:40+ 服务及其方法全览(UniProt/KEGG/HGNC/MyGeneInfo/ChEBI/ChEMBL/UniChem/PubChem/NCBIblast/Reactome/PSICQUIC/IntactComplex/OmniPath/QuickGO/BioMart/ArrayExpress/ENA/PDB/Pfam/BioModels/COG/BiGG 等);
- workflow_patterns.md:多步分析工作流详解;
- identifier_mapping.md:跨库 ID 转换完整指南。
- 测试:tests/bioservices/test_scripts.py 使用离线 mock 验证全部四个脚本的请求构造与应答解析,其中 KEGG ATP 夹具与批处理切块/重试/别名归一的断言,是理解脚本预期行为的直接参考。
遇到单服务快速查询时,可参考仓库中 gget 等相邻 Skill;序列底层处理则搭配 biopython。若需在不安装依赖的前提下快速理解各 Skill 脚本的 CLI 约定与解析行为,test_scripts.py 里的skill_contract.cli.help_test_case(SKILL_ROOT)(L47)为整个 Skill 家族提供了统一的帮助信息契约测试。整体安装与使用方式请回到 BioServices SKILL.md 的 Installation 与 Credentials 小节,按其固定版本与NCBI_EMAIL约定开始第一条跨库查询流水线。
【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考