UCSC Genome Browser

The UCSC client provides access to the UCSC Genome Browser REST API for retrieving genome assemblies, track listings, and sequences by coordinate. It covers hundreds of genome assemblies across species. No API key is required.

ucsc_genomes

List all available genome assemblies. Takes no arguments and returns a list of records with assembly metadata:

# ucsc_genomes() — list all available genomes
let genomes = ucsc_genomes()
genomes
  |> filter(|g| g.organism |> contains("Human"))
  |> map(|g| print(g.name, g.description))

ucsc_tracks

List available tracks for a genome assembly. Takes one argument (genome name) and returns a list of track records:

# ucsc_tracks(genome) — list tracks for an assembly
let tracks = ucsc_tracks("hg38")
tracks |> map(|t| print(t.name, t.short_label))

ucsc_sequence

Retrieve a DNA sequence for a specific genomic region. Takes four positional arguments: genome, chromosome, start, and end:

# ucsc_sequence(genome, chrom, start, end)
let seq = ucsc_sequence("hg38", "chr17", 43044295, 43170245)
print(seq |> len())
print(seq |> gc_content())

# Get a short region for analysis
let brca1_exon = ucsc_sequence("hg38", "chr17", 43091435, 43091544)
print(brca1_exon)
print(brca1_exon |> gc_content())

Practical Example: Region Analysis

# Analyze the BRCA1 locus
let genome = "hg38"
let chrom = "chr17"
let start = 43044295
let end = 43170245

# 1. Get the sequence
let seq = ucsc_sequence(genome, chrom, start, end)
print("Region length:", seq |> len(), "bp")
print("GC content:", seq |> gc_content())

# 2. List available tracks
let tracks = ucsc_tracks(genome)
print("\nAvailable tracks:", tracks |> len())

Cross-Assembly Comparison

# Compare a region across genome assemblies
let gene_seq_hg38 = ucsc_sequence("hg38", "chr17", 43044295, 43170245)
let gene_seq_hg19 = ucsc_sequence("hg19", "chr17", 41196312, 41322290)

print("hg38 length:", gene_seq_hg38 |> len())
print("hg19 length:", gene_seq_hg19 |> len())