mcpField
T
tooluniverse-drug-repurposing

tooluniverse-drug-repurposing

github.com/mims-harvard其他1.8k398 次安装3 天前更新
代码仓库

关于 tooluniverse-drug-repurposing

这是一个用于发现和评估药物新适应症的 ToolUniverse 技能,结合靶点、化合物、疾病和基因表达特征策略,并评估证据、安全性、可行性及专利。

主要功能

  1. 01四种药物再利用搜索策略
  2. 02疾病与靶点分析
  3. 03药物机制和安全性审查
  4. 04证据分级与候选药评分
  5. 05专利格局检查

适用场景

  1. 01为疾病靶点寻找药物
  2. 02评估药物用于其他适应症
  3. 03比较再利用候选药及其证据
  4. 04优先筛选前检查专利状态

MCP 相关

作为 ToolUniverse 技能,它引导客户端调用 ToolUniverse 工具获取疾病、靶点、药物、安全性、文献、临床试验和专利数据。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-drug-repurposing

安装后在 Claude Code 中输入/tooluniverse-drug-repurposing确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

EXAMPLES.md
PROCEDURES.md
REFERENCE.md
REPORT_TEMPLATE.md
strategies_and_patterns.md

详细介绍

使用 ToolUniverse 进行药物再利用

使用多种计算策略,系统地识别和评估药物再利用候选药物。

重要:在工具调用中始终使用英文术语。请使用用户的语言作答。


搜索前的推理

先问:这种药物为什么可能对一种新疾病有效?有三种策略:

  • (a) 相同靶点:药物的主要靶点也与新疾病有关。这是最有力的假设——在进行任何其他搜索之前,先使用 OpenTargets 检查该靶点在两种疾病中是否都有遗传证据。
  • (b) 脱靶活性:该药物具有与新疾病相关的次要靶点或脱靶效应。检查 ChEMBL 生物活性数据,涵盖该药物的所有已知靶点,而不只是其主要靶点。
  • (c) 共享通路:即使靶点本身与遗传关联无关,原适应症和新疾病也可能共享分子通路。使用 Reactome 和 STRING 比较两种疾病之间的通路重叠情况。

每种策略使用不同的工具,证据权重也不同。先确定适用哪种策略,再选择下方对应的工作流。不要不加判断地运行全部三种策略——应根据药物的作用机制,推理哪种策略最合理。

查证,不要猜测:绝不要假定药物作用于某个靶点、某个靶点与疾病相关,或存在通路重叠。使用工具调用验证每一项关联。

核心策略

  1. 基于靶点:疾病靶点 -> 找出可调节这些靶点的药物
  2. 基于化合物:已批准药物 -> 找出新的疾病适应症
  3. 疾病驱动:疾病 -> 靶点 -> 与现有药物匹配
  4. 基于特征:疾病基因表达特征 -> 找出扰动特征能够逆转该特征的药物(基于连接图谱的推理)。当疾病具有表征良好的差异表达特征(例如来自 GEO/TCGA),但没有单一的已验证靶点时使用此策略——此策略无需任何靶点假设,只需上调/下调基因列表。

工作流概览

Phase 1: Disease & Target Analysis
  Get disease info (OpenTargets), find associated targets, get target details

Phase 2: Drug Discovery
  Search DrugBank, DGIdb, ChEMBL for drugs targeting disease-associated genes
  Get drug details, indications, pharmacology

Phase 3: Safety & Feasibility Assessment
  FDA warnings, FAERS adverse events, drug interactions, ADMET predictions

Phase 4: Literature Evidence
  PubMed, Europe PMC, clinical trials for existing evidence

Phase 5: Scoring & Ranking
  Composite score: target association + safety + literature + drug properties

另请参阅:PROCEDURES.md,了解详细的分步流程和代码模式。


快速入门

from tooluniverse import ToolUniverse
tu = ToolUniverse()
tu.load_tools()

