nf-core Pipeline Catalog
BioLang provides native access to the nf-core catalog — over 100 curated, peer-reviewed bioinformatics pipelines built on Nextflow. Browse, search, and inspect pipelines directly from BioLang with built-in functions. No import needed.
Browsing Pipelines
Use nfcore_list() to browse all pipelines in the catalog. You can
optionally sort by "stars" (default), "name", or
"release", and limit the number of results:
# List all pipelines, sorted by stars (default)
let pipelines = nfcore_list()
pipelines |> print()
# Sort by name
nfcore_list("name") |> print()
# Get top 10 most-starred pipelines
let top10 = nfcore_list("stars", 10)
top10 |> print()
Returns a List of Records with fields: {name, description, stars, topics, latest_release}.
Searching
Search pipelines by name, description, or topics with nfcore_search().
The search is case-insensitive:
# Search for RNA-seq pipelines
nfcore_search("rnaseq") |> print()
# Search for variant-related pipelines, limit to 5
nfcore_search("variant", 5) |> print()
# Search by topic keyword
nfcore_search("single-cell") |> print()
Pipeline Details
Get detailed metadata for a specific pipeline with nfcore_info():
# Get full details for the sarek pipeline
let info = nfcore_info("sarek")
print(info)
# => { name: "sarek", full_name: "nf-core/sarek", description: "...",
# stars: 142, url: "https://...", license: "MIT", topics: [...],
# open_issues: 23, created: "2018-...", updated: "2024-..." }
Returns a Record with fields: {name, full_name, description, stars, url, license, topics, open_issues, created, updated}.
Releases
List all releases for a pipeline with nfcore_releases():
# Get all releases for rnaseq
let releases = nfcore_releases("rnaseq")
releases |> print()
# => [{ tag: "3.14.0", published_at: "2024-..." }, ...]
# Get the latest release tag
let latest = nfcore_releases("rnaseq") |> first()
print("Latest:", latest.tag)
Returns a List of Records: {tag, published_at}.
Parameter Schema
Inspect the parameter schema for a pipeline with nfcore_params().
Parameters are grouped by category:
# Get parameter schema for rnaseq
let params = nfcore_params("rnaseq")
print(params)
# => { input_output: [{ name: "input", type: "string", description: "...", default: nil }, ...],
# reference_genome: [{ name: "genome", type: "string", ... }, ...],
# ... }
# List all parameter groups
params |> keys() |> print()
# Inspect a specific group
params.input_output |> print()
Returns a Record of parameter groups, where each group maps to a List of
{name, type, description, default}.
Configuration
The nf-core catalog URL is configurable via ~/.biolang/apis.yaml
or the BIOLANG_NFCORE_CATALOG_URL environment variable. Set
GITHUB_TOKEN for higher GitHub API rate limits (5,000 req/hr
instead of 60 req/hr).
Builtin Reference
| Function | Args | Returns | Description |
|---|---|---|---|
nfcore_list |
sort_by?, limit? | List<Record> | List all pipelines, sorted by "stars" (default), "name", or "release" |
nfcore_search |
query, limit? | List<Record> | Search pipelines by name/description/topic |
nfcore_info |
name | Record | Detailed pipeline metadata from GitHub |
nfcore_releases |
name | List<Record> | All releases with tag and date |
nfcore_params |
name | Record | Parameter schema grouped by category |
Practical Examples
Find and Compare Variant Calling Pipelines
# Find all variant-related pipelines and compare them
nfcore_search("variant")
|> map(|p| {
name: p.name,
stars: p.stars,
description: p.description,
latest: p.latest_release
})
|> sort(.stars)
|> reverse()
|> print()
Inspect Pipeline Parameters Before Running
# Check what inputs sarek expects
let params = nfcore_params("sarek")
# List required parameters (those without defaults)
params
|> values()
|> flatten()
|> filter(|p| p.default == nil)
|> map(|p| { name: p.name, type: p.type, description: p.description })
|> print()
Track Pipeline Releases
# Check release history for multiple pipelines
let pipelines = ["rnaseq", "sarek", "fetchngs", "taxprofiler"]
pipelines
|> map(|name| {
let releases = nfcore_releases(name)
let latest = releases |> first()
{ pipeline: name, latest_tag: latest.tag, released: latest.published_at }
})
|> to_table()
|> print()