Tac2017
Skill BioTender-max/awesome-bio-agent-skills/skills/drugclaw/tac2017
Query TAC 2017 ADR annotated drug labels for adverse drug reactions. Use whenever the user asks about ADRs extracted from FDA drug labels, MedDRA-normalized adverse reactions, or wants to look up a drug name, ADR string, or MedDRA code in the TAC 2017 ADR corpus.From its SKILL.md
npx -y skills add BioTender-max/awesome-bio-agent-skills --skill tac2017Assembled 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
3.0 KB, 835 tokens by cl100k_base, as published. Nobody here has run it
TAC 2017 ADR Query Skill
Search 200 FDA drug labels annotated with adverse reactions, severity, and MedDRA normalization from the TAC 2017 shared task.
Entity Auto-detection
| Input Pattern | Detected As | Match Logic |
|---|---|---|
10019211 (8 digits) | MedDRA ID | exact on meddra_pt_id or meddra_llt_id |
ACTEMRA (known drug) | Drug name | exact (case-insensitive) on drug label name |
headache (known ADR) | ADR string | exact on ADR reaction string |
| anything else | Free text | substring on drug names, ADR strings, MedDRA PT/LLT names |
API
| Function | Input | Returns |
|---|---|---|
search(entity) | single entity string | list[dict] — matching label hit(s) |
search_batch(entities) | list of entity strings | dict[str, list[dict]] |
summarize(hits, entity) | hit list + query label | compact LLM-readable text |
to_json(hits) | hit list | list[dict] (JSON-serializable) |
list_drugs() | — | sorted list of all drug names |
stats() | — | dataset-level statistics dict |
Hit Dict Structure
Each hit returned by search() contains:
| Field | Type | Description |
|---|---|---|
drug | str | Drug label name |
source_file | str | XML filename |
sections | list[str] | Annotated section names (e.g. "adverse reactions") |
mention_counts | dict | Count per mention type (AdverseReaction, Severity, …) |
num_reactions | int | Total unique reactions in this label |
positive_adrs | list[str] | Positive (non-negated, non-hypothetical) ADR strings |
reactions | list[dict] | Each with adr, meddra_pt, meddra_pt_id, optional meddra_llt, meddra_llt_id, flag |
Usage
See if __name__ == "__main__" block in 37_TAC_2017_ADR.py for runnable
examples covering: drug name lookup, ADR string search, MedDRA ID search,
batch search, and JSON output.
from importlib.machinery import SourceFileLoader
tac = SourceFileLoader("tac2017", "/path/to/37_TAC_2017_ADR.py").load_module()
# Single drug
hits = tac.search("ACTEMRA")
print(tac.summarize(hits, "ACTEMRA"))
# ADR across all labels
hits = tac.search("headache")
print(tac.summarize(hits, "headache"))
# MedDRA PT ID
hits = tac.search("10019211")
# Batch
results = tac.search_batch(["ENBREL", "nausea", "10002198"])
Data
- Source: TAC 2017 ADR shared task (NLM / FDA)
- Files:
gold_xml/(99 test labels) +train_xml/(101 training labels), each annotated XML - Annotations: Mentions (AdverseReaction, Severity, Factor, DrugClass, Negation, Animal), Relations (Negated, Hypothetical, Effect), Reactions (unique ADRs with MedDRA PT/LLT normalization)
- MedDRA version: 18.1
- Path:
DATA_DIRvariable in37_TAC_2017_ADR.py - Reference: https://bionlp.nlm.nih.gov/tac2017adversereactions/
What ships with it: 5 files
22.9 KB alongside SKILL.md, 4 of them executable
- example.pyruns13.8 KB
- __init__.pyruns143 B
- README.md1.8 KB
- retrieve.pyruns774 B
- tac2017_skill.pyruns6.3 KB