lsst.afw
g714e0ed6de+de8826df4f
Loading...
Searching...
No Matches
python
lsst
afw
geom
_python
_transform.py
Go to the documentation of this file.
1
# This file is part of afw.
2
#
3
# Developed for the LSST Data Management System.
4
# This product includes software developed by the LSST Project
5
# (https://www.lsst.org).
6
# See the COPYRIGHT file at the top-level directory of this distribution
7
# for details of code ownership.
8
#
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the GNU General Public License
20
# along with this program. If not, see <https://www.gnu.org/licenses/>.
21
22
"""Python helpers for pybind11 wrapping of Transform classes and subclasses
23
24
.. _pybind11_transform_classes:
25
26
Transform Classes and Subclasses
27
--------------------------------
28
29
Transforms are instances of
30
lsst::afw::geom::Transform<FromEndpoint, ToEndpoint>
31
and subclasses, such as lsst::afw::geom::SkyWcs.
32
33
In Python the templated Transform classes have names such as
34
`lsst.afw.geom.TransformSpherePointToPoint2` for
35
`lsst::afw::geom::Transform<SpherePointEndpoint, Point2Endpoint>`
36
"""
37
38
39
__all__ = [
"addTransformMethods"
,
"reduceTransform"
,
"transformRegistry"
]
40
41
import
lsst.pex.exceptions
42
43
# registry of transform classes; a dict of class name: transform class
44
transformRegistry = {}
45
46
47
def
getJacobian
(self, x):
48
# Force 2D matrix over numpy's protests
49
matrix = self._getJacobian(x)
50
matrix.shape = (self.toEndpoint.nAxes,
51
self.fromEndpoint.nAxes)
52
return
matrix
53
54
55
def
then
(self, next, simplify=True):
56
"""Concatenate two transforms
57
58
The result of A.then(B) is is C(x) = B(A(x))
59
"""
60
if
self.toEndpoint == next.fromEndpoint:
61
return
self._then(next, simplify=simplify)
62
else
:
63
raise
lsst.pex.exceptions.InvalidParameterError
(
64
"Cannot concatenate %r and %r: endpoints do not match."
65
% (self, next))
66
67
68
def
unpickleTransform
(cls, state):
69
"""Unpickle a Transform object
70
71
Parameters
72
----------
73
cls : `type`
74
A `Transform` class.
75
state : `str`
76
Pickled state.
77
78
Returns
79
-------
80
transform : `cls`
81
The unpickled Transform.
82
"""
83
return
cls.readString(state)
84
85
86
def
reduceTransform
(transform):
87
"""Pickle a Transform object
88
89
This provides the `__reduce__` implementation for a Transform.
90
"""
91
return
unpickleTransform, (type(transform), transform.writeString())
92
93
94
def
addTransformMethods
(cls):
95
"""Add pure python methods to the specified Transform class, and register
96
the class in `transformRegistry`
97
98
All :ref:`_pybind11_transform_classes` must call this function.
99
100
Parameters
101
----------
102
cls : :ref:`_pybind11_transform_classes`
103
A Transform class or subclass, e.g.
104
`lsst.afw.geom.TransformPoint2ToSpherePoint`
105
"""
106
className = cls.__name__
107
if
className
in
transformRegistry:
108
raise
RuntimeError(f
"Class {className!r}={transformRegistry[className]} already registered; "
109
f
"cannot register class {cls}"
)
110
transformRegistry[cls.__name__] = cls
111
cls.getJacobian = getJacobian
112
cls.then = then
113
cls.__reduce__ = reduceTransform
lsst::pex::exceptions::InvalidParameterError
lsst::afw::geom._python._transform.unpickleTransform
unpickleTransform(cls, state)
Definition
_transform.py:68
lsst::afw::geom._python._transform.getJacobian
getJacobian
Definition
_transform.py:111
lsst::afw::geom._python._transform.reduceTransform
reduceTransform(transform)
Definition
_transform.py:86
lsst::afw::geom._python._transform.addTransformMethods
addTransformMethods(cls)
Definition
_transform.py:94
lsst::afw::geom._python._transform.then
then
Definition
_transform.py:112
lsst::pex::exceptions
Generated on Sat Apr 25 2026 01:19:55 for lsst.afw by
1.13.2