Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- New
nci_gadi.configconfiguration profile for NCI Gadi HPC cluster. - BoltzGen: support for list-valued
entities[].file.pathand multiple entities so all referenced files are staged as Nextflowpath()inputs. Referenced config YAMLs (.yaml/.ymlinentities[].file.path, eg for nanobody scaffolds) and the PDB/CIF files they reference internally are collected and staged so BoltzGen’s per-generation random selection over those configs is preserved. - Versioned documentation using mike; docs are now deployed for
main(alias:latest),develop(alias:dev), and version tags.
Changed
- Major project restructure shifting individual workflows into
workflows/, each launched via a singlemain.nfentry point with the--methodflag. --method rfdfor RFdiffusion binder design (previouslymain.nf)--method rfd_partialfor partial diffusion (previouslypartial.nf)--method bindcraftfor BindCraft (previouslybindcraft.nf)--method boltzgenfor BoltzGen (previouslyboltzgen.nf)--method boltz_pulldownfor Boltz Pulldown (previouslyboltz_pulldown.nf)- Modules reorganised into
modules/local/with workflow-specific subdirectories (rfd/,bindcraft/,boltzgen/,common/). - Extracted common Boltz-2 refolding and scoring logic into
BOLTZ_REFOLD_SCORINGsubworkflow (subworkflows/local/boltz_refold_scoring.nf).
Fixed
- BindCraft (
workflows/bindcraft.nf): omitting--hotspot_resno longer fails invalidateHotspotReswithUnknown method invocation 'trim' on Boolean type. rmsd4all.py: cap worker processes to the number of pairs so single-pair comparisons (e.g. RFD3_RMSD with one design vs one refold) no longer spawn a large Pool and appear to hang; sequential path is used for one pair with progress logged.rmsd4all.py: add--max-structural-iterations(default 100). Biotite's refinement loop usesmax_iterations=infby default and only stops when anchors stabilize; with 3di the anchor set can fail to converge (oscillate) so the loop never exits. Capping iterations fixes the hang; 0 = no limit.rmsd4all.py: fix use ofarray_length(method) as if it were an attribute; uselen()for atom counts.
Removed
rmsd4all.py: remove--max-ca-for-tm-scoreand--pair-timeoutoptions.
[0.1.5] - 2026-01-28
Added
- New BoltzGen pipeline.
- Refold binder designs with Boltz, with post-AF2ig filtering and RMSD analysis of predicted complex and binder monomer.
- Added DOI (Zenodo) badge to
README.md, addedCITATION.cff. - Some parameter validation for
bindcraft.nf. - Write
params.jsonto output directory.
Changed
- Move 'filtering' result folder to 'rfdiffison/filtered'
- Don't output redundant .tsv files to the results directory.
- Changed default
--pmpnn_relax_cyclesfrom 0 to 3 - Made default queue size 1, for single local GPU mode.
- Added
m3-bdi.config, site specific for M3/MASSIVE HPC cluster. - Use the
nf-binder-design-utilscontainer instead ofmdanalysis. - Update config and docs to use -profile for site-specifc configurations
Fixed
- Fixed Quarto rendering permissions issues (copy Qmd to work folder).
[0.1.4] - 2025-08-12
Added
- BindCraft end-to-end workflow with basic HTML report
- GPU allocation heuristics for local multi-GPU workstations.
- HyperMPNN weights download script (
models/download_hypermpnn_weights.sh). - New runnable examples in
examples/.
Changed
- RFDiffusion
--hotspot_resno longer requires brackets inmain.nf. - Minor tweaks to site-specific configs for
m3andmlerp.
[0.1.3] - 2025-07-11
Added
- A plugin system for filtering designs based on calculated metrics.
--rfd_filtersparameter to apply filters to RFDiffusion backbones (e.g.,--rfd_filters "rg<25").- Initial filter plugin for radius of gyration (
rg). - Integration of BindCraft-derived scoring of designs, as
extra_scores.tsv. This adds metrics including: - Interface score, shape complementarity, dG, and dSASA.
- Secondary structure percentages (helix, sheet, loop) for the binder and interface.
- Unrelaxed and relaxed clash scores.
- Hotspot and target RMSD.
- Sequence-based metrics like extinction coefficient.
--pmpnn_omit_aasflag to exclude certain amino acids from designs (default 'CX').--rfd_compress_trajectoriesflag to gzip RFDiffusion traj/*.pdb files (defaulttrue).
Changed
- Filtering results are now saved to a subdirectory named after the pipeline step (in
filtering/rfdiffusion/). - The score merging script (
merge_scores.py) was improved to be more robust and handle an arbitrary number of score files. - Use more lightweight container for
get_contigs.nfandrenumber_residues.nfmodules.
Fixed
- The
gpu_deviceparameter is now correctly passed to the partial diffusion process, allowing proper GPU selection.
[0.1.2] - 2025-06-19
Added
- Added the
boltz_pulldown.nfprotocol. - Allow gpu device to be selected.
- Support relaxation in ProteinMPNN (
pmpnn_relax_cyclescan now be non-zero)
Changed
- Change
dl_binder_designoutput filenaming (include "_mpnn{n}" suffix) - Change RFDiffusion config handling when unspecified
- Docs: Add APPTAINER_TMPDIR and NXF_APPTAINER_CACHEDIR advice to M3-specific docs
Fixed
- Fix
get_contigsfor multi-chain targets. - Fix failure that occurred when using
--rfd_batch_size> 1.
[0.1.1] - 2025-04-04
Changed
- Update to use containers from Github package registry
[0.1] - 2025-03-24
Added
- Initial version with RFDiffusion->ProteinMPNN->af2_initial_guess binder design and partial diffusion pipelines.