Replaced relevant Sequences with FloatSequence and IntSequence types

This commit is contained in:
Daniel Otto de Mentock 2022-01-14 14:37:48 +01:00
parent 4ba9935ccc
commit aabeee9de1
2 changed files with 19 additions and 16 deletions

View File

@ -1,6 +1,5 @@
import inspect import inspect
import copy import copy
from typing import Union, Callable, Sequence, Dict, Any, Tuple, List
import numpy as np import numpy as np
@ -9,6 +8,9 @@ from . import Crystal
from . import util from . import util
from . import tensor from . import tensor
from typing import Union, Callable, Sequence, Dict, Any, Tuple, List
from ._typehints import FloatSequence, IntSequence
_parameter_doc = \ _parameter_doc = \
""" """
@ -94,7 +96,7 @@ class Orientation(Rotation,Crystal):
@util.extend_docstring(_parameter_doc) @util.extend_docstring(_parameter_doc)
def __init__(self, def __init__(self,
rotation: Union[Sequence[float], np.ndarray, Rotation] = np.array([1.,0.,0.,0.]), *, rotation: Union[FloatSequence, Rotation] = np.array([1.,0.,0.,0.]), *,
family: str = None, family: str = None,
lattice: str = None, lattice: str = None,
a: float = None, b: float = None, c: float = None, a: float = None, b: float = None, c: float = None,
@ -121,7 +123,7 @@ class Orientation(Rotation,Crystal):
return '\n'.join([Crystal.__repr__(self), return '\n'.join([Crystal.__repr__(self),
Rotation.__repr__(self)]) Rotation.__repr__(self)])
def __copy__(self,rotation: Union[Sequence[float], np.ndarray, Rotation] = None) -> "Orientation": def __copy__(self,rotation: Union[FloatSequence, Rotation] = None) -> "Orientation":
"""Create deep copy.""" """Create deep copy."""
dup = copy.deepcopy(self) dup = copy.deepcopy(self)
if rotation is not None: if rotation is not None:
@ -360,8 +362,8 @@ class Orientation(Rotation,Crystal):
@classmethod @classmethod
@util.extend_docstring(_parameter_doc) @util.extend_docstring(_parameter_doc)
def from_directions(cls, def from_directions(cls,
uvw: Union[Sequence[float], np.ndarray], uvw: FloatSequence,
hkl: Union[Sequence[float], np.ndarray], hkl: FloatSequence,
**kwargs) -> "Orientation": **kwargs) -> "Orientation":
""" """
Initialize orientation object from two crystallographic directions. Initialize orientation object from two crystallographic directions.
@ -874,8 +876,8 @@ class Orientation(Rotation,Crystal):
def Schmid(self, *, def Schmid(self, *,
N_slip: Sequence[int] = None, N_slip: IntSequence = None,
N_twin: Sequence[int] = None) -> np.ndarray: N_twin: IntSequence = None) -> np.ndarray:
u""" u"""
Calculate Schmid matrix P = d n in the lab frame for selected deformation systems. Calculate Schmid matrix P = d n in the lab frame for selected deformation systems.

View File

@ -7,6 +7,7 @@ from . import util
from . import grid_filters from . import grid_filters
from typing import Union, Sequence, Tuple, Literal, List from typing import Union, Sequence, Tuple, Literal, List
from ._typehints import FloatSequence, IntSequence
_P = -1 _P = -1
@ -63,7 +64,7 @@ class Rotation:
__slots__ = ['quaternion'] __slots__ = ['quaternion']
def __init__(self, rotation: Union[Sequence[float], np.ndarray, "Rotation"] = np.array([1.0,0.0,0.0,0.0])): def __init__(self, rotation: Union[FloatSequence, "Rotation"] = np.array([1.0,0.0,0.0,0.0])):
""" """
New rotation. New rotation.
@ -90,7 +91,7 @@ class Rotation:
+ str(self.quaternion) + str(self.quaternion)
def __copy__(self, rotation: Union[Sequence[float], np.ndarray, "Rotation"] = None) -> "Rotation": def __copy__(self, rotation: Union[FloatSequence, "Rotation"] = None) -> "Rotation":
"""Create deep copy.""" """Create deep copy."""
dup = copy.deepcopy(self) dup = copy.deepcopy(self)
if rotation is not None: if rotation is not None:
@ -668,7 +669,7 @@ class Rotation:
# Static constructors. The input data needs to follow the conventions, options allow to # Static constructors. The input data needs to follow the conventions, options allow to
# relax the conventions. # relax the conventions.
@staticmethod @staticmethod
def from_quaternion(q: Union[Sequence[Sequence[float]], np.ndarray], def from_quaternion(q: Union[Sequence[FloatSequence], np.ndarray],
accept_homomorph: bool = False, accept_homomorph: bool = False,
P: Literal[1, -1] = -1) -> "Rotation": P: Literal[1, -1] = -1) -> "Rotation":
""" """
@ -936,7 +937,7 @@ class Rotation:
@staticmethod @staticmethod
def from_random(shape: Tuple[int, ...] = None, def from_random(shape: Tuple[int, ...] = None,
rng_seed: Union[None, int, Sequence[int], np.ndarray] = None) -> "Rotation": rng_seed: Union[int, IntSequence] = None) -> "Rotation":
""" """
Initialize with random rotation. Initialize with random rotation.
@ -970,7 +971,7 @@ class Rotation:
N: int = 500, N: int = 500,
degrees: bool = True, degrees: bool = True,
fractions: bool = True, fractions: bool = True,
rng_seed: Union[None, int, Sequence[int], np.ndarray] = None) -> "Rotation": rng_seed: Union[None, int, IntSequence] = None) -> "Rotation":
""" """
Sample discrete values from a binned orientation distribution function (ODF). Sample discrete values from a binned orientation distribution function (ODF).
@ -1027,7 +1028,7 @@ class Rotation:
sigma: float, sigma: float,
N: int = 500, N: int = 500,
degrees: bool = True, degrees: bool = True,
rng_seed: Union[None, int, Sequence[int], np.ndarray] = None) -> "Rotation": rng_seed: Union[None, int, IntSequence] = None) -> "Rotation":
""" """
Calculate set of rotations with Gaussian distribution around center. Calculate set of rotations with Gaussian distribution around center.
@ -1058,12 +1059,12 @@ class Rotation:
@staticmethod @staticmethod
def from_fiber_component(alpha: Union[Sequence[int], np.ndarray], def from_fiber_component(alpha: IntSequence,
beta: Union[Sequence[int], np.ndarray], beta: IntSequence,
sigma: float = 0.0, sigma: float = 0.0,
N: int = 500, N: int = 500,
degrees: bool = True, degrees: bool = True,
rng_seed: Union[None, int, Sequence[int], np.ndarray] = None): rng_seed: Union[int, IntSequence] = None):
""" """
Calculate set of rotations with Gaussian distribution around direction. Calculate set of rotations with Gaussian distribution around direction.