---
name: drug-bioactivity-assay
description: Fetch biological assays and target proteins a chemical has been tested against via PubChem.
metadata:
  category: [drug-discovery]
  venv: [cpu]
---

# Bioactivity and Assay Data Retrieval

## Goal
To programmatically retrieve the testing history of a specific chemical compound against biological targets using PubChem's Assay Summary endpoint. This skill allows filtering for "Active" outcomes, providing assay IDs (AIDs), target GeneIDs, and micromolar activity values to assess a compound's promiscuity or target specificity.

## Instructions

### 1. Extract All Assays
Retrieve all assays for a given compound (CID), regardless of outcome:

```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/get_assays.py \
  --cid 2244 \
  --limit 50 \
  --outdir research/aspirin_assays \
  --output aspirin_all_assays.json
```

### 2. Extract Only 'Active' Results
Use the `--active_only` flag to strictly return assays where the compound was marked as "Active" or showed positive binding/inhibition.

```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/get_assays.py \
  --cid 5291 \
  --active_only \
  --limit 50 \
  --outdir research/imatinib_assays \
  --output imatinib_active_assays.json
```

**Parameters**:
* `--cid`: PubChem CID of the target molecule (e.g., 5291 for Imatinib).
* `--outdir`: Directory to save the resulting JSON file.
* `--active_only`: (Optional) Flag to strictly filter results to assays where the test outcome was "Active".
* `--limit`: (Optional) Maximum number of assays to retrieve (default: 1000) to keep JSON sizes manageable.
* `--output`: (Optional) Output filename (default: `assay_summary.json`).

## Examples

We can test extracting known active targets for the cancer drug Imatinib (CID: 5291).

```bash
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/get_assays.py \
  --cid 5291 \
  --active_only \
  --limit 20 \
  --outdir ${CLAUDE_SKILL_DIR}/examples/imatinib \
  --output assays_imatinib_active.json
```

## Constraints
- **Assay Availability**: Compounds with no biological testing history in PubChem will return 0 results.
- **Reporting Variations**: High-throughput screening (HTS) assay results often lack explicit target GeneIDs or quantitative Activity Values compared to confirmatory literature assays. The script retrieves whatever is available natively in the column.
- **Network Limits**: PubChem can sporadically drop connections when rendering very large assay summaries. The script automatically handles connection drops and `HTTP 503` blocking via exponential backoff.

---
---

**Author:** Bowen Deng
**Contact:** [GitHub @learningmatter-mit](https://github.com/learningmatter-mit)
