Development

Notes for contributors and developers working on the pipeline.

Running the tests

The pipeline ships with a small nf-test suite under tests/ for process- and workflow-level unit tests.

Install nf-test (one-off):

curl -fsSL https://code.askimed.com/install/nf-test | bash
# move the resulting `nf-test` binary onto your PATH, eg:
mv nf-test $HOME/.local/bin/

Run all tests from the repository root:

nf-test test

Run a single test file, or filter by tag (CPU-only vs GPU, etc.):

nf-test test tests/modules/local/common/unique_id.nf.test
nf-test test --tag unique_id
# RFdiffusion process tests (GPU, Apptainer, ~1–2 min)
nf-test test --tag rfd

See the Testing page and the upstream nf-test docs for layout, writing tests, Apptainer cache notes, and more detail.

Linting

Lint .nf and config files with nextflow lint before opening a PR:

# Lint the pipeline source (use a Nextflow with the linter, e.g. 25.04.x)
NXF_VER=25.04.7 nextflow lint -o concise main.nf workflows subworkflows modules

nextflow lint catches genuine issues such as unused variables and parameters (prefix unused closure parameters with _ to silence those warnings).

It parses with the strict (v2) syntax, so it also reports constructs that this pipeline deliberately keeps for Nextflow 24.04.3 compatibility — the conditional include statements in main.nf, the @Field/import in modules/local/rfd3/rfd3_utils.nf, and multi-name function includes (reported as ... is not defined). These are expected; do not "fix" them in ways that break 24.04.3. See Nextflow version compatibility.

Avoid nextflow lint -format on Nextflow 25.10+, as it rewrites code to the strict syntax; if you need to reformat, run it with NXF_VER=25.04.7 so the result stays compatible with parsers prior to 25.10.

nextflow lint always parses with the strict syntax; NXF_SYNTAX_PARSER=v1 has no effect on it (that variable only changes nextflow run).

License

The nf-binder-design pipeline code is licensed under the MIT License.

Note that some software dependencies of the pipeline are under less permissive licenses - in particular, RFdiffusion and BindCraft use Rosetta/PyRosetta which is only free for Non-Commercial use.

See also the license section on the home page for commercial-use restrictions and citation guidance.