# Step 1: Get disease targets
disease_info = tu.tools.OpenTargets_get_disease_id_description_by_name(diseaseName="rheumatoid arthritis")
# Response nests ID at data.search.hits[0].id
disease_id = disease_info['data']['search']['hits'][0]['id']
targets = tu.tools.OpenTargets_get_associated_targets_by_disease_efoId(efoId=disease_id, size=10)

# Step 2: Find drugs for each target
# Response nests targets at data.disease.associatedTargets.rows
rows = targets['data']['disease']['associatedTargets']['rows']
for target in rows[:5]:
    gene = target['target']['approvedSymbol']
    drugs = tu.tools.DGIdb_get_drug_gene_interactions(genes=[gene])

关键 ToolUniverse 工具

疾病与靶点:

  • OpenTargets_get_disease_id_description_by_name - 疾病查询
  • OpenTargets_get_associated_targets_by_disease_efoId - 疾病相关靶点
  • UniProt_get_entry_by_accession - 蛋白质详情

药物发现:

  • drugbank_get_drug_name_and_description_by_target_name - 按靶点查询药物。参数:query=(不是 target_name=)
  • drugbank_get_drug_name_and_description_by_indication - 按适应症查询药物。参数:query=(不是 indication=)
  • DGIdb_get_drug_gene_interactions - 药物-基因相互作用。响应路径:data.data.genes.nodes[0].interactions
  • ChEMBL_search_drugs / ChEMBL_get_drug_mechanisms - 药物搜索和作用机制(MOA)

专利/IP(USPTO Patent File Wrapper——参见下文的“专利格局检查”):

  • get_patent_overview_by_text_query - 按关键词/标题搜索专利
  • get_patent_application_metadata、get_patent_term_adjustment_data、get_patent_continuity_data、get_patent_foreign_priority_data、get_associated_documents_metadata - 按申请号查询单项申请详情

药物信息(所有 DrugBank 工具都使用 query= 作为搜索参数,并支持 case_sensitive=False、exact_match=False、limit=N):

  • drugbank_get_drug_basic_info_by_drug_name_or_id - 基本信息。参数:query="drug_name"
  • drugbank_get_indications_by_drug_name_or_drugbank_id - 已批准适应症。参数:query="drug_name"
  • drugbank_get_pharmacology_by_drug_name_or_drugbank_id - 药理学信息。参数:query="drug_name"
  • drugbank_get_targets_by_drug_name_or_drugbank_id - 药物靶点。参数:query="drug_name"

安全性:

  • FDA_get_warnings_and_cautions_by_drug_name - FDA 警告
  • FAERS_search_reports_by_drug_and_reaction - 不良事件。参数:medicinalproduct=(不是 drug_name=)
  • FAERS_count_death_related_by_drug - 严重结局。参数:medicinalproduct=(不是 drug_name=)
  • drugbank_get_drug_interactions_by_drug_name_or_id - 药物相互作用

性质预测:

  • ADMETAI_predict_physicochemical_properties / ADMETAI_predict_toxicity - ADMET 和毒性

通路与网络分析:

  • ReactomeAnalysis_pathway_enrichment - 通路富集。参数:identifiers="SOD1\nTARDBP\nFUS"(以换行符分隔的字符串,不是数组)
  • STRING_get_network - 蛋白质相互作用网络。参数:identifiers="SOD1\rTARDBP\rFUS"(以回车符分隔的字符串),species=9606
  • CTD_get_gene_diseases - 精选的基因-疾病关联。参数:input_terms="gene_symbol"(不是 gene_symbol=)

文献与临床试验:

  • PubMed_search_articles / EuropePMC_search_articles - 文献搜索
  • search_clinical_trials - ClinicalTrials.gov 搜索。使用 condition 指定疾病名称。intervention 筛选条件较严格,可能会遗漏试验——可改用 query_term,以更广泛地匹配药物名称。

