Drugmechdb
Skill BioTender-max/awesome-bio-agent-skills/skills/drugclaw/drugmechdb
A curated collection of AI agent skills for biomedical research, covering genomics, proteomics, single-cell analysis, clinical AI, and protein design.
npx -y skills add BioTender-max/awesome-bio-agent-skills --skill drugmechdbAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Query the DrugMechDB drug mechanism-of-action database. Use whenever the user asks about drug mechanisms, drug-to-disease paths, biological targets of a drug, or wants to look up any biomedical entity (drug name, protein, disease, DrugBank ID, MESH ID, UniProt ID, GO term, etc.) in DrugMechDB.
SKILL.md
2.9 KB, as published. Nobody here has run it
DrugMechDB Query Skill
Search drug mechanism-of-action paths by entity name or ID. Each path is a directed graph: Drug → (intermediates) → Disease, with typed nodes and labeled edges.
Data
- Source:
indication_paths.json - Path:
resources_metadata/drug_mechanism/DRUGMECHDB/indication_paths.json - Records: ~4846 mechanism paths, ~32k relationships
Entity auto-detection
| Input pattern | Detected as | Example |
|---|---|---|
DB:DB00619 | DrugBank ID | exact on node/graph IDs |
MESH:D015464 | MESH ID | exact on node/graph IDs |
UniProt:P00519 | UniProt protein | exact on node IDs |
GO:0006915 | GO term | exact on node IDs |
CHEBI:*, HP:*, UBERON:*, CL:*, reactome:*, InterPro:*, PR:*, taxonomy:* | respective types | exact on node IDs |
| anything else | free text | substring match on drug/disease/node names |
API
| Function | Signature | Returns |
|---|---|---|
load(path) | path to JSON | list[dict] — full database |
build_index(db) | loaded db | (by_id, by_name, by_drug, by_disease) dicts for O(1) lookup |
search(db, entity, index=None) | single query string | list[dict] — matching paths |
search_batch(db, entities, index=None) | list of query strings | dict[str, list[dict]] |
summarize(paths, entity) | search results | compact multi-line text |
to_json(paths) | search results | list of flat dicts (id, drug, disease, nodes, links) |
Node types (14)
BiologicalProcess, Cell, CellularComponent, ChemicalSubstance, Disease, Drug, GeneFamily, GrossAnatomicalStructure, MacromolecularComplex, MolecularActivity, OrganismTaxon, Pathway, PhenotypicFeature, Protein
Quick usage
import drugmechdb_query as dq
db = dq.load() # uses default DATA_PATH
idx = dq.build_index(db) # optional, recommended for repeated queries
# Single query — by name or ID
paths = dq.search(db, "imatinib", idx)
paths = dq.search(db, "UniProt:P00519", idx)
paths = dq.search(db, "MESH:D003920", idx)
print(dq.summarize(paths, "imatinib"))
# Batch query
results = dq.search_batch(db, ["metformin", "MESH:D003920", "asthma"], idx)
for entity, paths in results.items():
print(dq.summarize(paths, entity))
# JSON export
print(dq.to_json(paths))
Output structure per path
graph: { _id, drug, disease, drugbank, drug_mesh, disease_mesh }
nodes: [{ id, label, name }, ...]
links: [{ source, target, key }, ...]
key examples: decreases activity of, causes, positively regulates, treats, increases expression of, etc. (66 relation types total).