nf-fairscape @ 0.2.0
Summary
Nextflow plugin that writes a FAIRSCAPE EVI RO-Crate for each pipeline run — the EVI ontology provenance model emitted natively, rather than converted from another provenance format after the fact.
The crate conforms to RO-Crate 1.2, the FAIRSCAPE profile 0.1 and EVI, with PROV-O typing over schema.org.
Each successful task becomes an EVI:Computation under a run-level Computation. Files become EVI:Dataset entities with generated/generatedBy edges; the script, the engine and each process become EVI:Software. Full mapping: docs/FAIRSCAPE.md.
| Plugin version | Minimum Nextflow |
|---|---|
| 0.1.x | 25.10 |
Get Started
Requires Nextflow 25.10 or later. Enable the plugin in nextflow.config and Nextflow fetches it from the plugin registry on the first run:
plugins { id 'nf-fairscape@0.2.0' }
Until the first registry release lands, build and install it locally instead — same result, one extra step (CONTRIBUTING.md):
make install
nextflow run <pipeline> -plugins nf-fairscape@0.2.0
A configured run looks like this:
plugins { id 'nf-fairscape@0.2.0' }
outputDir = params.outdir
fairscape {
file = "${params.outdir}/ro-crate-metadata.json"
overwrite = true
author = 'Jane Doe'
keywords = ['genomics', 'my-project']
license = 'https://spdx.org/licenses/MIT'
}
No pipeline changes needed. On success you get:
results/
ro-crate-metadata.json # the crate
provenance-graph.json # evidence graph rooted at the crate
provenance-graph.html # interactive, self-contained viewer
ro-crate-datasheet.html # datasheet
ai_ready_score.json # AI-Readiness rubric behind it
ro-crate-linkml.yaml # crate root as a D4D document
workflow/ # the script and configs that produced all of it
Everything has a fallback (manifest, then a generated value), so the crate is valid with no fairscape block at all.
One thing that is on your pipeline rather than the plugin: if the crate is going to be archived or shared, publish with mode: 'copy'. Nextflow's default publish mode is symlink, and a symlinked published file gets a crate-relative contentUrl like any other — the path is right, but the bytes are still in work/, so zipping the crate ships dangling links. nf-core pipelines already set publish_dir_mode = 'copy'. Files the crate describes but does not contain (work-directory intermediates) carry localPath instead of a contentUrl, so the graph keeps them without claiming they are retrievable.
Examples
Every example is a self-contained pipeline plus the config that switches the plugin on. Install the plugin, then run one:
make install
cd examples/letters-chain && nextflow run . -plugins nf-fairscape@0.2.0
That writes results/ro-crate-metadata.json and the derived artifacts next to it — open results/provenance-graph.html to see the run's evidence graph.
Runnable demos: examples/reverse-list (minimal), examples/letters-chain (multi-step chain). New to Nextflow plugins? docs/WALKTHROUGH.md.
Against real pipelines: examples/nf-core runs five released nf-core pipelines unmodified and checks the crates they produce — the regression set the plugin is hardened against. Because they are unmodified, none of them can carry an ext fairscape: block; examples/fastquorum-like and examples/bamtofastq-like are the other half of that — real bioinformatics (fgbio duplex UMI consensus calling, and samtools BAM→FASTQ conversion) after nf-core/fastquorum and nf-core/bamtofastq, flattened into one annotated main.nf each, on their own test data. examples/cycle-repro and examples/edge-cases are the two smallest failures those runs turned up, reduced to something that finishes in seconds.
Per run — fairscape.metadata is merged onto the root crate entity. Any field the FAIRSCAPE profile declares works, including the Croissant RAI rai:* properties:
fairscape {
author = 'Jane Roe'
organization = 'Example Institute' // -> publisher
license = 'https://spdx.org/licenses/CC-BY-4.0'
metadata = [
identifier : 'https://doi.org/10.1234/example',
principalInvestigator: 'Jane Roe',
funder : 'NIH Bridge2AI (OT2OD032742)',
associatedPublication: 'https://doi.org/10.1234/example-paper',
conditionsOfAccess : 'Non-commercial research use only.',
'rai:dataLimitations': 'Not validated for clinical use.'
]
}
Per process — ext fairscape describes the tool a process actually runs:
process REVERSE {
ext fairscape: [
softwareName : 'tac',
softwareVersion: '8.32',
softwareUrl : 'https://www.gnu.org/software/coreutils/tac',
softwareAuthor : 'Jay Lepreau, David MacKenzie (GNU coreutils)'
]
...
}
The same map works from config (process { withName: 'REVERSE' { ext.fairscape = [...] } }), which is how you annotate a pipeline you don't own.
License
Apache-2.0 — full text in LICENSE. Parts of the plugin framework derive from nf-prov, also Apache-2.0; NOTICE records what and from where.
| Nextflow version | >=25.10.0 |
|---|---|
| Depends On | - |
| Release Date | 20 Sep 2026 13:22:42 (UTC) |
| Release Notes | - |
| Download URL | https://registry.nextflow.io/api/v1/plugins/nf-fairscape/0.2.0/download/nf-fairscape-0.2.0.zip |
| Store URL | https://public.cr.seqera.io/v2/nextflow/plugin/nf-fairscape/blobs/sha256:7958c24bc55bac16672c6a1a12f5a5100e79d4db27eb8ef1c60f36f038f0f5ab |
| Size | 468.7 KB |
| Checksum | 5be026b500d3a107ac0ef261d17ce46a3bf7bd2275d8adacb2bba1aefe4ee5ccc70d7f6977c03ebb300592f09bac72621f5075703ddc58885b5d1de0b220e9f6 |
| Total downloads | 27 View trends |
| Security Scan |
| Version | Nextflow version | Date | Status | Downloads |
|---|---|---|---|---|
| 0.2.0 | >=25.10.0 | 20 Sep 2026 13:22:42 (UTC) | 27 |