中枢神经系统疾病注意事项:对于神经系统适应症(ALS、阿尔茨海默病、帕金森病),应优先考虑能够穿透血脑屏障的候选药物。由于 ADMETAI_predict_BBB_penetrance 可能需要安装 tooluniverse[ml] 附加组件,可使用 ChEMBL 分子性质(MW < 500、PSA < 90)作为血脑屏障穿透能力的替代指标。还应考虑给药途径(对于吞咽困难的患者,优先选择口服给药)以及临床前模型中的性别特异性效应。


评分与决策框架

再利用可行性评分(0-100)
类别分值评分标准
靶点关联性0-4040:靶点有疾病相关的遗传证据(GWAS、罕见变异);25:靶点位于疾病相关通路中(Reactome、KEGG);15:靶点在疾病组织中呈差异表达;5:靶点与疾病基因共享一个 GO 术语
安全性特征0-3030:FDA 批准的药物,无黑框警告,安全记录明确;20:FDA 批准,且警告可管理;10:有 II 期及以上数据,安全性可接受;0:仅有临床前数据或存在严重安全性信号
文献证据0-2020:存在针对新适应症的 II 期及以上试验;15:病例报告或回顾性研究显示疗效;10:有临床前体内证据(动物模型);5:仅有体外证据;0:没有既往证据
药物特性0-1010:口服、生物利用度高、可获得 IP;5:注射剂或治疗窗较窄;0:药代动力学较差或制剂存在挑战

分类:

  • 80-100:强有力的候选药物——进入临床评估
  • 60-79:前景良好——值得进行临床前验证或回顾性研究
  • 40-59:推测性候选药物——需要大量补充证据
  • <40:较弱——若无新的机制学见解,很可能不值得继续研究
再利用证据分级
等级定义行动
E1(临床)针对新适应症的现有临床试验(任意阶段)高优先级——查看试验结果
E2(流行病学)显示获益的回顾性/观察性数据中优先级——设计前瞻性研究
E3(临床前)针对新适应症的动物模型证据常规优先级——验证作用机制
E4(计算)仅有靶点重叠、网络邻近性或分子相似性低优先级——需要实验验证
如何解读和综合结果

完成阶段 1-4 后,通过回答以下问题进行综合分析:

  1. 该靶点在这种疾病中的作用是否已得到验证? 查看 OpenTargets 关联评分(>0.5 = 强)。与遗传证据(GWAS 命中、罕见变异研究)交叉核对。如果靶点关联仅处于通路层面,再利用假设就具有推测性。

  2. 该药物在可达到的剂量下是否确实能作用于该靶点? 查看 ChEMBL 中的 IC50/Ki 值。如果该药物对新靶点的亲和力比对原靶点弱 >10 倍,那么在安全剂量下不太可能产生临床疗效。

  3. 安全边际有多大? 比较新适应症所需剂量与已批准剂量。如果需要更高剂量,原适应症的安全性数据可能不适用。

  4. 是否有既往临床证据? 针对新适应症的 II 期试验(即使失败)也比 100 条计算预测更有参考价值。首先检查 search_clinical_trials。

  5. 竞争格局如何? 如果该疾病已有更好的药物,再利用的价值就很小。查看 DrugBank 中已批准疗法的适应症。


最佳实践

  1. 首先检查临床试验:search_clinical_trials(condition="[disease]", intervention="[drug]") —— 如果已有相关试验,就从那里开始
  2. 用遗传学验证靶点:遗传证据(GWAS、罕见变异)是预测药物研发成功与否的最有力指标
  3. 安全第一:优先考虑安全性特征已知的获批药物
  4. 剂量很重要:如果一种药物必须达到获批剂量的 100 倍才能作用于疾病靶点,就不适合作为药物再利用候选
  5. 机制胜过相关性:仅凭网络邻近性还不够——要解释药物为何有效
  6. 考虑知识产权和剂型:仿制药更容易用于药物再利用,但更难为试验筹集资金。请参阅下文“专利格局检查”,核实知识产权状态,不要因为药物年代久远或在某个市场已成为仿制药,就假定其专利已到期——专利期限调整和继续申请可能使保护期远超名义上的 20 年期限。
专利格局检查(USPTO)

