PostProcessors

Overview

The PostProcessor module defines a framework for applying various postprocessing operations to numpy.ndarray data, primarily used in image segmentation, classification, and data normalization workflows.

Base Class

class PostProcessor

Abstract base class for all postprocessing methods.

name()

Returns the class name.

__call__(data, **kwargs)

Invokes the process() method.

process(data, **kwargs)

Ensures data is a NumPy array and dispatches to _process.

_process(data, **kwargs)

Abstract method to be implemented by subclasses.

to_dict()

Serializes instance attributes to a dictionary.

dtype

Returns the target NumPy dtype of the processed output.

is_segmentation

Boolean indicating if output represents a segmentation map.

PostProcessor Subclasses

DefaultPostprocessor

class DefaultPostprocessor(clip_min=-1.0, clip_max=1.0, bias=1.0, multiplier=127.5)

Clips, biases, and scales the data. Converts to uint8.

  • clip_min: Minimum clipping value

  • clip_max: Maximum clipping value

  • bias: Value added after clipping

  • multiplier: Scaling factor

ThresholdPostprocessor

class ThresholdPostprocessor(threshold=0.5)

Applies a threshold to binarize data. Produces uint8 output.

  • threshold: Threshold for binarization

LabelPostprocessor

class LabelPostprocessor(channel=0)

Applies connected-component labeling to a selected channel using scipy.ndimage.label.

MortonSegmentationRelabeling

class MortonSegmentationRelabeling(channel=0)

Relabels segmentation data using Morton-order encoding to ensure chunk-wise uniqueness.

  • channel: Channel to operate on

  • Uses pymorton.interleave for chunk-based ID uniqueness

AffinityPostprocessor

class AffinityPostprocessor(bias=0.0, neighborhood=...)

Uses multi-scale watershed (mwatershed) to generate segmentations from affinity graphs.

  • bias: Threshold for filtering weak affinities

  • neighborhood: List of offset vectors for affinity connectivity

SimpleBlockwiseMerger

class SimpleBlockwiseMerger(channel=0, face_erosion_iterations=0)

Merges chunk boundaries using edge voxel consistency and neuroglancer.equivalence_map.

  • face_erosion_iterations: Controls erosion on boundary faces before merge

  • Maintains a dictionary of voxel ID equivalences between chunks

ChannelSelection

class ChannelSelection(channels='0')

Selects a subset of channels from the input array.

  • channels: Comma-separated list of channel indices (e.g., “0,1,2”)

LambdaPostprocessor

class LambdaPostprocessor(expression)

Applies a user-defined lambda expression to each data point.

  • expression: Python expression to apply to the data (e.g., “x * 2”)