sciagent-skill-creator
Scaffold a new SciAgent-Skills entry. Picks pipeline/toolkit/database/guide template, creates skills/{category}/{name}/SKILL.md with valid frontmatter, appends…
JASPAR 2024 TF binding profiles via REST API and pyJASPAR. Retrieve PFMs/PWMs by TF name, JASPAR ID, species, or structural class. Scan DNA for TFBS; browse by taxon (human, mouse) or TF family (bHLH, zinc finger). Use for motif enrichment input, TFBS scanning, and regulatory
$ npx -y skills add jaechang-hits/SciAgent-Skills --skill jaspar-database --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/jaspar-databaseContext preview
The summary Claude sees to decide when to auto-load this skill.
JASPAR 2024 TF binding profiles via REST API and pyJASPAR. Retrieve PFMs/PWMs by TF name, JASPAR ID, species, or structural class. Scan DNA for TFBS; browse by taxon (human, mouse) or TF family (bHLH, zinc finger). Use for motif enrichment input, TFBS scanning, and regulatory
name: "jaspar-database" description: "JASPAR 2024 TF binding profiles via REST API and pyJASPAR. Retrieve PFMs/PWMs by TF name, JASPAR ID, species, or structural class. Scan DNA for TFBS; browse by taxon (human, mouse) or TF family (bHLH, zinc finger). Use for motif enrichment input, TFBS scanning, and regulatory sequence analysis. For ChIP-seq peak motif discovery use homer-motif-analysis; for regulatory variant scoring use regulomedb-database." license: "CC-BY-4.0"
JASPAR is a curated, open-access database of transcription factor (TF) binding profiles represented as position frequency matrices (PFMs). The 2024 release contains 1,209 profiles in the CORE vertebrate collection, covering 783 TFs with experimentally validated binding data from SELEX, ChIP-seq, and PBM experiments. Access is free via the JASPAR REST API at `https://jaspar.elixir.no/api/v1/` — no authentication required — and through the `pyJASPAR` Python library for matrix retrieval and manipulation.
pip install requests pandas matplotlib numpy pip install pyJASPAR # optional; pulls in biopython
import requests
JASPAR_API = "https://jaspar.elixir.no/api/v1"
# Search for CTCF profile in the CORE vertebrate collection
r = requests.get(f"{JASPAR_API}/matrix/", params={
"search": "CTCF",
"collection": "CORE",
"tax_group": "vertebrates",
"format": "json"
}, timeout=15)
r.raise_for_status()
results = r.json()
print(f"Profiles found: {results['count']}")
for m in results["results"][:3]:
print(f" {m['matrix_id']} {m['name']} sites={m['sites']} type={m['type']}")
# Profiles found: 2
# MA0139.1 CTCF sites=190 type=ChIP-seq
# MA1929.1 CTCF sites=2135 type=ChIP-seqSearch for TF profiles by TF name, species, collection, or taxonomic group. Returns a paginated list of matching profile records.
import requests, time
JASPAR_API = "https://jaspar.elixir.no/api/v1"
def jaspar_search(search=None, collection="CORE", tax_id=None, tax_group=None,
tf_class=None, tf_family=None, page_size=50):
"""Search JASPAR matrices. Returns list of result dicts."""
params = {"format": "json", "page_size": page_size}
if search: params["search"] = search
if collection: params["collection"] = collection
if tax_id: params["tax_id"] = tax_id
if tax_group: params["tax_group"] = tax_group
if tf_class: params["tf_class"] = tf_class
if tf_family: params["tf_family"] = tf_family
all_results = []
url = f"{JASPAR_API}/matrix/"
while url:
r = requests.get(url, params=params if url == f"{JASPAR_API}/matrix/" else None, timeout=15)
r.raise_for_status()
data = r.json()
all_results.extend(data["results"])
url = data.get("next") # follow pagination
time.sleep(0.3)
return all_results
# Example: all CORE vertebrate profiles for GATA family
gata_profiles = jaspar_search(search="GATA", collection="CORE", tax_group="vertebrates")
print(f"GATA profiles: {len(gata_profiles)}")
for m in gata_profiles[:4]:
print(f" {m['matrix_id']} {m['name']:12s} {m.get('tf_class','')} sites={m['sites']}")Fetch the full profile record for a specific matrix ID, including the raw PFM counts, metadata, and TF annotations.
import requests
JASPAR_API = "https://jaspar.elixir.no/api/v1"
def get_matrix(matrix_id):
"""Return full matrix record for a JASPAR ID (e.g. 'MA0139.1')."""
r = requests.get(f"{JASPAR_API}/matrix/{matrix_id}/", params={"format": "json"}, timeout=15)
r.raise_for_status()
return r.json()
m = get_matrix("MA0139.1") # CTCF
print(f"ID: {m['matrix_id']} Name: {m['name']}")
print(f"Collection: {m['collection']} Type: {m['type']}")
print(f"Species: {[s['name'] for s in m.get('species', [])]}")
print(f"UniProt: {m.get('uniprot_ids', [])}")
print(f"Sites: {m['sites']} Binding sites used to build matrix")
print(f"TF class: {m.get('class_name', 'n/a')} Family: {m.get('family_name', 'n/a')}")
# PFM structure: dict mapping position (as str) -> {A, C, G, T: count}
pfm = m["pfm"]
n_positions = len(pfm)
print(f"\nPFM length: {n_positions} positions")
print(f"Position 0: {pfm['0']}") # {A: x, C: y, G: z, T: w}
# Position 0: {'A': 87, 'C': 12, 'G': 22, 'T': 69}Convert a raw PFM (count matrix) to a position weight matrix (PWM) using log-odds scoring. The PWM is used for binding site scan
Turn your AI coding agent into a life sciences expert — 199 bioinformatics skills for Claude Code covering RNA-seq, single-cell analysis, genomics, proteomics, drug discovery, and more. Boosted BixBench from 65% to 92%. Open source.
Scaffold a new SciAgent-Skills entry. Picks pipeline/toolkit/database/guide template, creates skills/{category}/{name}/SKILL.md with valid frontmatter, appends…
Bayesian modeling with PyMC 5: priors, likelihood, NUTS/ADVI sampling, diagnostics (R-hat, ESS), LOO/WAIC comparison, prediction. Hierarchical, logistic, GP…
Time-to-event modeling with scikit-survival: Cox PH (elastic net), Random Survival Forests, Boosting, SVMs for censored data. C-index, Brier, time-dependent…
Guided statistical analysis: test choice, assumption checks, effect sizes, power, APA reporting. Pick tests, verify assumptions, or format results for…
Python statistical modeling: regression (OLS, WLS, GLM), discrete (Logit, Poisson, NegBin), time series (ARIMA, SARIMAX, VAR), with rigorous inference,…
DL cell/nucleus segmentation for fluorescence and brightfield microscopy. Pre-trained models (cyto3, nuclei, tissuenet) and a generalist flow-based algorithm…