Source code for NeuroRuler.utils.exceptions

"""Custom exceptions."""

from NeuroRuler.utils.constants import (
    deprecated,
    ROTATION_MAX,
    ROTATION_MIN,
    JSON_GUI_CONFIG_PATH,
)


[docs]class ComputeCircumferenceOfInvalidSlice(Exception): """User attempted to compute circumference of an invalid slice. We detect this by noticing that the number of contours in the slice >= global_vars.NUM_CONTOURS_IN_INVALID_SLICE AFTER processing (threshold, select largest component, etc.) in NeuroRuler.utils.imgproc.contour(). Most valid brain slices have only 2 or 3 detectable contours. Change the number in global_vars.py, then run ``pytest`` and examine slices given by settings in tests/noise_vals.txt. Some valid slices have 6 or 7 contours. See NIFTI file (0, 0, 0, 151) for a valid slice with 9 contours. 9 seems like a good limit. """
[docs] def __init__(self, num_contours): self.message = ( f"You attempted to compute the circumference of something that isn't a valid brain slice. After processing, contours detected was {num_contours}\n" f"Likely just noise or otherwise not a valid brain slice." ) super().__init__(self.message)
[docs]class ArraysDifferentShape(Exception):
[docs] def __init__(self): self.message = f"Ran into two arrays of different shape when it was necessary that they be of the same shape." super().__init__(self.message)
[docs]class InvalidColor(Exception):
[docs] def __init__(self, color: str): self.message = f"Invalid color {color} specified." super().__init__(self.message)
[docs]class RotationOutOfBounds(Exception): """Should never be encountered in the GUI because our sliders have min and max. This will be for CLI arguments."""
[docs] def __init__(self, theta: int, axis: str): self.message = f"{axis} rotation value {theta} out of bounds. Min rotation value is {ROTATION_MIN} degrees, and max is {ROTATION_MAX}." super().__init__(self.message)
[docs]class InvalidJSONField(Exception):
[docs] def __init__(self, field: str, expected: str): """``field`` is the name of the invalid field ``expected`` is some information about what the expected value should be""" self.message = f"The field {field} in {JSON_GUI_CONFIG_PATH} has an invalid type or value.\nExpected: {expected}" super().__init__(self.message)