- Add staging step before illumination -
start-at: staging
phenoimager2mc
added as a staging module -staging-method: phenoimager2mc
- illumination is run by default if
start-at: staging
is given and can be toggled off withillumination: false
- Add max projection option to recyze on multiple nuclear and/or membrane channels provided - output will have nuclear channel 0 and membrane channel 1
segmentation-nuclear-channel
andsegmentation-membrane-channel
should only be used if segmentation-max-projection is toggled, otherwise the output of recyze would only contain the channels provided insegmentation-channel
segmentation-max-projection: true
segmentation-channel: 1 3 8 9
segmentation-nuclear-channel: 1 8
segmentation-membrane-channel: 3 9
Example parameter file for running staging, registration, segmentation with cellpose using the above options and quantification:
workflow:
start-at: staging
stop-at: quantification
illumination: false
staging-method: phenoimager2mc
segmentation-recyze: true
segmentation-max-projection: true
segmentation-channel: 1 5 7 8 11
segmentation-nuclear-channel: 5 11
segmentation-membrane-channel: 1 7 8
segmentation: cellpose
options:
phenoimager2mc: -m 6 --normalization max
ashlar: --align-channel 4 --flip-y
cellpose: --pretrained_model cyto --chan 1 --chan2 0 --no_npy
- Allow for dynamic sample name specification in the fileseries/filepattern expressions.
For example, if the filenames are structured like this:
myproject/
markers.csv
params.yml
raw/
image1/
image1_ch1.tif
image1_ch2.tif
image2/
image2_ch1.tif
image2_ch2.tif
The corresponding expression can now be specified as fileseries|.|pattern={samplename}_ch{channel}.tif
.
- Added support for multiple samples in
raw/
subdirectory. If multiple images share the same markers and should be processed with the same set of parameters, they can be placed as subdirectories ofraw/
. In other words, instead of structuring the data as multiple projects:
image1/
markers.csv
params.yml
raw/
cycle1.rcpnl
cycle2.rcpnl
image2/
markers.csv
params.yml
raw/
cycle1.rcpnl
cycle2.rcpnl
they can be consolidated under the same project folder:
myproject/
markers.csv
params.yml
raw/
image1/
cycle1.rcpnl
cycle2.rcpnl
image2/
cycle1.rcpnl
cycle2.rcpnl
- Added support for ASHLAR's fileseries/filepattern feature. The patterns can be provided directly via ASHLAR's options:
options:
ashlar: fileseries|...
- Added a config parameter controlling how intermediates are published to project directory. The behavior can be controlling by adding the following to
custom.config
:
params.publish_dir_mode = 'copy'
and providing it to the pipeline with
nextflow run labsyspharm/mcmicro --in exemplar-001 -c custom.config
The valid values for publish_dir_mode
can be found in Nextflow documentation of publishDir
, argument mode
.
- Added ImageJ rolling ball background subtraction module
The new module can be selected by adding the following to params.yml
:
workflow:
background: true
background-method: imagej-rolling-ball
- If
--membrane-channel
is provided to Mesmer options, MCMICRO will automatically pass the input image both as--nuclear-image
and as--membrane-image
to the Mesmer CLI.
- [viz] Auto-Minerva story construction will now read channel names from
markers.csv
- [dearray] The output of Coreograph is now being run through palom to generate pyramids, which are needed for Autominerva. The following combination of parameters should now work:
workflow:
tma: true
viz: true
- 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'