CAT12 Segmentation Interface

Module contents

Definition of an interface for the CAT12 segmentation function.

Submodules

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.defaults module

Default values for the various keys required in the batch template.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.messages module

A module storing strings used to display messages.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.outputs module

Dictionaries containing CAT12 segmentation output file names by key.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.outputs.AUXILIARY_OUTPUT = {'batch_file': 'segmentation.m', 'reports': ['report/cat_{file_name}.mat', 'report/cat_{file_name}.xml', 'report/catlog_{file_name}.txt', 'report/catreport_{file_name}.pdf', 'report/catreportj_{file_name}.jpg']}

Artifacts created during execution.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.outputs.SEGMENTATION_OUTPUT = {'cobra': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'dartel_grey_matter': {'affine': 'mri/rp1{file_name}_affine.nii', 'rigid': 'mri/rp1{file_name}_rigid.nii'}, 'dartel_white_matter': {'affine': 'mri/rp2{file_name}_affine.nii', 'rigid': 'mri/rp2{file_name}_rigid.nii'}, 'deformation_fields': {'both': ['mri/y_{file_name}.nii', 'mri/iy_{file_name}.nii'], 'forward': 'mri/y_{file_name}.nii', 'inverse': 'mri/iy_{file_name}.nii', 'none': None}, 'hammers': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'jacobian_determinant': 'mri/wj_{file_name}.nii', 'lpba40': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'modulated_grey_matter': 'mri/mwp1{file_name}.nii', 'modulated_white_matter': 'mri/mwp2{file_name}.nii', 'native_grey_matter': 'mri/p1{file_name}.nii', 'native_pve': 'mri/p0{file_name}.nii', 'native_white_matter': 'mri/p2{file_name}.nii', 'neuromorphometrics': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'surface_estimation': ['surf/lh.central.{file_name}.gii', 'surf/lh.sphere.{file_name}.gii', 'surf/lh.sphere.reg.{file_name}.gii', 'surf/lh.thickness.{file_name}', 'surf/rh.central.{file_name}.gii', 'surf/rh.sphere.{file_name}.gii', 'surf/rh.sphere.reg.{file_name}.gii', 'surf/rh.thickness.{file_name}'], 'warped_image': 'mri/wm{file_name}.nii'}

Output file names by key.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.segmentation module

Definition of the Segmentation class.

class django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.segmentation.Segmentation(**kwargs)

Bases: django_mri.analysis.interfaces.matlab.spm.spm_procedure.SPMProcedure

An interface for the CAT12 segmentation function.

AUXILIARY_OUTPUT = {'batch_file': 'segmentation.m', 'reports': ['report/cat_{file_name}.mat', 'report/cat_{file_name}.xml', 'report/catlog_{file_name}.txt', 'report/catreport_{file_name}.pdf', 'report/catreportj_{file_name}.jpg']}
BATCH_TEMPLATE_ID = 'CAT12 Segmentation'
DEFAULTS = {'accuracy': 'average', 'affine_preprocessing': 'rough', 'affine_regularisation': 'mni', 'bias_strength': 'medium', 'cobra': False, 'dartel_grey_matter': False, 'dartel_white_matter': False, 'deformation_fields': 'none', 'hammers': False, 'internal_resampling': 1, 'jacobian_determinant': False, 'local_adaptive_segmentation_strength': 'medium', 'lpba40': False, 'modulated_grey_matter': True, 'modulated_white_matter': True, 'n_processes': 4, 'native_grey_matter': False, 'native_pve': True, 'native_white_matter': False, 'neuromorphometrics': True, 'normalized_image_voxel_size': 1.5, 'skull_stripping': 'aprg', 'surface_estimation': False, 'warped_image': True}
DEFAULT_BATCH_FILE_NAME = 'segmentation.m'
OUTPUT_DEFINITIONS = {'cobra': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'dartel_grey_matter': {'affine': 'mri/rp1{file_name}_affine.nii', 'rigid': 'mri/rp1{file_name}_rigid.nii'}, 'dartel_white_matter': {'affine': 'mri/rp2{file_name}_affine.nii', 'rigid': 'mri/rp2{file_name}_rigid.nii'}, 'deformation_fields': {'both': ['mri/y_{file_name}.nii', 'mri/iy_{file_name}.nii'], 'forward': 'mri/y_{file_name}.nii', 'inverse': 'mri/iy_{file_name}.nii', 'none': None}, 'hammers': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'jacobian_determinant': 'mri/wj_{file_name}.nii', 'lpba40': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'modulated_grey_matter': 'mri/mwp1{file_name}.nii', 'modulated_white_matter': 'mri/mwp2{file_name}.nii', 'native_grey_matter': 'mri/p1{file_name}.nii', 'native_pve': 'mri/p0{file_name}.nii', 'native_white_matter': 'mri/p2{file_name}.nii', 'neuromorphometrics': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'surface_estimation': ['surf/lh.central.{file_name}.gii', 'surf/lh.sphere.{file_name}.gii', 'surf/lh.sphere.reg.{file_name}.gii', 'surf/lh.thickness.{file_name}', 'surf/rh.central.{file_name}.gii', 'surf/rh.sphere.{file_name}.gii', 'surf/rh.sphere.reg.{file_name}.gii', 'surf/rh.thickness.{file_name}'], 'warped_image': 'mri/wm{file_name}.nii'}
REDUNDANT_LOG_PATTERN = 'catlog_main_*_log*.txt'
TRANSFORMATIONS = {'accuracy': {'average': 0.5, 'high': 0.75, 'ultra high': 1}, 'affine_preprocessing': {'full': 2, 'light': 1, 'none': 0, 'rough': 1070}, 'bias_strength': {'light': 0.25, 'medium': 0.5, 'strong': 0.75}, 'dartel_grey_matter': {'affine': 2, 'no': 0, 'rigid': 1}, 'dartel_white_matter': {'affine': 2, 'no': 0, 'rigid': 1}, 'deformation_fields': {'both': '[1 1]', 'forward': '[1 0]', 'inverse': '[0 1]', 'none': '[0 0]'}, 'local_adaptive_segmentation_strength': {'light': 0.25, 'medium': 0.5, 'none': 0, 'strong': 0.75}, 'skull_stripping': {'aprg': 2, 'gcut': 0.5, 'none': -1, 'spm': 0}}
organize_output(path: pathlib.Path, created_uncompressed_version: bool, destination: pathlib.Path, remove_redundant_logs: bool, verbose_output_dict: bool = False) → dict