在优先考虑药物再利用候选药物之前,请检查新的用途(或化合物本身)是否已被有效专利主张。以下 6 个工具封装了 USPTO 专利档案 API:

工具用途
get_patent_overview_by_text_query按关键词/标题搜索,例如 applicationMetaData.inventionTitle:"your drug or use"
get_patent_application_metadata按申请号获取一项申请的完整元数据(申请/授权日期、CPC 分类)
get_patent_term_adjustment_data专利期限调整(PTA)——在名义上的 20 年期限之外额外授予了多少保护时间
get_patent_continuity_data母案/子案继续申请关系——通过继续申请,化合物的保护期可能远超原始申请日期
get_patent_foreign_priority_data外国优先权主张(适用于全球知识产权格局分析,不仅限于美国)
get_associated_documents_metadata该申请的相关公开文件/授权信息

需要 USPTO_API_KEY(免费,可在 https://data.uspto.gov/myodp 注册)。没有有效密钥时,每次调用都会返回 HTTP 403——已在线验证:get_patent_overview_by_text_query 和 get_patent_application_metadata 均返回 HTTP Error: 403,并附有 USPTO 自己的说明:403 表示密钥遭拒(无效,或新签发的密钥仍在激活中),而非查询格式错误。对于特定专利号,404 表示该专利不在专利档案数据集的覆盖范围内,并不代表工具无法使用。

工作流:使用 get_patent_overview_by_text_query 按药物/化合物名称或标题关键词搜索(将多词短语用转义的双引号括起来进行精确匹配)→ 从搜索结果中获取一个 applicationNumberText → 提取专利期限调整和继续申请数据,以查看实际剩余保护期,因为继续申请和 PTA 都会使实际到期日比按名义授权日期 + 20 年计算得出的日期更晚。基础化合物专利看似已到期的药物,仍可能受用途专利或剂型继续申请的保护——在认定某化合物无需许可即可用于药物再利用之前,务必检查继续申请数据。

基于特征的药物再利用(LINCS / L1000FWD)

对于策略 4,反转疾病本身的基因表达特征,而不是围绕单个靶点进行推理:

工具用途
LINCS_search_signatures(drug_name=..., cell_line=..., limit=...)查找已知药物的现有 L1000 / 其他检测扰动特征——可用于在将候选化合物与疾病特征进行比较之前,确认该化合物自身的转录组印迹
LINCS_list_libraries(keyword=..., limit=...)浏览 LINCS SigCom 的 431+ 个特征库(L1000 表达、激酶分析、细胞生长抑制、蛋白质组学),为特定问题找到合适的检测类型
L1000FWD_sig_search(up_genes=[...], down_genes=[...], n_results=..., mode=...)核心连接图查询:提交疾病中上调 / 下调的差异表达基因列表,获取其 L1000 扰动特征与疾病特征负相关(候选药物再利用命中)或正相关(机制模拟物)的药物

工作流:先得出疾病的上调 / 下调基因集(例如,来自已发表的差异表达分析、GEO 数据集,或本仓库的 tooluniverse-rnaseq-deseq2 输出)→ L1000FWD_sig_search(up_genes=disease_up, down_genes=disease_down, mode="reverse") → 每个命中结果都会返回 combined_scores/pvals/qvals——按分数排序,并将排名靠前的反转命中视为 E4(计算)候选项;它仍需像其他策略一样接受靶点验证和剂量可行性审查,不能将其视为绕过这些步骤的捷径。通过 LINCS_search_signatures(drug_name=<hit>) 交叉核查任何有希望的命中,直接查看其特征,而不要只相信连接分数。

已验证可正常使用:LINCS_search_signatures(drug_name="vorinostat") 和 L1000FWD_sig_search 均会返回真实的非空结果——这是一种可用、可查询的策略,而不是占位内容。

跨知识图谱查询(NCATS Biomedical Data Translator)

如需快速一次性扫描约 15 个知识提供方(而不是逐个查询 OpenTargets / ChEMBL / Reactome),NCATS Translator 工具提供了符合 biolink 标准的替代方案:

工具用途
NCATSTranslator_resolve_entity(name=..., biolink_type=...)通过 SRI Name Resolution 将自由文本解析为 Translator 标准化的 CURIE(例如,name="Alzheimer disease" → curie="MONDO:0004975")
NCATSTranslator_query_associations(entity_id=..., target_category=..., predicate=...)通过 Aragorn 推理器进行单跳 biolink 查询——例如,entity_id="MONDO:0004975"、target_category="ChemicalEntity"、predicate="treats" 会返回按分数排序的候选治疗方案,并提供来源 / 出版物数量溯源信息

已验证可正常使用:resolve_entity(name="Alzheimer disease") → MONDO:0004975;query_associations(entity_id="MONDO:0004975", target_category="ChemicalEntity", predicate="treats") → 返回真实的排序命中结果(例如,CHEBI:87631“statin”,分数约为 0.9)。这适合作为策略 (c) 式的广度检查——可在早期低成本运行,但其排序“分数”属于 E4(计算)证据,与其他网络邻近性信号一样,不能替代上述靶点遗传学 / ChEMBL 亲和力 / 临床试验验证步骤。

计算流程:药物-靶点剂量可行性检查

如果一种药物只有在达到已批准剂量的 100 倍时才能作用于新靶点,那么它就不是可行的药物再利用候选项。在确定药物-靶点配对后,使用此流程:

# Drug-target dose feasibility analysis
# Uses ChEMBL bioactivity data from ToolUniverse
from tooluniverse import ToolUniverse

tu = ToolUniverse()
tu.load_tools()

def check_dose_feasibility(drug_name, original_target, new_target):
    """
    Compare drug's potency at original vs new target.
    If new_target IC50 > 10x original_target IC50, flag as unlikely feasible.
    """
    # Get bioactivity for original target
    orig = tu.run_one_function({
        'name': 'ChEMBL_search_activities',
        'arguments': {
            'molecule_chembl_id': drug_name,  # or search first
            'target_chembl_id': original_target,
            'limit': 10
        }
    })

    # Get bioactivity for new target
    new = tu.run_one_function({
        'name': 'ChEMBL_search_activities',
        'arguments': {
            'molecule_chembl_id': drug_name,
            'target_chembl_id': new_target,
            'limit': 10
        }
    })

    # Extract IC50/Ki values and compare
    # If new target requires >10x concentration → NOT FEASIBLE at safe doses
    # If new target is within 3x → PROMISING
    # If new target is within 1x → STRONG candidate
    pass  # Parse actual values from results

# Alternative: Quick Cmax check
# If published Cmax at approved dose < IC50 for new target → NOT FEASIBLE
# Cmax data can be found in:
#   - DrugBank pharmacology section
#   - DailyMed clinical pharmacology section
#   - PubMed PK studies

关键原则:药物再利用失败最常见的原因是新靶点处的药物暴露不足。始终检查药物在已批准剂量下的浓度是否达到新靶点的 IC50。


故障排除

问题解决方案
未找到疾病尝试同义词或通过 EFO ID 查找
没有针对该靶点的药物检查 HUGO 命名规范,扩展到通路级别,尝试相似靶点
专利工具返回 HTTP 403USPTO_API_KEY 缺失或无效,或者新签发的密钥仍在激活中——请在 https://data.uspto.gov/myodp 验证;这不是查询问题
专利工具针对已知专利返回 HTTP 404该专利不在 Patent File Wrapper 数据集的覆盖范围内,并非查询有误
文献不足改为搜索药物类别,检查临床前研究或动物研究
安全性数据不可用该药物可能未获美国批准,请查看 EMA 或临床试验安全性信息

参考文件

  • REFERENCE.md - 详细参考文档
  • EXAMPLES.md - 药物再利用分析示例
  • PROCEDURES.md - 附代码的分步流程
  • REPORT_TEMPLATE.md - 输出报告模板
  • 相关技能:disease-intelligence-gatherer、chemical-compound-retrieval、tooluniverse-sdk

评论

支持 Markdown