Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
include README.md
include LICENSE
include CHANGELOG.md
include spinstep/py.typed
recursive-exclude benchmark *
recursive-exclude demos *
recursive-exclude examples *
Expand Down
2 changes: 2 additions & 0 deletions spinstep/discrete.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

from __future__ import annotations

__all__ = ["DiscreteOrientationSet"]

from typing import Any

import numpy as np
Expand Down
2 changes: 2 additions & 0 deletions spinstep/discrete_iterator.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

from __future__ import annotations

__all__ = ["DiscreteQuaternionIterator"]

from typing import Iterator, List, Set, Tuple

import numpy as np
Expand Down
2 changes: 2 additions & 0 deletions spinstep/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

from __future__ import annotations

__all__ = ["Node"]

from typing import List, Optional, Sequence

import numpy as np
Expand Down
Empty file added spinstep/py.typed
Empty file.
2 changes: 2 additions & 0 deletions spinstep/traversal.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

from __future__ import annotations

__all__ = ["QuaternionDepthIterator"]

from typing import Iterator, List, Optional, Tuple

import numpy as np
Expand Down
38 changes: 37 additions & 1 deletion spinstep/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,40 @@
# Author: Eraldo B. Marques <eraldo.bernardo@gmail.com> — Created: 2025-05-14
# See LICENSE.txt for full terms. This header must be retained in redistributions.

"""Internal utilities for quaternion math and array backend selection."""
"""Utilities for quaternion math and array backend selection.

This sub-package provides:

- :func:`~.array_backend.get_array_module` — NumPy / CuPy backend selection.
- :func:`~.quaternion_math.batch_quaternion_angle` — batch angular distances.
- Quaternion helpers in :mod:`~.quaternion_utils` (conversion, distance,
multiplication, etc.).
"""

__all__ = [
"get_array_module",
"batch_quaternion_angle",
"quaternion_from_euler",
"quaternion_distance",
"rotate_quaternion",
"is_within_angle_threshold",
"quaternion_conjugate",
"quaternion_multiply",
"rotation_matrix_to_quaternion",
"get_relative_spin",
"get_unique_relative_spins",
]

from .array_backend import get_array_module
from .quaternion_math import batch_quaternion_angle
from .quaternion_utils import (
get_relative_spin,
get_unique_relative_spins,
is_within_angle_threshold,
quaternion_conjugate,
quaternion_distance,
quaternion_from_euler,
quaternion_multiply,
rotate_quaternion,
rotation_matrix_to_quaternion,
)
2 changes: 2 additions & 0 deletions spinstep/utils/array_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

from __future__ import annotations

__all__ = ["get_array_module"]

from types import ModuleType


Expand Down
5 changes: 4 additions & 1 deletion spinstep/utils/quaternion_math.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@

from __future__ import annotations

from types import ModuleType
from typing import Any

__all__ = ["batch_quaternion_angle"]

def batch_quaternion_angle(qs1: Any, qs2: Any, xp: Any) -> Any:

def batch_quaternion_angle(qs1: Any, qs2: Any, xp: ModuleType) -> Any:
"""Compute pairwise angular distances between two sets of quaternions.

Parameters
Expand Down
12 changes: 12 additions & 0 deletions spinstep/utils/quaternion_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@

from __future__ import annotations

__all__ = [
"quaternion_from_euler",
"quaternion_distance",
"rotate_quaternion",
"is_within_angle_threshold",
"quaternion_conjugate",
"quaternion_multiply",
"rotation_matrix_to_quaternion",
"get_relative_spin",
"get_unique_relative_spins",
]

from typing import List, Sequence

import numpy as np
Expand Down
Loading