install
source · Clone the upstream repo
git clone https://github.com/mdbabumiamssm/LLMs-Universal-Life-Science-and-Clinical-Skills-
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/mdbabumiamssm/LLMs-Universal-Life-Science-and-Clinical-Skills- "$T" && mkdir -p ~/.claude/skills && cp -r "$T/Skills/Clinical/Clinical_Databases/dbsnp-queries" ~/.claude/skills/mdbabumiamssm-llms-universal-life-science-and-clinical-skills-dbsnp-queries && rm -rf "$T"
manifest:
Skills/Clinical/Clinical_Databases/dbsnp-queries/SKILL.mdsource content
<!--
# COPYRIGHT NOTICE
# This file is part of the "Universal Biomedical Skills" project.
# Copyright (c) 2026 MD BABU MIA, PhD <md.babu.mia@mssm.edu>
# All Rights Reserved.
#
# This code is proprietary and confidential.
# Unauthorized copying of this file, via any medium is strictly prohibited.
#
# Provenance: Authenticated by MD BABU MIA
-->
name: bio-clinical-databases-dbsnp-queries description: Query dbSNP for rsID lookups, variant annotations, and cross-references to other databases. Use when mapping between rsIDs and genomic coordinates or retrieving basic variant information. tool_type: python primary_tool: myvariant measurable_outcome: Execute skill workflow successfully with valid output within 15 minutes. allowed-tools:
- read_file
- run_shell_command
dbSNP Queries
Query rsID via myvariant.info
import myvariant mv = myvariant.MyVariantInfo() def get_rsid_info(rsid): '''Get variant info by rsID''' result = mv.getvariant(rsid, fields=['dbsnp', 'clinvar', 'gnomad_exome']) return result result = get_rsid_info('rs121913527')
Query via NCBI Entrez
from Bio import Entrez import xml.etree.ElementTree as ET Entrez.email = 'your@email.com' def search_dbsnp(rsid): '''Search dbSNP by rsID''' handle = Entrez.esearch(db='snp', term=rsid) record = Entrez.read(handle) handle.close() return record def fetch_dbsnp(snp_id): '''Fetch dbSNP record by internal ID''' handle = Entrez.efetch(db='snp', id=snp_id, rettype='xml') xml_data = handle.read() handle.close() return xml_data
Map Coordinates to rsID
def coords_to_rsid(chrom, pos, ref, alt): '''Find rsID for genomic coordinates''' mv = myvariant.MyVariantInfo() # Query by HGVS notation hgvs = f'chr{chrom}:g.{pos}{ref}>{alt}' result = mv.getvariant(hgvs, fields=['dbsnp.rsid']) if result: return result.get('dbsnp', {}).get('rsid') return None
Map rsID to Coordinates
def rsid_to_coords(rsid): '''Get genomic coordinates for rsID''' mv = myvariant.MyVariantInfo() result = mv.getvariant(rsid, fields=['dbsnp', 'vcf']) if not result: return None dbsnp = result.get('dbsnp', {}) return { 'chrom': dbsnp.get('chrom'), 'pos': dbsnp.get('hg38', {}).get('start'), 'ref': dbsnp.get('ref'), 'alt': dbsnp.get('alt') }
Batch rsID Lookup
def batch_rsid_lookup(rsids, fields=None): '''Look up multiple rsIDs''' mv = myvariant.MyVariantInfo() if fields is None: fields = ['dbsnp', 'clinvar.clinical_significance', 'gnomad_exome.af.af'] results = mv.getvariants(rsids, fields=fields) return results
Parse dbSNP Annotations
def parse_dbsnp(result): '''Extract key dbSNP annotations''' dbsnp = result.get('dbsnp', {}) return { 'rsid': dbsnp.get('rsid'), 'chrom': dbsnp.get('chrom'), 'pos_hg38': dbsnp.get('hg38', {}).get('start'), 'pos_hg19': dbsnp.get('hg19', {}).get('start'), 'ref': dbsnp.get('ref'), 'alt': dbsnp.get('alt'), 'gene': dbsnp.get('gene', {}).get('symbol'), 'class': dbsnp.get('class'), # snv, ins, del, etc. 'validated': dbsnp.get('validated') }
Variant Classes in dbSNP
| Class | Description |
|---|---|
| snv | Single nucleotide variant |
| ins | Insertion |
| del | Deletion |
| indel | Insertion/deletion |
| mnv | Multiple nucleotide variant |
Query NCBI Variation Services API
import requests def query_spdi(rsid): '''Query NCBI Variation Services for SPDI notation''' url = f'https://api.ncbi.nlm.nih.gov/variation/v0/refsnp/{rsid[2:]}' response = requests.get(url) if response.ok: return response.json() return None
Related Skills
- myvariant-queries - Aggregated variant queries
- clinvar-lookup - ClinVar pathogenicity
- database-access/entrez-search - General Entrez queries