- Expanded the parsing of the parameter file specified via
-params-file
. This allows for the entire workflow/options/modules parameter structure to be pasted directly inside the "Pipeline parameters" field of a Nextflow Tower launchpad.
- Added a background subtraction module. The module can be turned on by setting the
background
workflow option totrue
:
workflow:
background: true
- Added cellpose. The module can now be selected as one of the
segmentation
workflow settings:
workflow:
segmentation: cellpose
- Added a roadie script for generating image pyramids. Example usage:
nextflow run labsyspharm/mcmicro/roadie.nf --in simple.tif --out pyramid.ome.tif
- Changed the order of tokens in quantification output to make it easier to match filenames against other intermediate.
Old pattern: unmicst-exemplar-001_cell.csv
New pattern: exemplar-001--unmicst_cell.csv
The new pattern can now be easily matched against the original exemplar-001.ome.tif
by cutting the feature table filename at --
.
- Added
modules/template.nf
documenting how to add new modules to MCMICRO.
- Added a
segmentation-recyze
parameter to theworkflow:
section. If set totrue
, MCMICRO will reduce the input image to the channels specified insegmentation-channel
prior to passing it to the segmentation modules. This can be useful for reducing the memory footprint for modules like Mesmer, which read the entire input image into memory.
- [registration] Updated Ashlar to v1.17.0.
- Improve registration accuracy in certain tile layout conditions.
- Fix support for --plates option for performing registration on multi-well plate acquisitions. (This option may not work directly with downstream modules yet)
- Introduced a YAML pattern for parameters with three top-level namespaces:
workspace
- pipeline-level parameters controlling overall behavior of MCMICROoptions
- module-level parameters that will be forwarded to individual tools; the entries are matched againstname
fields inmodules
modules
- module specifications, such as container name and version, whether the module uses 0-based or 1-based indexing, and whether the module requires watershed.
An example params.yml
may look
workflow:
start-at: registration
stop-at: quantification
viz: true
segmentation-channel: 5
options:
ashlar: -m 15
s3seg: --logSigma 45 300
modules:
watershed:
version: 1.4.0-large
which a user would supply to the pipeline with
nextflow run labsyspharm/mcmicro --in exemplar-001 --params params.yml
- The new YAML pattern is backwards-compatible
- Users can still overwrite individual
workflow
parameters on the command-line (e.g.,--start-at segmentation
) - Users can also overwrite module-specific options with
--[module name]-opts
, as before
- Users can still overwrite individual
- Default values for all namespaces can be found in
config/defaults.yml
- Pipeline will now verify all parameters and throw an error when encountering an unrecognized parameters
- Introduced the following name changes to reduce confusion:
probability-maps
is nowsegmentation
(e.g.,--start-at segmentation --segmentation mesmer,unmicst
)segmentation
is nowwatershed
(e.g.,--stop-at watershed
)cell-states
is nowdownstream
(e.g.,--start-at downstream --downstream scimap
)
- Cleaned up provenance filenames, making their more robust across operating systems
- Added Auto-Minerva for automatic visualuzation generation. Run with the new
--viz
flag:
nextflow run labsyspharm/mcmicro --in exemplar-001/ --stop-at registration --viz
Visualization is written to exemplar-001/viz
. A separate subdirectory will be created for each OME-TIFF in the registration/
folder.
- Consolidated Roadie scripts
- Dynamic range calculation is now folded inside Auto-minerva story generation and can be executed both inside MCMICRO with
nextflow run labsyspharm/mcmicro --in exemplar-001/ --stop-at registration --story
and as a standalone Roadie script with
nextflow run labsyspharm/mcmicro/roadie.nf --do story --in exemplar-001.ome.tif
- Adding single channel image support and improving logging in recyze
- Module specs have been migrated to a stand-alone file in standard YAML format.
- Default specs can be overwritten with the new
--module myspecs.yml
parameter. In this example,myspecs.yml
only needs to specify the fields being overwritten; all other values will stay at default. - MCMICRO will output the module specs used during a run to a new
qc/modules.yml
file to maintain provenance. The file can be fed back to the pipeline with--module
, closing the reproducibility loop.
- Default specs can be overwritten with the new
- Introduced a new
--segmentation-channel
parameter, which provides synchronized--channel
control over all segmentation modules- MCMICRO will forward the value to every segmentation module, properly accounting for 0-based and 1-based indexing.
- When supplying multiple channels, enclose them with single quotes (e.g.,
--segmentation-channel '1 5'
). Only the first value will be passed to s3seg.
- Cleaned up what gets written to
qc/params.yml
, ensuring that the file can be reused with MCMICRO via-params-file
.
- Added channel and pixel cropping tool
recyze
toroadie
. View instructions with:
nextflow run labsyspharm/mcmicro/roadie.nf --help
Example:
nextflow run labsyspharm/mcmicro/roadie.nf --do recyze --in-path exemplar-001.ome.tif --x 0 --y 0 --w 1024 --h 1024 --channels 1 2 4
To process multiple files in parallel, file masks have to be enclosed by single quotes:
nextflow run labsyspharm/mcmicro/roadie.nf --do recyze --in-path '*.ome.tif' --x 0 --y 0 --w 1024 --h 1024 --channels 1 2 4
- Docker containers are now always executed as root, which solves the permission problem for BaSiC illumination
- Added a new CI test for illumination
- Cleaned up CI test definitions
- [registration] Updated Ashlar to v1.15.3.
- Slightly non-square pixels (relative difference between width and height of <= 0.0001) are now tolerated.
- [registration] Updated Ashlar to v1.15.2.
- OME-TIFF output now conforms to the official OME-TIFF pyramid spec.
- Memory usage is dramatically reduced -- registration now only requires enough memory to hold all tiles in the first cycle's reference channel plus a fixed overhead of about 400 MB.
- By default, MCMICRO was copying
qc/*
files from work directories to the project directory. This was creating unnecessary duplication of potentially large files. The new--qc-files
option allows users tocopy
,move
orsymlink
all QC files, providing more flexibility. Example:
nextflow run labsyspharm/mcmicro --in exemplar-001 --qc-files move
- Added a script for automatically detecting dynamic range of the signal in each channel. The script is not executed by default but can be triggered with
--dynrange
. For example,
nextflow run labsyspharm/mcmicro --in exemplar-001 --dynrange
The output will be written to qc/dynrange
.
- Added exemplar-003 for spot detection
- Complete rework of the mcmicro.org
- The pipeline now correctly carries through image names with
.
in them, e.g.,slide0.ROI7.ome.tif
.
- [illumination] CZI files are now loaded correctly.
- Added more flexibility to
exemplar.nf
, which allows for downloading any contiguous set of cycles. For more information, see
nextflow run labsyspharm/mcmicro/exemplar.nf --help
- [s3seg] Fixed an bug that caused the module to crash when generating pyramids for images of smaller size.
- [UnMicst] Updated the Tensorflow base to
2.7.1-gpu
- [UnMicst] The code for automatic GPU selection is now more robust. It no longer relies on parsing
nvidia-smi
output with a regular expression and usespynvml
instead.
- Added a CHANGES file
- Reworked GPU config profile to expose all GPUs across all platforms
- When running MCMICRO on O2, use
-profile O2,GPU
(comma, no space) instead of-profile O2gpu
- When running MCMICRO on O2, use
quantification
is now the default stopping point
- Coreograph now supports splitting of large tissue chunks and will split them into individual files for faster downstream segmentation. If your image sizes were too large for s3segmenter because they contained multiple tissue sections, this should help. To turn Coreograph on, include
--tma
as if you had a TMA. By default, Coreograph is set to deal with TMAs, so you will need to tweak--core-opts
to have it handle multiple tissue sections instead:
nextflow run labsyspharm/mcmicro --in /my/project --tma --core-opts '--tissue --downsampleFactor 6'