ai4med.components.transforms package

class AddExtremePointsChannel(image_field, label_field, dtype='float32', sigma=3, permutation=0, rescale_min=- 1.0, rescale_max=1.0, points_channel_field=None)

Bases: ai4med.components.transforms.transformer.Transformer

Calculate Extreme points from labels and add as new channel.

Parameters
  • image_field – Key for retrieving image.

  • label_field – Key for retrieving field.

  • dtype (str) – string corresponding to NumPy data type for output.

  • sigma – Standard deviation for gaussian filter. (default: 3)

  • permutation – Permutation to be added to each dimension (default: 0)

  • rescale_min – Min value for rescaling. (Default: -1.0)

  • rescale_max – Max value for rescaling. (Default: 1.0)

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)

Creates new channel for extreme points using labels and image.

Parameters

transform_ctx – Transform context containing label and image.

Returns

transform_ctx with new channel for extreme points.

class AddGaussianNoise(fields, probability=0.5, variance=0.1)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Randomly add Gaussian noise to an image.

Parameters
  • fields (list, str) – a list of strings, e.g. [“image”].

  • probability (float) – probability of adding noise. (Default: 0.5)

  • variance (float) – variance of Gaussian noise (Default: 0.1)

Returns

Transform context

is_deterministic()

Returns: True if probability is 0, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)

Adds noises to the Medical Images specified in fields.

The probability that noise is added is predefined at 0.50. Nothing happens otherwise.

The noise is created with zero mean and with variance generated from a random number uniformly sampled between 0 and 0.1.

Parameters

transform_ctx – a context containing Medical Images.

Returns

Transform context

class AdjustContrast(fields, probability=0.5, min_gamma=0.5, max_gamma=4.5)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Changes intensity with a random gamma curve for entire image.

If multiple fields are provided, each is changed by the a new random gamma curve.

The probability the contrast is modified by this operation is determined by the probability parameter. When it runs, a gamma value is generated either within 0.5 and 1 at 50% of the time, or 1 and 4.5 at 50% of the time.

Parameters
  • fields (list, str) – fields to be adjusted.

  • probability (float) – probability of adjusting contrast. (Default: 0.5)

Returns

A transform context

is_deterministic()

Returns: True if probability is 0, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class ThresholdValues(fields, threshold=0.5, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Applies thresholding.

Select values above a certain threshold. Please note that this transform was previously named ThresholdValues.

Parameters
  • fields (list, str) – fields to be scaled.

  • threshold (float) – Threshold above which to select values.

  • dtype (str) – string corresponding to NumPy data type for output.

Returns

A dict mapping fields to the transformed data.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)

Applies threshold to all fields in transform_ctx.

Parameters

transform_ctx – transform_ctx containing fields.

Returns

transform_ctx with threshold applied to all fields.

class ArgmaxAcrossChannels(fields, fields_new=None, dtype='uint16')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Computes multi-label segmentation output using argmax function.

Numpy Argmax performed over channels to collapse data along channel axis, converting each voxel across channels to the label in integer encoding.

Parameters
  • fields (list, str) – fields over which to compute argmax

  • fields_new (list) – new names for output data so original fields are not overwritten, otherwise the result will be written to the same field

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class BaseCropByPosNegRatio(fields, label_field, size, pos, neg, batch_size)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Base class for Pos Neg Ratio Croppers. This class should not be used directly but just performs the asserts in one place.

