Drugmechdb
Skill BioTender-max/awesome-bio-agent-skills/skills/drugclaw/drugmechdb
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.From its SKILL.md
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.
SKILL.md
2.9 KB, 739 tokens by cl100k_base, 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).
What ships with it: 5 files
15.4 KB alongside SKILL.md, 4 of them executable
- drugmechdb_skill.pyruns6.0 KB
- example.pyruns7.2 KB
- __init__.pyruns146 B
- README.md1.2 KB
- retrieve.pyruns881 B