NGLess

NGLess is a domain-specific language for NGS (next-generation sequencing data) processing.

By making the analysis pipeline explicit and version-controlled, NGLess aims to produce reproducible results: scripts declare the exact version of the language and of any reference databases used. NG-meta-profiler, a collection of predefined pipelines built on NGLess, provides fast taxonomic and functional profiling of metagenomes.

NGLess cartoon

NGLess example

ngless "1.0"
input = fastq(['ctrl2.fq','ctrl2.fq','stim1.fq','stim2.fq'])
input = preprocess(input) using |read|:
    read = read[5:]
    read = substrim(read, min_quality=26)
    if len(read) < 31:
        discard

mapped = map(input, reference='hg19')
write(count(mapped, features=['gene']),
        ofile='gene_counts.csv',
        format={csv})

Latest release

The latest releases are NGLess 1.6.0-beta2 (released July 4, 2026) and NGLess 1.6.0-beta1 (released July 1, 2026), the first betas of the upcoming 1.6.0 series. See the changelog for details.

The current stable version is NGLess 1.5.0 (released September 2022), which added YAML-based sample specification, new run_for_all functions for the parallel module, and improved compression and file handling.

NGLess is available on bioconda:

conda install -c bioconda ngless

Copyright (c) 2018–2026. Luis Pedro Coelho and other group members. All rights reserved.

Navigated to NGLess