Galaxy ToolShed

The Galaxy ToolShed hosts thousands of community-contributed tools for the Galaxy platform, spanning genomics, proteomics, transcriptomics, and more. BioLang provides read-only browsing access via 4 built-in functions — search repositories, browse popular tools, list categories, and inspect tool details. No import needed.

Searching Repositories

Use galaxy_search() to find repositories by name or keyword. Results include the repository name, owner, description, download count, and ToolShed URL:

# Search for bwa repositories
let results = galaxy_search("bwa")
results |> print()
# => [{ name: "bwa", owner: "devteam", description: "...",
#        downloads: 48230, url: "https://toolshed.g2.bx.psu.edu/..." }, ...]

# Search with a result limit
galaxy_search("bwa", 5) |> print()

# Search for variant-related tools
galaxy_search("variant") |> print()

Returns a List of Records: {name, owner, description, downloads, url}. Default limit is 25.

Popular Tools

Browse the most popular tools in the ToolShed with galaxy_popular():

# Get top 20 most popular tools (default)
let popular = galaxy_popular()
popular |> print()

# Get top 10 and extract name + downloads
galaxy_popular(10)
  |> map(|t| { name: t.name, downloads: t.downloads })
  |> print()

Returns a List of Records: {name, owner, description, downloads, url}. Default limit is 20.

Tool Categories

List all available tool categories in the ToolShed with galaxy_categories():

# List all categories
let categories = galaxy_categories()
categories |> print()
# => [{ name: "Assembly", description: "Tools for genome assembly" },
#     { name: "Variant Analysis", description: "..." }, ...]

# Count total categories
categories |> len() |> print()

Returns a List of Records: {name, description}.

Repository Details

Get detailed metadata for a specific repository with galaxy_tool(), specifying the owner and repository name:

# Get full details for devteam's bwa repository
let info = galaxy_tool("devteam", "bwa")
print(info)

# Access specific fields
print("Name:", info.name)
print("Owner:", info.owner)
print("Downloads:", info.downloads)
print("Approved:", info.approved)
print("Last updated:", info.last_updated)

Returns a Record: {name, owner, description, downloads, approved, url, created, last_updated}.

Configuration

The Galaxy ToolShed API URL is configurable via ~/.biolang/apis.yaml or the BIOLANG_GALAXY_TOOLSHED_URL environment variable.

Builtin Reference

Function Args Returns Description
galaxy_search query, limit? List<Record> Search repositories by name or keyword (default limit 25)
galaxy_popular limit? List<Record> List most popular tools by downloads (default limit 20)
galaxy_categories List<Record> List all tool categories
galaxy_tool owner, name Record Detailed repository info with metadata

Practical Examples

Find Alignment Tools

# Search for alignment tools and sort by download count
galaxy_search("alignment", 50)
  |> sort(.downloads)
  |> reverse()
  |> map(|t| { name: t.name, owner: t.owner, downloads: t.downloads })
  |> take(10)
  |> print()

Explore Categories

# List all categories
let categories = galaxy_categories()
categories |> map(|c| c.name) |> print()

# Pick a category and search within it
galaxy_search("Assembly")
  |> map(|t| { name: t.name, owner: t.owner, downloads: t.downloads })
  |> sort(.downloads)
  |> reverse()
  |> print()

Compare Tools Across Registries

# Search for samtools in both Galaxy ToolShed and BioContainers
let galaxy_results = galaxy_search("samtools", 5)
let bc_results = biocontainers_search("samtools", 5)

print("Galaxy ToolShed results:")
galaxy_results
  |> map(|t| { name: t.name, owner: t.owner, downloads: t.downloads })
  |> print()

print("BioContainers results:")
bc_results
  |> map(|t| { name: t.name, versions: t.version_count, image: t.latest_image })
  |> print()