:mod:`neuron_morphology.transforms.affine_transform` ==================================================== .. py:module:: neuron_morphology.transforms.affine_transform Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: neuron_morphology.transforms.affine_transform.AffineTransform Functions ~~~~~~~~~ .. autoapisummary:: neuron_morphology.transforms.affine_transform.affine_from_transform_translation neuron_morphology.transforms.affine_transform.rotation_from_angle neuron_morphology.transforms.affine_transform.affine_from_translation neuron_morphology.transforms.affine_transform.affine_from_transform .. py:class:: AffineTransform(affine: Optional[Any] = None) Bases: :class:`neuron_morphology.transforms.transform_base.TransformBase` Handles transformations to a pia/wm aligned coordinate frame. .. !! processed by numpydoc !! .. classmethod:: from_dict(cls, affine_dict: Dict[str, float]) Create an AffineTransform from a dict with keys and values. :Parameters: **affine_dict: keys and values corresponding to the following** [[tvr_00 tvr_01 tvr_02 tvr_09] [tvr_03 tvr_04 tvr_05 tvr_10] [tvr_06 tvr_07 tvr_08 tvr_11] [0 0 0 1]] :Returns: AffineTransform object .. .. !! processed by numpydoc !! .. classmethod:: from_list(cls, affine_list: List[float]) Create an Affine Transform from a list :Parameters: **affine_list: list of tvr values corresponding to:** [[tvr_00 tvr_01 tvr_02 tvr_09] [tvr_03 tvr_04 tvr_05 tvr_10] [tvr_06 tvr_07 tvr_08 tvr_11] [0 0 0 1]] :Returns: AffineTransform object .. .. !! processed by numpydoc !! .. method:: to_dict(self) Create dictionary defining the transformation. :Returns: Dict with keys and values corresponding to the following: [[tvr_00 tvr_01 tvr_02 tvr_09] [tvr_03 tvr_04 tvr_05 tvr_10] [tvr_06 tvr_07 tvr_08 tvr_11] [0 0 0 1]] .. !! processed by numpydoc !! .. method:: to_list(self) Create a list defining the transformation. :Returns: List with values corresponding to the following: [[tvr_00 tvr_01 tvr_02 tvr_09] [tvr_03 tvr_04 tvr_05 tvr_10] [tvr_06 tvr_07 tvr_08 tvr_11] [0 0 0 1]] .. !! processed by numpydoc !! .. method:: transform(self, vector: Any) Apply this transform to (3,) point or (n,3) array-like of points. :Parameters: **vector: a (3,) array-like point or a (n,3) array-like array** of points to be transformed :Returns: numpy.ndarray with same shape as input .. .. !! processed by numpydoc !! .. method:: _get_scaling_factor(self) Calculate the scaling factor from the affine matrix. :Returns: Scaling factor: 3rd root of the determinant. .. .. !! processed by numpydoc !! .. method:: transform_morphology(self, morphology: Morphology, clone: bool = False, scale_radius: bool = True) Apply this transform to all nodes in a morphology. :Parameters: **morphology: a Morphology loaded from an swc file** .. **clone: make a new object if True** .. **scale_radius: apply radius scaling if True** .. :Returns: A Morphology .. .. !! processed by numpydoc !! .. function:: affine_from_transform_translation(transform: Optional[Any] = None, translation: Optional[Any] = None, translate_first: bool = False) Create affine from linear transformation and translation. Affine transformation of vector x -> Ax + b in 3D: [A, b 0, 0, 0, 1] A is a 3x3 linear tranformation b is a 3x1 translation :Parameters: **transform: linear transformation (3, 3) array-like** .. **translation: linear translation (3,) array-like** .. **translate_first: apply the translation before the transform** .. :Returns: (4, 4) numpy.ndarray affine matrix .. .. !! processed by numpydoc !! .. function:: rotation_from_angle(angle: float, axis: int = 2) Create an affine matrix from a rotation about a specific axis. :Parameters: **angle: rotation angle in radians** .. **axis: axis to rotate about, 0=x, 1=y, 2=z (default z axis)** .. :Returns: (3, 3) numpy.ndarray rotation matrix .. .. !! processed by numpydoc !! .. function:: affine_from_translation(translation: Any) Create an affine translation. :Parameters: **translation: array-like vector of x, y, and z translations** .. :Returns: (4, 4) numpy.ndarray affine matrix .. .. !! processed by numpydoc !! .. function:: affine_from_transform(transform: Any) Create affine transformation. :Parameters: **transformation: (3, 3) row major array-like transformation** .. :Returns: (4, 4) numpy.ndarray affine matrix .. .. !! processed by numpydoc !!