# Unitox Query

> Query the UniTox drug toxicity database. Use whenever the user asks about organ-system toxicity ratings for a drug, multi-organ toxicity profiles, or wants to look up any entity (drug name, SMILES, SPL_ID) in UniTox.

- Skill: `gabrielmoreira/unitox-query` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/unitox-query`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/unitox-query/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/gabrielmoreira/unitox-query

---


# UniTox Query Skill

Search UniTox records by any entity. Auto-detects type by pattern:

| Input Pattern | Detected As | Match Logic |
|---|---|---|
| `b2b3be70-17d8-...` (UUID) | SPL_ID | exact on `SPL_ID` |
| long string with `=`, `[`, `]`, `@` | SMILES | exact on `smiles` / `all_smiles` |
| anything else | free text | case-insensitive substring on `generic_name` |

## API

| Function | Input | Returns |
|---|---|---|
| `load_unitox(path)` | TSV path | list[dict] (cached) |
| `search(entity)` | single entity string | list[dict] |
| `search_batch(entities)` | list of entity strings | dict[str, list[dict]] |
| `summarize(hits, entity)` | hits + label | compact ratings-only text |
| `summarize_with_reasoning(hits, entity, systems)` | hits + label + organ list | text with truncated reasoning |
| `to_json(hits)` | hits | list[dict] (ratings + metadata) |
| `list_drugs()` | – | sorted list of all drug names |

## Toxicity Systems (8 organs)

Each drug has ternary rating (`No` / `Low` / `High`) and binary rating (`Yes` / `No`) for:

| System key | Organ |
|---|---|
| `cardiotoxicity` | Heart |
| `dermatological_toxicity` | Skin |
| `hematological` | Blood |
| `infertility` | Reproductive |
| `liver_toxicity` | Liver |
| `ototoxicity` | Ear / Hearing |
| `pulmonary_toxicity` | Lung |
| `renal_toxicity` | Kidney |

## Usage

See `if __name__ == "__main__"` block in `28_UniTox.py` for runnable examples covering: single drug name search, batch search, JSON output, detailed reasoning for specific organ systems, and total drug count.

## Data

- **Source**: UniTox v1 from Zenodo (https://zenodo.org/records/11627822)
- **Paper**: https://doi.org/10.1101/2024.06.21.24309315
- **Format**: CSV or TSV (delimiter auto-detected from header line)
- **Columns**: `generic_name`, 8 × (`*_reasoning`, `*_ternary_rating`, `*_binary_rating`), `smiles`, `all_smiles`, `SPL_ID`
- **Path**: `DATA_PATH` variable in `28_UniTox.py`
- **Method**: GPT-4o extraction from FDA drug labels; 85–96% clinician concordance

