Agent Skills
› Runchuan-BU/BioClaw
› query-ensembl
query-ensembl
GitHub查询Ensembl REST API以获取基因组数据,支持基因坐标、序列、变异及跨物种比较。触发词包括ensembl、rsID等。
Trigger Scenarios
用户询问基因坐标或基因组位置
查找特定rsID或变体信息
获取基因组/cDNA/蛋白质序列
查询基因结构、外显子或转录本
进行跨物种基因同源比对
Install
npx skills add Runchuan-BU/BioClaw --skill query-ensembl -g -y
SKILL.md
Frontmatter
{
"name": "query-ensembl",
"description": "Query Ensembl for genomic data. Use when user asks about gene coordinates, genomic sequences, variants, gene structure, exons, transcripts, or species comparison. Triggers on \"ensembl\", \"gene coordinates\", \"genomic location\", \"exon\", \"transcript\", \"variant location\", \"rsid\", \"rs number\"."
}
Ensembl REST API Query
Query the Ensembl REST API for genomic annotations, sequences, and variants.
When to Use
- User asks about a gene's genomic location, exons, or transcripts
- User wants to look up an rsID or variant
- User needs genomic/cDNA/protein sequences
- User asks about gene structure or regulatory features
- User wants cross-species gene information
How to Execute
import requests
import json
BASE_URL = "https://rest.ensembl.org"
HEADERS = {"Content-Type": "application/json", "Accept": "application/json"}
# 1. Gene lookup by symbol
def lookup_gene(symbol, species="homo_sapiens"):
url = f"{BASE_URL}/lookup/symbol/{species}/{symbol}"
r = requests.get(url, headers=HEADERS, params={"expand": 1})
r.raise_for_status()
return r.json()
# 2. Get sequence
def get_sequence(ensembl_id, seq_type="genomic"):
url = f"{BASE_URL}/sequence/id/{ensembl_id}"
r = requests.get(url, headers=HEADERS, params={"type": seq_type})
r.raise_for_status()
return r.json()
# 3. Variant lookup by rsID
def lookup_variant(rsid, species="homo_sapiens"):
url = f"{BASE_URL}/variation/{species}/{rsid}"
r = requests.get(url, headers=HEADERS)
r.raise_for_status()
return r.json()
# 4. Get overlapping features in a region
def overlap_region(species, chrom, start, end, feature="gene"):
url = f"{BASE_URL}/overlap/region/{species}/{chrom}:{start}-{end}"
r = requests.get(url, headers=HEADERS, params={"feature": feature})
r.raise_for_status()
return r.json()
# 5. Cross-species homologs
def get_homologs(ensembl_id, target_species=None):
url = f"{BASE_URL}/homology/id/{ensembl_id}"
params = {}
if target_species:
params["target_species"] = target_species
r = requests.get(url, headers=HEADERS, params=params)
r.raise_for_status()
return r.json()
# Example: look up BRCA2
gene = lookup_gene("BRCA2")
print(f"Gene: {gene['display_name']}")
print(f"Ensembl ID: {gene['id']}")
print(f"Location: chr{gene['seq_region_name']}:{gene['start']}-{gene['end']}")
print(f"Strand: {'+' if gene['strand'] == 1 else '-'}")
print(f"Biotype: {gene['biotype']}")
print(f"Description: {gene.get('description', 'N/A')}")
Key Endpoints
| Endpoint | Use |
|---|---|
/lookup/symbol/{species}/{symbol} |
Gene info by symbol |
/lookup/id/{id} |
Info by Ensembl ID |
/sequence/id/{id}?type=genomic |
Get sequence |
/variation/{species}/{rsid} |
Variant info |
/overlap/region/{species}/{chr}:{start}-{end} |
Features in region |
/homology/id/{id} |
Orthologs/paralogs |
/vep/{species}/hgvs/{hgvs} |
Variant effect prediction |
Notes
- Region queries max 4,900,000 bp
- Species:
homo_sapiens,mus_musculus,danio_rerio,drosophila_melanogaster - Always use
application/jsonAccept header
Follow-up Suggestions
- "Want me to get the protein sequence for this gene?"
- "Should I check for known pathogenic variants?"
- "Want me to find orthologs in mouse?"
Version History
- a79b8c4 Current 2026-07-25 11:44


