Psytar
Skill BioTender-max/awesome-bio-agent-skills/skills/drugclaw/psytar
Query the PsyTAR psychiatric adverse-reaction corpus. Use when the user asks about patient-reported ADRs, withdrawal symptoms, drug indications, or effectiveness for Zoloft, Lexapro, Cymbalta, or Effexor XR. Accepts drug names (brand or generic), symptom terms, or UMLS CUIs.From its SKILL.md
npx -y skills add BioTender-max/awesome-bio-agent-skills --skill psytarAssembled 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
4.0 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
PsyTAR Query Skill
891 patient reviews → 6 009 annotated sentences → extracted ADR / WD / SSI / DI entities → mapped to 918 UMLS + 755 SNOMED CT concepts.
Entity Detection & Routing
| Input Pattern | Detected As | Targets |
|---|---|---|
C0917801 | UMLS CUI | *_Mapped sheets only (UMLS1/UMLS2 cols) |
Zoloft / sertraline | Drug name | drug_id or drug columns (alias-aware) |
nausea, insomnia … | Free text | substring across all cell values |
Generic ↔ brand aliases: sertraline↔Zoloft, escitalopram↔Lexapro, duloxetine↔Cymbalta, venlafaxine↔Effexor.
API
| Function | Input | Returns |
|---|---|---|
search(entity, sheet?, label?) | single string | {sheet: [row_dict]} |
search_batch(entities, sheet?, label?) | list of strings | {entity: {sheet: [row_dict]}} |
summarize(results, entity) | result dict + label | compact text |
to_json(results) | result dict | list[dict] (flat, adds _sheet) |
describe() | — | dataset overview text |
Parameters
sheet— restrict to one sheet (fuzzy-matched:"ADR"→ADR_Identified).label— when onSentence_Labeling, keep only rows where the named label column (ADR / WD / EF / INF / SSI / DI) equals 1.
Sheet Schema
| Sheet | Description | Key Columns |
|---|---|---|
Sample | Original posts | drug_id, rating, indication, side-effect, comment, gender, age, duration |
Sentence_Labeling | 6 009 sentences, binary labels | drug_id, sentence_index, sentences, ADR, WD, EF, INF, SSI, DI, Findings, others, rating, category |
ADR_Identified | Extracted ADR mentions | drug_id, sentence_index, sentences, ADR1 … ADRn |
WD_Identified | Extracted WD mentions | drug_id, sentence_index, sentences, WD1 … WDn |
SSI_Identified | Extracted SSI mentions | drug_id, sentence_index, sentences, SSI1 … SSIn |
DI_Identified | Extracted DI mentions | drug_id, sentence_index, sentences, DI1 … DIn |
ADR_Mapped | ADR → UMLS/SNOMED | drug_id, sentence_index, ADR/ADRs, UMLS1, UMLS2, SNOMED-CT, mild, moderate, severe, persistent, not-persistent, body-site, rating, drug, class, type, entity_type |
WD_Mapped | WD → UMLS/SNOMED | (same structure as ADR_Mapped) |
SSI_Mapped | SSI → UMLS/SNOMED | (same structure) |
DI_Mapped | DI → UMLS/SNOMED | (same structure) |
Mapped-sheet qualifier columns
mild, moderate, severe — severity descriptors;
persistent, not-persistent — duration; body-site — anatomical site;
entity_type — Cognitive / Physiological / Psychological / Functional.
Usage
from importlib.machinery import SourceFileLoader
m = SourceFileLoader("psytar", "36_PSYTAR.py").load_module()
# overview
print(m.describe())
# drug → ADR mappings
res = m.search("Zoloft", sheet="ADR_Mapped")
print(m.summarize(res, "Zoloft"))
# generic name works too
res = m.search("sertraline", sheet="ADR_Mapped")
# symptom in one Identified sheet
res = m.search("nausea", sheet="ADR_Identified")
# symptom across all sheets
res = m.search("insomnia")
# UMLS CUI (auto-scoped to Mapped sheets)
res = m.search("C0917801")
# withdrawal sentences for Effexor
res = m.search("Effexor", sheet="Sentence_Labeling", label="WD")
# batch
batch = m.search_batch(["Lexapro", "insomnia", "C0917801"])
# JSON for pipeline
flat = m.to_json(m.search("Cymbalta"))
Data Source
- Corpus: PsyTAR v1.0 — CC BY 4.0
- File:
PsyTAR_dataset.xlsx— set viaDATA_PATHor envPSYTAR_XLSX - Paper: Zolnoori et al., Data in Brief 24, 103838 (2019). https://doi.org/10.1016/j.dib.2019.103838
- Stats: 891 reviews, 6 009 sentences, 4 813 ADR + 590 WD + 1 219 SSI
- 792 DI mentions, 918 UMLS / 755 SNOMED concepts
What ships with it: 5 files
16.5 KB alongside SKILL.md, 4 of them executable
- example.pyruns9.9 KB
- __init__.pyruns130 B
- psytar_skill.pyruns4.4 KB
- README.md1.4 KB
- retrieve.pyruns775 B