Parameters
  • fields (list, str) – which input data to crop

  • label_field (str) – name of field for label image. This will be used for finding foreground/background

  • size (list, tuple) – the size of the crop region e.g. [224,224,128]

  • pos (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • neg (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • batch_size (int) – number of samples (crop regions) to take in each batch

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class CastToType(fields, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Casts data in fields to specified dtype

Parameters
  • fields (list, str) – which data fields to cast

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class CenterData(fields, subtrahend=None, divisor=None, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Normalize intensities based on parameters provided. If the subtrahend and divisor are not both provided, the mean and standard deviation are calculated and used for the subtrahend and divisor respectively.

Parameters
  • fields (list, str) – fields to be normalized.

  • subtrahend – the amount to subtract by (usually the mean). This can be a single value or list or tuple that can be broadcast together with the shape of the input image once converted into a NumPy array.

  • divisor – the amount to divide by (usually the standard deviation). This can be a single value or list or tuple that can be broadcast together with the shape of the input image once converted into a NumPy array.

  • dtype (str) – string corresponding to NumPy data type for output.

  • subtrahend and divisors are multi-dimension (If) –

  • only 1 extra dimension is supported for channel so (currently) –

  • subtraction and division of the NumPy arrays will be across the channel dimension of the image data (the) –

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class ProcessMulticlassPreds(field, use_sigmoid_for_binary=True, use_softmax_for_multiclass=True)

Bases: ai4med.components.transforms.transformer.Transformer

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class ClassificationFastCropByPosNegRatio(fields, label_field, size, pos=1, neg=1, batch_size=1, dtype='float32', classification_label_field='label', classification_label_background=0)

Bases: ai4med.components.transforms.base_crop_by_pos_neg_ratio.BaseCropByPosNegRatio

This transform crops random fixed sized regions with the center being a foreground or background voxel based on the Pos Neg Ratio. This uses RandomSampleLocationGenerator3 to generate a list of centers to crop from with the fast-crop algorithm.

Parameters
  • fields (list, str) – which input data to crop

  • label_field (str) – name of field for label image. This will be used for finding foreground/background

  • size (list, tuple) – the size of the crop region e.g. [224,224,128]

  • pos (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • neg (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • batch_size (int) – number of samples (crop regions) to take in each batch

  • dtype (str) – string corresponding to NumPy data type for output.

is_deterministic()

Returns: False as RandomSampleLocationGenerator3 has randomness.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class ClassificationCropWithLocationGenerator(fields, label_field, size, location_generator, batch_size=1, dtype='float32', classification_label_field='label', classification_label_background=0)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

This is the base for CropByPosNegRatio, FastCropByPosNegRatio, and CropByPosNegRatioLabelOnly to crop fixed sized sub-volumes from images with the centers provided by the location_generator. This class accepts a location_generator for picking centers.

Parameters
  • fields (list, str) – which input data to crop

  • label_field (str) – name of field for label image. This will be used for finding foreground/background

  • size (list, tuple) – the size of the crop region e.g. [224,224,128]

  • location_generator – An instance of location generator

  • batch_size (int) – number of samples (crop regions) to take in each batch

  • dtype (str) – string corresponding to NumPy data type for output.

  • classification_label_field (str) – name of field for label. label is a list of integers.

  • classification_label_background (int) – Value to use for background.

is_deterministic()

Returns: False as all location generators right now have randomness.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class ConvertToChannelsFirst(fields)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Convert image to channels_first format. :param fields: fields to be converted :type fields: list, str

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class ConvertToChannelsLast(fields)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Convert image to channels_last format. :param fields: fields to be converted :type fields: list, str

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class ConvertToMultiChannelBasedOnBratsClasses(fields, class_names='tc', 'wt', 'et', dtype='int8')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Convert data in fields to multi-channel using brats classes.

Parameters
  • fields (list, str) – keys to all fields to apply this transform to.

  • class_names – Names of brats classes. (TC is tumor core. WT is whole tumor and ET is enhancing tumor)

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class ConvertToMultiChannelBasedOnLabel(fields, num_indices, translation_list=None, dtype='int8')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Convert data in fields to multi-channel using class indices.

Parameters
  • fields (list, str) – keys to all fields to apply this transform to.

  • num_indices (int) – Number of class indices

  • translation_list (list) – List of ints used for creating channels.

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class CropByPosNegRatio(fields, label_field, size, pos=1, neg=1, batch_size=1, batches_to_gen_at_once=1, dtype='float32')

Bases: ai4med.components.transforms.base_crop_by_pos_neg_ratio.BaseCropByPosNegRatio

This transform crops random fixed sized regions with the center being a foreground or background voxel based on the Pos Neg Ratio. This uses RandomSampleLocationGenerator2 to generate a list of centers to crop from without the fast-crop algorithm. This cropper will automatically pad to increase the image to the minimum size if necessary, padding with default mode constant and with the value 0.

Parameters
  • fields (list, str) – which input data to crop

  • label_field (str) – name of field for label image. This will be used for finding foreground/background

  • size (list, tuple) – the size of the crop region e.g. [224,224,128]

  • pos (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • neg (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • batch_size (int) – number of samples (crop regions) to take in each batch

  • batches_to_gen_at_once (int) – if there are any non-deterministic transforms before this one in the pipeline, batches_to_gen_at_once must remain at 1. Otherwise, setting this parameter will batch and cache the generation of ROI centers for multiple epochs to help reduce overhead during training.

  • dtype (str) – string corresponding to NumPy data type for output.

is_deterministic()

Returns: False as RandomSampleLocationGenerator2 has randomness.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class CropByPosNegRatioLabelOnly(fields, label_field, size, pos=1, neg=1, batch_size=1, batches_to_gen_at_once=1, dtype='float32')

Bases: ai4med.components.transforms.base_crop_by_pos_neg_ratio.BaseCropByPosNegRatio

This transform crops random fixed sized regions with the center being a foreground or background voxel based on the Pos Neg Ratio. This transform is like CropByPosNegRatio but does not use the image but only the label to determine foreground/background (see RandomSampleLocationGenerator for details). This cropper will automatically pad to increase the image to the minimum size if necessary, padding with default mode constant and with the value 0.

Parameters
  • fields (list, str) – which input data to crop

  • label_field (str) – name of field for label image. This will be used for finding foreground/background

  • size (list, tuple) – the size of the crop region e.g. [224,224,128]

  • pos (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • neg (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • batch_size (int) – number of samples (crop regions) to take in each batch

  • batches_to_gen_at_once (int) – if there are any non-deterministic transforms before this one in the pipeline, batches_to_gen_at_once must remain at 1. Otherwise, setting this parameter will batch and cache the generation of ROI centers for multiple epochs to help reduce overhead during training.

  • dtype (str) – string corresponding to NumPy data type for output.

is_deterministic()

Returns: False as RandomSampleLocationGenerator has randomness.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class CropFixedSizeRandomCenter(fields, size, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Crop sub-volume from image using fixed size with random center. The center is randomly picked from a uniform distribution of the valid possible centers that would fit given the specified size.

Note: This transform will not work if the crop region is larger than the image itself. For small volumes that may run into this issue, it is important to use something like PadSymmetric before this transform to bring the image up to the minimum size.

Parameters
  • fields (list, str) – which input data to crop

  • size (list, tuple) – size of crop region e.g. [224,224,128]

  • dtype (str) – string corresponding to NumPy data type for output.

is_deterministic()

Returns: False because the center of the ROI to crop is random.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class CropForegroundObject(fields, size=None, label_field=None, pad=20, use_only_one_class=False, keep_classes=False, use_gpu=False, pert=0, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Crops sub-volumes conforming to the foreground of the label (greater than 0) from label_field and all fields. The regions are then scaled to the specified size.

Parameters
  • fields (list, str) – input data fields to crop, not including label_field

  • size (list, tuple) – resized size of the crop region e.g. [128,128,128]

  • label_field (str) – field of the label to use for defining crop area

  • pad (int) – amount of padding around object foreground in millimeters

  • use_only_one_class (bool) – if true, one non-zero class is randomly picked to be the foreground while the rest are ignored. Otherwise, all classes are considered foreground

  • keep_classes (bool) – if true, keep original label indices in label image (no thresholding). If false, the label indices will be altered and all the classes of the input will be consolidated into one class.

  • use_gpu (bool) – if true, use gpu for resizing (currently not yet implemented)

  • pert (int) – maximum magnitude of random perturbation in each dimension added to padding in millimeters

  • dtype (str) – string corresponding to NumPy data type for output.

is_deterministic()

Returns: False if pert is not 0 because that adds or subtracts randomly from the padding, and false if use_only_one_class is True because a class is randomly chosen to be used as the foreground.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class CropRandomSizeWithDisplacement(fields, lower_size, max_displacement=50, keep_aspect=True, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Crop randomly sized sub-volume from image between lower_size and the image size. The size of the resulting image after this transformation will vary.

Parameters
  • fields (list, str) – which input data to crop

  • lower_size (list, tuple) – lower limit of crop size, can be a list or tuple for the spatial dimensions of the image. lower_size can also be a single value in which case a list will be created automatically and lower_size for each dimension will be that value. int values in lower_size are interpreted as the size in voxels. Alternatively, lower_size can be type float, in which case it must be < 1, to represent the ratio of the cropped lower_size to the original image size.

  • max_displacement (list, tuple) – max displacement from center of the input image to the center of the crop region. This can be one integer greater than or equal to 0, or a list or tuple of size equal to the spatial dimensions of the input images with an integer greater than or equal to 0 for each respective dimension.

  • keep_aspect (bool) – if true, then original aspect ratio is kept. if true, the first dimension of lower_size will be used and the rest will be ignored.

  • dtype (str) – string corresponding to NumPy data type for output.

is_deterministic()

Returns: False as the size of the crop is random, as can be the displacement of the ROI center from the original image’s center.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class CropSubVolumeCenter(fields, size, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Crops the sub-volume at the center of input data fields.

Parameters
  • fields (list, str) – which input data to crop

  • size (list, tuple) – the size of the crop region e.g. [224,224,128]

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class CropWithLocationGenerator(fields, label_field, size, location_generator, batch_size=1, batches_to_gen_at_once=1, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

This is the base for CropByPosNegRatio, FastCropByPosNegRatio, and CropByPosNegRatioLabelOnly to crop fixed sized sub-volumes from images with the centers provided by the location_generator. This class accepts a location_generator for picking centers.

Parameters
  • fields (list, str) – which input data to crop

  • label_field (str) – name of field for label image. This will be used for finding foreground/background

  • size (list, tuple) – the size of the crop region e.g. [224,224,128]

  • pos (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • neg (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • batch_size (int) – number of samples (crop regions) to take in each batch

  • batches_to_gen_at_once (int) – if there are any non-deterministic transforms before this one in the pipeline, batches_to_gen_at_once must remain at 1. Otherwise, setting this parameter will batch and cache the generation of ROI centers for multiple epochs to help reduce overhead during training.

  • dtype (str) – string corresponding to NumPy data type for output.

is_deterministic()

Returns: False as all location generators right now have randomness.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class FastCropByPosNegRatio(fields, label_field, size, pos=1, neg=1, batch_size=1, batches_to_gen_at_once=1, dtype='float32')

Bases: ai4med.components.transforms.base_crop_by_pos_neg_ratio.BaseCropByPosNegRatio

This transform crops random fixed sized regions with the center being a foreground or background voxel based on the Pos Neg Ratio. This uses RandomSampleLocationGenerator3 to generate a list of centers to crop from with the fast-crop algorithm. This cropper will automatically pad to increase the image to the minimum size if necessary, padding with default mode constant and with the value 0.

Parameters
  • fields (list, str) – which input data to crop

  • label_field (str) – name of field for label image. This will be used for finding foreground/background

  • size (list, tuple) – the size of the crop region e.g. [224,224,128]

  • pos (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • neg (int, float) – used to calculate the ratio pos / (pos + neg) for the probability to pick a foreground voxel as a center rather than a background voxel

  • batch_size (int) – number of samples (crop regions) to take in each batch

  • batches_to_gen_at_once (int) – if there are any non-deterministic transforms before this one in the pipeline, batches_to_gen_at_once must remain at 1. Otherwise, setting this parameter will batch and cache the generation of ROI centers for multiple epochs to help reduce overhead during training.

  • dtype (str) – string corresponding to NumPy data type for output.

is_deterministic()

Returns: False as RandomSampleLocationGenerator3 has randomness.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class FastPosNegRatioCropROI(size, image_field, label_field, deform=False, rotation=True, rotation_degree=15, scale=True, scale_factor=0.1, pos=1, neg=1, batch_size=1, fast_crop=False)

Bases: ai4med.components.transforms.transformer.Transformer

Crops a sub volume after sequence of augmentation operations.

Simultaneously crop image and label to size, after specified augmentation operations, including deform, rotation, scale, pos/neg ratio.

Parameters
  • size (tuple, list) – crop size

  • image_field (str) – usually “image”

  • label_field (str) – usually “label”

  • deform (bool) – elastic deformation

  • rotation (bool) – augmented with rotation

  • rotation_degree – maximum rotation degree

  • scale (bool) – augmented with spatial scaling

  • scale_factor – maximum spatial scaling factor ([1-scaling_factor, 1+scaling_factor])

  • pos – factor to control the ratio of positive ROI sampling

  • neg – factor to control the ratio of negative ROI sampling

  • batch_size – the number of samples to be generated in one transform (0 or 1 means no batching)

  • fast_crop (bool) – augmented with fast crop algorithm

Returns

Transform context

is_deterministic()

This is not a deterministic transform.

Returns

False (bool)

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class Inference(model_path, model_type='ckpt', inferer_type='simple', roi_size=None, sw_batch_size=1)

Bases: ai4med.components.transforms.transformer.Transformer

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
batch_data(tc: dict)
set_image_shape_format(tc, image_key_name)
class KeepLargestCC(label_field, applied_labels, is_independent=True)

Bases: ai4med.components.transforms.transformer.Transformer

Keep only the largest connected component from labels.

Parameters
  • label_field – Key for retrieving label.

  • applied_labels – label number list for applying the connected component on.

  • is_independent – whethere or not to consider several labels as a whole

keep_largest_cc(nda)
transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)

Keep the largest connected component from labels .

Parameters

transform_ctx – Transform context containing label.

Returns

transform_ctx with edited label.

class LoadImage(fields, dtype='float32', nii_has_channels_first=False, as_closest_canonical=False, use_sitk=False)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Loads any Image NIFTI/PNG/JPEG/BMP/TIFF/NRRD/VTK/DICOM etc… (based on file extensions)

Nifti -> NifitReader JPEG -> JpgReader PNG -> PngReader Others -> SitkReader

Parameters
  • fields (list, str) – keys containing paths to load files from.

  • dtype (str) – string corresponding to NumPy data type for output.

  • nii_has_channels_first (bool) – is NIFTI stored as channels_first. (Default: False)

  • as_closest_canonical (bool) – is loading in canonical form (Default: False)

  • use_sitk – use SimpleITK to load for everything

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class LoadImageMasksFromNumpy(fields, shape: ai4med.common.shape_format.ShapeFormat, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Load Image and mask pairs from Numpy files.

Parameters
  • shape (ShapeFormat) – Shape of output image.

  • dtype – Type for output data.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class LoadJpg(fields, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Loads jpg files.

Parameters
  • fields (list, str) – keys containing paths to load files from.

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class LoadNifti(fields, dtype='float32', nii_has_channels_first=False, as_closest_canonical=False)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Loads NIFTI files.

Parameters
  • fields (list, str) – keys containing paths to load files from.

  • dtype (str) – string corresponding to NumPy data type for output.

  • nii_has_channels_first (bool) – is NIFTI stored as channels_first. (Default: False)

  • as_closest_canonical (bool) – is loading in canonical form (Default: False)

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class LoadPng(fields, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Load Png files.

Parameters
  • fields (list, str) – keys containing paths to load files from.

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class MaskImage(image_field, mask_field, dtype='float32', exclude_labels=None, update_mask_field=False)

Bases: ai4med.components.transforms.transformer.Transformer

Masked the image with the given mask field.

If mask entry m[i,j] is in exclude_labels, then img[i,j] is set to 0.

Parameters
  • image_field (str) – Input image to be masked

  • mask_field (str) – Mask image to use

  • dtype (str) – Data type of result image

  • exclude_labels (list) – A list of values to be excluded

  • update_mask_field (bool) – To update mask or not

is_deterministic()
transform(transform_ctx)
class MergeBatchDims(fields)

Bases: ai4med.components.transforms.transformer.BatchTransformer

transform(batched_data: dict)
merge_dims(data: numpy.ndarray)
class MultiFieldTransformer(fields)

Bases: ai4med.components.transforms.transformer.Transformer

Base class for transformers with multi-fields input data.

Args: fields (list, str): fields of data to be transformed. If a str is provided, it will be turned into a list.

class NormalizeNonzeroIntensities(fields, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Normalize input to zero mean and unit standard deviation, based on non-zero elements only and for each input channel individually.

Parameters
  • fields (list, str) – fields to be scaled.

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class PadSymmetric(fields, size, mode='constant')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Pad image to new size with default of same number of 0s on each side. If the number of cells that need to be padded is odd, there will be one more added to the end of the data compared to the beginning. Uses np.pad, so mode can be used to change padding behavior if desired.

Parameters
  • fields (list, str) – keys to all fields to apply this transform to.

  • size – the size of the output e.g. [196,196,196]

  • mode (str) – pad mode. See numpy.lib.arraypad.pad for additional details.

Returns

A transform context

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RandomAxisFlip(fields, probability=0.5)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Flip the image along one randomly picked axis.

Parameters
  • fields (list, str) – key strings for target volume.

  • probability (float) – probability to utilize the transform, between 0 and 1.0. (Default: 0.5)

Returns

Random flipped data.

is_deterministic()

Returns: True if the probability to use the transform is 0, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)

Picks a random axis and flips along it.

class RandomMRBiasField(fields, degree, lower_limit=None, upper_limit=None)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Random bias field augmentation for MR images.

Parameters
  • fields (list, str) – key strings for target volume.

  • degree (int) – degrees of freedom of the polynomials

  • lower_limit (float) – Lower limit for random values of bias

  • upper_limit (float) – Upper limit for random values of bias

is_deterministic()
transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RandomGaussianSmooth(fields, probability=0.5, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Randomly smooth the image with a specified probability.

Parameters
  • fields (list, str) – key strings for target volume.

  • probability (float) – probability to flip axis, between 0 and 1.0. (Default: 0.5)

  • dtype (dtype attribute) – data type identifier

Returns

Random smoothed data.

is_deterministic()

Returns: True if probability is 0, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RandomRotate2D(fields, angle, is_random=False, interpolation=1, border_mode=2, dtype= )

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Randomly rotates a 2D image by a given angle.

Parameters
  • fields (list, str) – keys for data to be rotated.

  • angle (float) – angle of rotation in degrees.

  • is_random (bool) – should angle be chosen at random. (Default: False)

  • interpolation (int) – Same as ‘flags’ argument to OpenCV’s warpAffine function. (Default = 1 = cv2.INTER_LINEAR).

  • border_mode (int) – Same as ‘border_mode’ argument to OpenCV’s warpAffine function. (Default = 2 = cv2.BORDER_REFLECT).

  • dtype – np array type to convert to after rotation happens.

is_deterministic()

Returns: True if is_random is false, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RandomRotate3D(fields, probability=0.5)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Randomly rotates an image 90, 180 or 270 degrees. The angle is randomly picked.

Parameters
  • fields (list, str) – keys to data.

  • probability (float) – probability of rotating. (Default: 0.5)

is_deterministic()

Returns: True if the probability of rotating is 0, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RandomSharpen(fields, probability=0.5, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Randomly sharpen the image with a specified probability.

Parameters
  • fields (list, str) – key strings for target volume.

  • probability (float) – probability to flip axis, between 0 and 1.0. (Default: 0.5)

  • dtype (dtype attribute) – data type identifier

Returns

Random sharpened data.

is_deterministic()

Returns: True if probability is 0, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RandomSpatialFlip(fields, probability=0.5)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Flip the image randomly along each axis in spatial domain. This is different from RandomAxisFlip because this can pick multiple axes to flip with probability being the probability for each axis to be flipped.

Parameters
  • fields (list, str) – key strings for target volume.

  • probability (float) – probability to flip axis, between 0 and 1.0. (Default: 0.5)

Returns

Random flipped data.

is_deterministic()

Returns: True if probability is 0, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RandomZoom(image_field, label_field, lower_limits, upper_limits, keep_size=False, use_gpu=False, probability=1)

Bases: ai4med.components.transforms.transformer.Transformer

Zooms the image randomly along each axis in spatial domain. Interpolation is inferred. image_field uses linear interpolation while label_field uses nearest neighbor.

Parameters
  • image_field (str) – key for target image.

  • label_field (str) – Key for target label.

  • lower_limits (tuple) – Lower limits for random values of zoom

  • upper_limits (tuple) – Upper limits for random values of zoom

  • keep_size (bool) – Maintains the original size using padding. Default: True.

  • use_gpu (bool) – Should this transform be run on GPU or CPU. Note that running on GPU can be costly for GPU memory. Default: False.

  • probability (float) – Probability to run this transform. Default=1 to stay consistent with Clara 2.0.

Returns

Random zoomed data.

is_deterministic()
transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RemoveDataFields(fields)

Bases: ai4med.components.transforms.transformer.Transformer

Remove any data field from transform context

Parameters

fields (list) – data fields that need to be removed

transform(transform_ctx)
class RepeatChannel(fields, repeat_times)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Repeat the image over the channel axis repeat_times times.

Parameters
  • fields (list, str) – keys to all fields to apply this transform to.

  • repeat_times (int) – number of times to repeat the image over the channel axis

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class ReplaceLabels(fields, input_labels, output_labels, dtype= )

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Replace input_labels to output_labels in data.

Given a set of input labels ([0, 1, 2]), replaces labels to set of output labels ([0, 1, 1]).

Parameters
  • fields (list, str) – fields to apply this transform to.

  • input_labels (list) – Input indices for mapping.

  • output_labels (list) – Output indices for mapping the input_labels to.

Returns

TransformContext with updated fields.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class RestoreOriginalShape(field, src_field=None, is_label=None)

Bases: ai4med.components.transforms.transformer.Transformer

Restore original shape of image with ImageProperty.ORIGINAL_SHAPE and ImageProperty.ORIGINAL_SHAPE_FORMAT

Parameters
  • field (str) – target field for this transform. If src_field is not provided, this is also used as src_field.

  • src_field (str) – source field for this transform.

  • is_label (bool) – to determine whether to use nearest neighbor or linear interpolation for label data and not label data, respectively.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class SaveAsNifti(fields, out_dir='./temp/debug', interrupt=False, compressed=True, use_identity=False, revert_canonical=False, transpose_axes=None, squeeze=False)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Save data as NIFTI file.

Parameters
  • fields (list) – keys of data to be saved.

  • out_dir (str) – Output directory for storing file.

  • interrupt (bool) – Command line interrupt upon saving. (Default: False)

  • compressed (bool) – save as compressed file. (Default: True)

  • use_identity (bool) – whether to use identify for affine matrix (Default: False)

  • revert_canonical (bool) – Revert the as close canonical operation in LoadNifti (Default: False)

get_unique_output_filename(filename, field)
transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class ScaleByFactor(fields, factor, is_label=None)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Scales spatial data by specified factor.

Scaling 2D or 3D spatial data to specified size.

Parameters
  • fields (list, str) – fields to scale.

  • factor (float) – factor to scale from original size. 2.0 means 2x.

  • is_label (bool) – to determine whether to use nearest neighbor or linear interpolation for label data and not label data, respectively.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)

Performs the scaling operation.

Parameters

transform_ctx (dict) – Transform context.

Returns

The transform context with updated values based on fields.

Return type

dict

class ScaleByResolution(fields, target_resolution, is_label=None)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Scales spatial data to target resolution.

Scaling 2D or 3D spatial data to specified size.

Parameters
  • fields (list, str) – fields to scale.

  • target_resolution (list, tuple) – target resolution to scale to.

  • is_label (bool) – to determine whether to use nearest neighbor or linear interpolation for label data and not label data, respectively.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)

Performs the scaling operation.

Parameters

transform_ctx (dict) – Transform context.

Returns

The transform context with updated values based on fields.

Return type

dict

class ScaleBySpacing(fields, target_spacing, is_label=None)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Scales spatial data to target spacing.

Scaling 2D or 3D spatial data to specified size.

Parameters
  • fields (list, str) – fields to scale.

  • target_spacing (list, tuple) – target spacing in mm.

  • is_label (bool) – to determine whether to use nearest neighbor or linear interpolation for label data and not label data, respectively.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)

Performs the scaling operation.

Parameters

transform_ctx (dict) – Transform context.

Returns

The transform context with updated values based on fields.

Return type

dict

class ScaleIntensityOscillation(fields, magnitude, probability=0.5, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Randomly shifts intensity uniformly for entire image. If multiple fields are provided, all are shifted by the same amount.

Parameters
  • fields (list, str) – fields to be scaled.

  • magnitude – magnitude of maximum scale shift, has to be greater than zero. This is usually a single scalar value but it could also be a list or tuple that can be broadcast together with the shape of the input image once converted into a NumPy array.

  • probability (float) – probability of operation. (Default: 0.5)

  • dtype (dtype attribute) – data type identifier

is_deterministic()

Returns: True if probability is 0, otherwise False.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class ScaleIntensityRange(fields, a_min=0, a_max=100, b_min=0, b_max=1, clip=False, a_offset=0, dtype='float32')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Applies intensity scaling.

Applies the same intensity scaling from (a_min, a_max) to (b_min, b_max) for fields to be scaled.

Parameters
  • fields (list or str) – fields to be scaled.

  • a_min (int or float) – intensity original range min

  • a_max (int or float) – intensity original range max

  • b_min (int or float) – intensity target range min

  • b_max (int or float) – intensity target range max

  • clip (bool) – whether to perform clipping after scaling in case there are any values outside of (b_min, b_max)

  • a_offset (int or float) – optional parameter which if set overrides a_max by calculating a_max as the sum of a_min and a_offset. This is useful for searching ranges with AutoML to ensure that ranges remain valid.

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class ScaleShiftIntensity(fields, scale=0.1, shift=0.1)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Perturbs intensity as: c = c * (1+scale) + shift * std(c)

Parameters
  • fields (list, str) – list of fields to which this transform applies, eg [‘image’]

  • scale – increase or decrease the range of intensity

  • shift – move up or down the intensity

Returns

Transform context

is_deterministic()

This is not a deterministic transform.

Returns

False (bool)

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class ScaleToShape(fields, target_shape, is_label=None)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Scales spatial data to target shape.

Scaling 2D or 3D spatial data to specified size.

Parameters
  • fields (list, str) – fields to scale.

  • target_shape (list, tuple) – target shape, eg [256, 256, 256] for 256x256x256

  • is_label (bool) – to determine whether to use nearest neighbor or linear interpolation for label data and not label data, respectively.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class SmoothScaleToShape(fields, target_shape, nearest=None, diameter=25)

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Scales spatial data to target shape, using ndimage.binary_closing to smooth if nearest=None.

Scaling data to specified size with smooth edges.

Parameters
  • fields (list, str) – fields to scale.

  • target_shape (list, tuple) – target shape, eg [256, 256, 256] for 256x256x256

  • nearest (bool) – to determine whether or not to ndimage.binary_closing to smooth.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class SplitAcrossChannels(field, channel_names=None)

Bases: ai4med.components.transforms.transformer.Transformer

Split image into one MedicalImage per channel and gets rid of the channel dimension.

Parameters
  • field (str) – field to split.

  • channel_names (list) – list of keys to save each respective channel of the image that has been split. Must match the number of channels of the image. If channel_names is not provided, the new names of the images will be the original field name appended by the channel number.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class SplitBasedOnBratsClasses(field, class_names, image_names=None, dtype= )

Bases: ai4med.components.transforms.transformer.Transformer

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class SplitBasedOnLabel(field, label_names, dtype='int8')

Bases: ai4med.components.transforms.transformer.Transformer

Splits multi-label images.

Splitting multi-label images identified by “field” to new dict entries under specified label names. The input images are expected to be in integer encoding format and the output is in one hot encoding.

Parameters
  • field (str) – field to split.

  • label_names (list) – names for split outputs, one for each label starting from 0. Label values greater than the number of label_names provided will be ignored.

  • dtype (str) – string corresponding to NumPy data type for output.

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
Parameters

transform_ctx – Transform context.

Returns: The transform context with updated values based on fields.

class SymmetricPadderDiv(fields, div_int=16, mode='constant')

Bases: ai4med.components.transforms.multi_field_transformer.MultiFieldTransformer

Pad image with new size divisible by given div_int.

Parameters
  • fields (list, str) – keys to all fields to apply this transform to.

  • div_int (int) – integer that each final dimension should be divisible by after padding

  • mode (str) – pad mode. See numpy.lib.arraypad.pad for additional details.

Returns

A transform context

transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
class BatchTransformer

Bases: abc.ABC

abstract transform(batched_data: dict)
class Transformer

Bases: abc.ABC

Base class for transformers.

is_deterministic()
abstract transform(transform_ctx: ai4med.common.transform_ctx.TransformContext)
© Copyright 2020, NVIDIA. Last updated on Feb 2, 2023.