<< All versions

Skill v1.0.0

currentAutomated scan100/100
qsong-github/drugclaw/ddi-corpus
──Details
PublishedOctober 23, 2026 at 01:24 AM
Content Hashsha256:791636447ef448d3...
Git SHA66cffddd65e9
──Files
Files (1 file, 3.2 KB)
SKILL.md3.2 KBactive
SKILL.md · 111 lines · 3.2 KB

version: "1.0.0"


DDI Corpus 2013 – Drug-Drug Interaction Query Skill

Overview

FieldValue
ResourceDDI Corpus 2013
CategoryDrug-centric / Drug NLP & Text Mining
SourceGitHub
PaperHerrero-Zazo et al., 2013
Corpus Size~2,740 unique entities, ~5,000 annotated DDI pairs
SourcesDrugBank descriptions + MEDLINE abstracts

The DDI Corpus 2013 is the standard benchmark for drug-drug interaction (DDI) extraction from biomedical text. Each XML file contains sentences with annotated drug entities and pairwise DDI labels.

DDI Types:

  • mechanism – pharmacokinetic mechanism described (e.g., altered absorption/metabolism)
  • effect – clinical effect of the interaction (e.g., increased bleeding risk)
  • advise – recommendation or warning about co-administration
  • int – stated interaction without further detail

Entity Types: drug, group, brand, drug_n (active substance not approved for human use)

Setup

1. Download & extract (one-time):

bash
git clone https://github.com/isegura/DDICorpus.git
cd DDICorpus
unzip DDICorpus-2013.zip

2. Set the corpus path in 30_DDI_Corpus_2013.py:

python
CORPUS_ROOT = "/path/to/DDICorpus-master" # contains DDICorpus/Train/ and DDICorpus/Test/

Or pass --root at runtime or set env var DDI_CORPUS_ROOT.

Usage

Python API

python
from 30_DDI_Corpus_2013 import query_entities, list_all_entities, corpus_stats
# Query a single drug
result = query_entities("aspirin")
# Query multiple drugs at once
result = query_entities(["warfarin", "metformin", "digoxin"])
# List all entity names in the corpus
names = list_all_entities()
# Get corpus-level statistics
stats = corpus_stats()

CLI (直接运行)

bash
python 30_DDI_Corpus_2013.py

直接运行即输出 demo 结果(corpus 统计 → 单实体查询 → 批量查询 → 未找到示例)。 修改 __main__ 块中的实体名即可自定义查询。

Output Format

query_entities returns a JSON string. Each element:

json
{
"query": "aspirin",
"found": true,
"canonical_names": ["ASPIRIN", "Aspirin", "aspirin"],
"entity_types": ["brand", "drug"],
"total_interactions": 65,
"interactions": [
{
"partner": "ketoprofen",
"ddi_type": "mechanism",
"sentence": "concurrent administration of aspirin decreased ketoprofen protein binding...",
"source": "Train/DrugBank"
}
],
"example_sentences": ["..."]
}

If an entity is not found: {"query": "xyz", "found": false}.

Parameters

ParameterDefaultDescription
entities(required)str or list[str] — drug names to look up (case-insensitive)
corpus_rootCORPUS_ROOTPath to the extracted DDICorpus-master directory
max_interactions20Maximum interaction records returned per entity
max_sentences5Maximum example sentences returned per entity

Dependencies

Python 3.10+ standard library only (xml.etree.ElementTree, json, os, collections). No third-party packages required.

All versions