Organized output files after execution.

Parameters:
  • path (Path) – Input file path
  • created_uncompressed_version (bool) – Whether an uncompressed version of the input value was created or not
  • destination (Path) – Output files destination directory
  • remove_redundant_logs (bool) – Whether to remove logs created during execution or not
  • verbose_output_dict (bool, optional) – Whether to flatten the output dictionary to facilitate integration with django_analyses, by default False
Returns:

Output files by keys

Return type:

dict

remove_redundant_logs(run_dir: pathlib.Path)

Removed unnecessary logs created during execution.

Parameters:run_dir (Path) – Output files destination
run(path: pathlib.Path, destination: pathlib.Path = None, remove_redundant_logs: bool = True, verbose_output_dict: bool = False) → dict

Run CAT12 segmentation on the provided .nii input file.

Parameters:
  • path (Path) – Input file
  • destination (Path, optional) – Output file destination directory, by default None
  • remove_redundant_logs (bool, optional) – Whether to remove some logs created during execution, by default True
  • verbose_output_dict (bool, optional) – Whether to verbosify and flatten the output files dictionary, by default False
Returns:

Output files by key

Return type:

dict

transform_options() → dict

Apply any transformation defined in the transformations module to the options dictionary.

Returns:Tranformed options dictionary
Return type:dict
update_batch_template(data_path: pathlib.Path) → str

Returns a copy of the batch template, updated with the configured options and data path.

Parameters:data_path (Path) – Path of the input .nii file
Returns:Updated batch template
Return type:str
validate_and_fix_input_data(path: pathlib.Path) → Tuple[pathlib.Path, bool]

Validate the provided data path and creates an unzipped version if required.

Parameters:path (Path) – Path to input data
Returns:Fixed input data path, whether is was unzipped or not
Return type:Tuple[Path, bool]

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.transformations module

Definition of the SEGMENTATION_TRANSFORMATIONS dictionary.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.transformations.SEGMENTATION_TRANSFORMATIONS = {'accuracy': {'average': 0.5, 'high': 0.75, 'ultra high': 1}, 'affine_preprocessing': {'full': 2, 'light': 1, 'none': 0, 'rough': 1070}, 'bias_strength': {'light': 0.25, 'medium': 0.5, 'strong': 0.75}, 'dartel_grey_matter': {'affine': 2, 'no': 0, 'rigid': 1}, 'dartel_white_matter': {'affine': 2, 'no': 0, 'rigid': 1}, 'deformation_fields': {'both': '[1 1]', 'forward': '[1 0]', 'inverse': '[0 1]', 'none': '[0 0]'}, 'local_adaptive_segmentation_strength': {'light': 0.25, 'medium': 0.5, 'none': 0, 'strong': 0.75}, 'skull_stripping': {'aprg': 2, 'gcut': 0.5, 'none': -1, 'spm': 0}}

Transformation to apply to option values before editing the batch template.