Skip to content

ImageStackProcessor

ehennestad edited this page Oct 25, 2022 · 7 revisions

nansen.stack.ImageStackProcessor is an abstract superclass for algorithms that will run on an ImageStack object. It is especially useful for ImageStacks that are very large and may not fit in the computer's memory.

The ImageStackProcessor provides functionality for splitting an ImageStack (typically in the time dimension) in multiple parts and running the processing on each part in sequence. Furthermore, if an ImageStack has multiple channels and/or planes, the iteration mode over these dimensions can be configured in a flexible manner. For example, it is possible to iterate over individual channels, run the processing on multiple channels simultaneously or to treat one channel as a reference channel and apply the results to the remaining channels.

The class is designed so that algorithms can be restarted and skip over data that have already been processed (useful in cases where a matlab- or a system-error interrupts a time-consuming process). It is also possible to rerun the method on a specified set of parts.

Some implementations (subclasses) in NANSEN include:

  • nansen.processing.MotionCorrection Abstract class for running motion correction on two photon recordings
  • nansen.processing.RoiSegmentation Abstract class for running auto detection of ROIs on two photon recordings
  • nansen.stack.processor.TemporalDownsampler Class for temporally downsampling of an ImageStack
  • nansen.wrapper.flowreg.Processor Class for running Flow-Registration (motion correction)
  • nansen.wrapper.normcorre.Processor Class for running NoRMCorre (motion correction)
  • nansen.wrapper.extract.Processor Class for running EXTRACT (roi segmentation)

Diagram showing the hierarchy of classes

This diagram shows an example of the class hierarchy for the flowreg wrapper for motion correction. Each class in the hierarchy has a specialized purpose.

  • HasOptions : Provide an options manager for an algorithm/method, so that a user can create and save customized options sets.
  • HasSubSteps : Provide display information about each processing step for an algorithm/method that has multiple steps.
  • ToolboxWrapper : Not implemented yet, but the intention is to collect everything which is common for different toolbox wrappers in this class.
  • DataMethod : Responsible for loading and saving data for an algorithm/method to files.
  • ImageStackProcessor : Handles chunking and iteration when doing processing on an ImageStack.
  • MotionCorrection : General motion correction steps for a two-photon recording.
  • flowreg.Processor : Implements steps that are specific for Flow-Registration.
Class diagram with hierarchy.