- Add staging step before illumination -
start-at: staging phenoimager2mcadded as a staging module -staging-method: phenoimager2mc- illumination is run by default if
start-at: stagingis 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-channelandsegmentation-membrane-channelshould only be used if segmentation-max-projection is toggled, otherwise the output of recyze would only contain the channels provided insegmentation-channelsegmentation-max-projection: truesegmentation-channel: 1 3 8 9segmentation-nuclear-channel: 1 8segmentation-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-channelis provided to Mesmer options, MCMICRO will automatically pass the input image both as--nuclear-imageand as--membrane-imageto 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
backgroundworkflow option totrue:
workflow:
background: true- Added cellpose. The module can now be selected as one of the
segmentationworkflow 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.nfdocumenting how to add new modules to MCMICRO.
- Added a
segmentation-recyzeparameter to theworkflow:section. If set totrue, MCMICRO will reduce the input image to the channels specified insegmentation-channelprior 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 againstnamefields inmodulesmodules- 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-largewhich 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
workflowparameters 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-mapsis nowsegmentation(e.g.,--start-at segmentation --segmentation mesmer,unmicst)segmentationis nowwatershed(e.g.,--stop-at watershed)cell-statesis 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
--vizflag:
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.ymlparameter. In this example,myspecs.ymlonly 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.ymlfile 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-channelparameter, which provides synchronized--channelcontrol 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
recyzetoroadie. 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-filesoption allows users tocopy,moveorsymlinkall 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-smioutput with a regular expression and usespynvmlinstead.
- 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
quantificationis 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
--tmaas if you had a TMA. By default, Coreograph is set to deal with TMAs, so you will need to tweak--core-optsto have it handle multiple tissue sections instead:
nextflow run labsyspharm/mcmicro --in /my/project --tma --core-opts '--tissue --downsampleFactor 6'