https://github.com/stevekm/dumpsoftwareversions
Create MultiQC Software Versions YAML from Nextflow pipeline output
https://github.com/stevekm/dumpsoftwareversions
html multiqc nextflow yaml
Last synced: 18 days ago
JSON representation
Create MultiQC Software Versions YAML from Nextflow pipeline output
- Host: GitHub
- URL: https://github.com/stevekm/dumpsoftwareversions
- Owner: stevekm
- Created: 2023-10-10T01:58:24.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-11T18:40:40.000Z (over 2 years ago)
- Last Synced: 2025-10-08T14:56:59.942Z (8 months ago)
- Topics: html, multiqc, nextflow, yaml
- Language: Go
- Homepage:
- Size: 12.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# dumpSoftwareVersions
Tiny simple command line utility used to create a software versions YAML file from the various tools used throughout a [Nextflow](https://www.nextflow.io/) pipeline, in order to generate the Software Versions HTML table input used with [MultiQC](https://multiqc.info/) reports.
# Usage
Example usage:
```bash
$ ./dumpSoftwareVersions -manifestName dump-software-version-demo -manifestVersion 1.0 -nxfVersion 23.04.1 -processLabel CUSTOM_DUMPSOFTWAREVERSIONS example/collated_versions.yml
```
Output YAML is printed to stdout by default. You will want to pipe it to a file named `software_versions_mqc.yml` for use with MultiQC.
- example input file: `example/collated_versions.yml`
- example output: `example/software_versions_mqc.yml`
## With Nextflow + MultiQC
You can see an example of how to use this utility inside your Nextflow pipeline [here](https://github.com/stevekm/nextflow-demos/blob/master/dumpsoftwareversions/modules/local/steve-dumpSoftwareVersions.nf).
A simple example [Nextflow process](https://www.nextflow.io/docs/latest/process.html) might look like this
```groovy
process DUMPSOFTWAREVERSIONS {
container "stevekm/dump-software-versions:0.1"
input:
path(versionsYAMLFile) // single file with collated version YAML from all previous tools in the pipeline
output:
path(output_filename), emit: mqc_yml
script:
output_filename = "software_versions_mqc.yml"
"""
dumpSoftwareVersions \
-manifestName "${workflow.manifest.name}" \
-manifestVersion "${workflow.manifest.version}" \
-nxfVersion "${workflow.nextflow.version}" \
-processLabel "${task.process}" \
"${versionsYAMLFile}" > "${output_filename}"
"""
}
```
The output file here `software_versions_mqc.yml` can then be passed as an input item to your [MultiQC Nextflow process](https://github.com/stevekm/nextflow-demos/blob/master/dumpsoftwareversions/modules/nf-core/multiqc/main.nf).
Once incorporated into MultiQC, you should get a nice table that looks something like this;

# Download
Get it from Docker Hub here: https://hub.docker.com/repository/docker/stevekm/dump-software-versions/general
```bash
docker pull stevekm/dump-software-versions:0.1
```
- try it out with the included Makefile recipe; `make docker-test-run`
Or download binaries from a release version here: https://github.com/stevekm/dumpSoftwareVersions/releases
Or build from source using Go version 1.20+;
```bash
go build -o ./dumpSoftwareVersions ./main.go
```
# Notes
See full usage in a Nextflow pipeline here:
- https://github.com/stevekm/nextflow-demos/tree/master/dumpsoftwareversions
Inspired by:
- https://github.com/nf-core/rnaseq/blob/master/modules/nf-core/custom/dumpsoftwareversions/templates/dumpsoftwareversions.py
For use with:
- https://multiqc.info/docs/reports/customisation/#listing-software-versions