UniD3 is a multi-knowledge-graph built from 150,000+ PubMed articles, stored as 6 GraphML files. It supports drug-disease matching, effectiveness assessment, and drug-target analysis.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add BioTender-max/awesome-bio-agent-skills --skill unid3 --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Unid3?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/biotender-max-unid3)More formats (shields.io, HTML) on the badges page.
# UniD3 - Drug Discovery Knowledge Graph
## Overview
UniD3 is a multi-knowledge-graph built from 150,000+ PubMed articles, stored as 6 GraphML files. It supports drug-disease matching, effectiveness assessment, and drug-target analysis.
- **Source**: https://github.com/QSong-github/UniD3
- **Local path**: `resources_metadata/drug_knowledgebase/UniD3`
- **Format**: GraphML (6 files, e.g. `UniD3_L1T1.graphml`)
- **Dependency**: `networkx`
## Node Schema
Each node contains:
| Field | Description |
|-------|-------------|
| `entity` | Node name (e.g. `RESPIRATORY DISEASES`) |
| `entity_type` | Type label (e.g. `DISEASE`, `DRUG`, `GENE`, `HOST`, `BIOLOGICAL PROCESS`) |
| `description` | Free-text description from PubMed articles |
| `source_id` | Chunk ID linking back to source article |
## Edge Schema
Each edge contains:
| Field | Description |
|-------|-------------|
| `source` / `target` | Connected entity names |
| `weight` | Relation strength (float) |
| `description` | Relationship description |
| `keywords` | Associated keywords |
| `source_id` | Source chunk ID |
## API Reference
### `list_graphs() → list[str]`
Return names of all 6 GraphML files.
```python
from UniD3 import list_graphs
list_graphs()
# → ["UniD3_L1T1", "UniD3_L1T2", "UniD3_L2T1", ...]
```
### `query_entities(entities, graph_names=None) → list[dict]`
Look up one or more entities by name (case-insensitive).
```python
from UniD3 import query_entities
# Single entity
query_entities("RESPIRATORY DISEASES")
# Multiple entities
query_entities(["CALVES", "INFLAMMATION MODULATION"])
# Restrict to specific graph
query_entities("CALVES", graph_names=["UniD3_L1T1"])
```
**Returns** list of dicts: `{entity, entity_type, description, source_id, graph}`
### `get_neighbors(entity, graph_names=None) → list[dict]`
Get all direct neighbors and connecting edge info for an entity.
```python
from UniD3 import get_neighbors
get_neighbors("CALVES")
```
**Returns** list of dicts: `{graph, neighbor: {entity, entity_type, description, source_id}, edge: {source, target, weight, description, keywords, source_id}}`
### `search_by_type(entity_type, graph_names=None, limit=50) → list[dict]`
Filter entities by type.
```python
from UniD3 import search_by_type
search_by_type("DISEASE", limit=10)
search_by_type("DRUG", graph_names=["UniD3_L1T1"])
```
### `search_by_keyword(keyword, graph_names=None, limit=50) → list[dict]`
Substring match over entity names and descriptions.
```python
from UniD3 import search_by_keyword
search_by_keyword("inflammation")
search_by_keyword("cancer", limit=20)
```
## Typical Workflow
```python
from UniD3 import query_entities, get_neighbors, search_by_type
# Step 1: Find a drug entity
hits = query_entities("ASPIRIN")
# Step 2: Explore its neighborhood (related diseases, targets, etc.)
neighbors = get_neighbors("ASPIRIN")
# Step 3: Filter neighbors by type
diseases = [n for n in neighbors if n["neighbor"]["entity_type"] == "DISEASE"]
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!