Source code for tooluniverse.ucsc_tool

import requests
from .base_tool import BaseTool
from .tool_registry import register_tool


[docs] @register_tool("UCSCTool") class UCSCTool(BaseTool): """ Local tool wrapper for UCSC Genome Browser track API. Queries knownGene track for genomic regions. """
[docs] def __init__(self, tool_config): super().__init__(tool_config) self.base = "https://api.genome.ucsc.edu/getData/track" self.session = requests.Session()
[docs] def run(self, arguments): genome = arguments.get("genome", "hg38") chrom = arguments.get("chrom") start = arguments.get("start") end = arguments.get("end") track = arguments.get("track", "knownGene") if not all([chrom, start is not None, end is not None]): return {"error": "Missing required parameters: chrom, start, end"} params = { "genome": genome, "track": track, "chrom": chrom, "start": start, "end": end, } resp = self.session.get(self.base, params=params, timeout=30) resp.raise_for_status() data = resp.json() features = data.get(track, []) items_returned = len(features) # Extract key fields from each feature processed_features = [] for feature in features: processed_features.append( { "name": feature.get("name", ""), "geneName": feature.get("geneName", ""), "chrom": feature.get("chrom", ""), "chromStart": feature.get("chromStart"), "chromEnd": feature.get("chromEnd"), "strand": feature.get("strand", ""), } ) return { "itemsReturned": items_returned, "features": processed_features, }