NGLess: NGLess implements ngless, a DSL for processing sequencing data

[ domain-specific-language, library, mit, program ] [ Propose Tags ]

NGLess implements a domain-specific language for processing next generation data, particularly metagenomics.

[Skip to Readme]


  • BuiltinFunctions
  • BuiltinModules
    • BuiltinModules.Argv
    • BuiltinModules.AsReads
    • BuiltinModules.Assemble
    • BuiltinModules.Checks
    • BuiltinModules.LoadDirectory
    • BuiltinModules.ORFFind
    • BuiltinModules.QCStats
    • BuiltinModules.Readlines
    • BuiltinModules.Remove
    • BuiltinModules.Samples
  • CWL
  • Citations
  • CmdArgs
  • Configuration
  • Data
    • Data.FastQ
      • Data.FastQ.Utils
    • Data.Fasta
    • Data.GFF
    • Data.Sam
  • Dependencies
    • Dependencies.Embedded
    • Dependencies.Versions
  • ExternalModules
  • FileManagement
  • FileOrStream
    • FileOrStream.Types
  • Interpret
  • Interpretation
    • Interpretation.Count
      • Interpretation.Count.RefSeqInfoVector
    • Interpretation.CountFile
    • Interpretation.FastQ
    • Interpretation.Map
    • Interpretation.Select
    • Interpretation.Substrim
    • Interpretation.Unique
    • Interpretation.Write
  • JSONScript
  • Language
  • Modules
  • NGLess
    • NGLess.NGError
    • NGLess.NGLEnvironment
  • Output
  • Parse
  • ReferenceDatabases
  • StandardModules
    • StandardModules.Batch
    • StandardModules.Example
    • Mappers
      • StandardModules.Mappers.Bwa
      • StandardModules.Mappers.Minimap2
      • StandardModules.Mappers.Soap
    • StandardModules.Minimap2
    • StandardModules.Mocat
    • StandardModules.Motus
    • StandardModules.NGLStdlib
    • StandardModules.Parallel
    • StandardModules.Samtools
    • StandardModules.Soap
  • Tokens
  • Transform
  • Types
  • Utils
    • Utils.Batch
    • Utils.Conduit
    • Utils.Debug
    • Utils.Here
    • Utils.IntGroups
    • Utils.LockFile
    • Utils.Network
    • Utils.Process
    • Utils.ProgressBar
    • Utils.Samtools
    • Utils.Suggestion
    • Utils.Utils
    • Utils.Vector
  • Validation
  • ValidationIO
  • Version


Automatic Flags

Embed dependencies


Static build


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 1.4.0, 1.4.1,,, 1.5.0
Change log ChangeLog
Dependencies aeson (>=0.9), ansi-terminal, async, atomic-write (>=0.2), base (>=4.12 && <4.16), bytestring, bytestring-lexing, bzlib-conduit, conduit (>=1.3), conduit-algorithms (>=, conduit-extra (>=1.1.12), configurator, containers, convertible, data-default, deepseq (>=1.3), directory, double-conversion, edit-distance (>=0.2), either, errors (>=2.1), exceptions, extra (>=1.4), file-embed (>=0.0.8), filemanip (>=0.3.6), filepath (>=1.3), hashable, hashtables, hostname, http-client, http-conduit, inline-c, inline-c-cpp, int-interval-map, MissingH (>=1.3), mtl (>=2.2), network, NGLess, optparse-applicative, parsec (>=3.1), primitive (>=0.6), process (>=1.2.3), random-shuffle, regex, resourcet (>=1.1), safe, safeio (>=0.0.2), stm, stm-chans, stm-conduit (>=2.7), strict, tar (>=0.5), tar-conduit (>=0.3.2), template-haskell, text (>=1.2), time (>=1.5), transformers, unix, unix-compat, unliftio, unliftio-core, vector (>=0.11), vector-algorithms, yaml, zlib [details]
License MIT
Author Luis Pedro Coelho and others (see AUTHORS)
Category Domain Specific Language
Home page
Bug tracker
Source repo head: git clone
Uploaded by luispedro at 2022-09-14T15:22:26Z
Executables ngless
Downloads 279 total (24 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2022-09-14 [all 2 reports]

Readme for NGLess-1.5.0

[back to package description]

NGLess: NGS Processing with Less Work

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

Build & test MIT licensed Install with Bioconda Install with Bioconda Citation for NGLess

For questions and discussions, please use the NGLess mailing list.

If you are using NGLess, please cite:

NG-meta-profiler: fast processing of metagenomes using NGLess, a domain-specific language by Luis Pedro Coelho, Renato Alves, Paulo Monteiro, Jaime Huerta-Cepas, Ana Teresa Freitas, Peer Bork, Microbiome (2019)

NGLess cartoon


ngless "1.5"
input = fastq(['ctrl1.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:

mapped = map(input,
write(count(mapped, features=['gene']),


See the install documentation for more information.


The recommended way to install NGLess is through bioconda:

conda install -c bioconda ngless 


Alternatively, a docker container with NGLess is available at docker hub:

docker run -v $PWD:/workdir -w /workdir -it nglesstoolkit/ngless:1.5.0 ngless --version

Adapt the mount flags (-v) as needed.


You can download a statically linked version of NGless 1.5.0

This should work across a wide range of Linux versions (please report any issues you encounter):

curl -L -O
chmod +x NGLess-v1.5.0-Linux-static-full

This downloaded file bundles bwa, samtools and megahit (also statically linked).

From Source

Installing/compiling from source is also possible. Clone


The simplest way to get an environment with all the dependencies is to use conda:

conda create -n ngless
conda activate ngless
conda config --add channels conda-forge
conda install stack cairo bzip2 gmp zlib perl wget xz pkg-config make

You should have gcc installed (or another C-compiler).

The following sequence of commands should download and build the software

git clone
cd ngless
stack setup

To install, you can use the following command (replace <PREFIX> with the directory where you wish to install, default is /usr/local):

make make

Running Sample Test Scripts on Local Machine

For developers who have successfully compiled and installed NGless, running the test scripts in the tests folder would be the next line of action to have the output of sample test cases.

cd tests

Once in the test directory, select any of the test folders to run NGless.

For example, here we would run the regression-fqgz test:

cd regression-fqgz
ngless ungzip.ngl

After running this script open the newly generated folder ungzip.ngl.output_ngless and view the template in the index.html file.

For developers who have done this much more datasets for testing purposes can be referenced and used by reading these documentation links: Human Gut Metagenomics Functional & Taxonomic Profiling Ocean Metagenomics Functional Profiling Ocean Metagenomics Assembly and Gene Prediction

More information