lsst.ip.isr
g02d81e74bb+86cf3d8bc9
Loading...
Searching...
No Matches
python
lsst
ip
isr
straylight.py
Go to the documentation of this file.
1
# This file is part of ip_isr.
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
__all__ = [
"StrayLightConfig"
,
"StrayLightTask"
,
"StrayLightData"
]
23
24
from
abc
import
abstractmethod
25
from
typing
import
Optional
26
27
from
lsst.pex.config
import
Config, Field, ListField
28
from
lsst.pipe.base
import
Task
29
from
lsst.geom
import
Angle
30
from
.isrFunctions
import
checkFilter
31
from
.calibType
import
IsrCalib
32
33
34
class
StrayLightConfig
(Config):
35
doRotatorAngleCorrection = Field(
36
dtype=bool,
37
doc=
"Rotator angle correction configuration."
,
38
default=
False
,
39
)
40
# TODO DM-28093: change the doc to specify that these are physical labels
41
filters = ListField(
42
dtype=str,
43
doc=
"Filters that need straylight correction."
,
44
default=[],
45
)
46
47
48
class
StrayLightTask
(Task):
49
"""Remove stray light from instruments.
50
51
This is a dummy task to be retargeted with an camera-specific version.
52
"""
53
ConfigClass = StrayLightConfig
54
_DefaultName =
"isrStrayLight"
55
56
def
check
(self, exposure):
57
"""Check if stray light correction should be run.
58
59
Parameters
60
----------
61
exposure : `lsst.afw.image.Exposure`
62
Exposure to correct.
63
"""
64
return
False
65
66
def
run
(self, exposure, strayLightData):
67
"""Correct stray light.
68
69
Parameters
70
----------
71
exposure : `lsst.afw.image.Exposure`
72
Exposure to correct.
73
strayLightData : `object`, optional
74
An opaque object that contains any calibration data used to
75
correct for stray light.
76
"""
77
raise
NotImplementedError(
"Must be implemented by subclasses."
)
78
79
def
checkFilter
(self, exposure):
80
"""Check whether we should fringe-subtract the science exposure.
81
82
Parameters
83
----------
84
exposure : `lsst.afw.image.Exposure`
85
Exposure to check the filter of.
86
87
Returns
88
-------
89
needsFringe : `bool`
90
If True, then the exposure has a filter listed in the
91
configuration, and should have the fringe applied.
92
"""
93
return
checkFilter(exposure, self.config.filters, log=self.log)
94
95
96
class
StrayLightData
(
IsrCalib
):
97
"""An abstract base class for rotator-dependent stray light information.
98
"""
99
100
@abstractmethod
101
def
evaluate
(self, angle_start: Angle, angle_end: Optional[Angle] =
None
):
102
"""Get a stray light array for a range of rotator angles.
103
104
Parameters
105
----------
106
angle_begin : `float`
107
Instrument rotation angle at the start of the exposure.
108
angle_end : `float`, optional
109
Instrument rotation angle at the end of the exposure.
110
If not provided, the returned array will reflect a snapshot at
111
`angle_start`.
112
113
Returns
114
-------
115
array : `numpy.ndarray`
116
A stray-light background image for this exposure.
117
"""
118
raise
NotImplementedError(
"Must be implemented by subclasses."
)
lsst::ip::isr.calibType.IsrCalib
Definition
calibType.py:39
lsst::ip::isr.straylight.StrayLightConfig
Definition
straylight.py:34
lsst::ip::isr.straylight.StrayLightData
Definition
straylight.py:96
lsst::ip::isr.straylight.StrayLightData.evaluate
evaluate(self, Angle angle_start, Optional[Angle] angle_end=None)
Definition
straylight.py:101
lsst::ip::isr.straylight.StrayLightTask
Definition
straylight.py:48
lsst::ip::isr.straylight.StrayLightTask.check
check(self, exposure)
Definition
straylight.py:56
lsst::ip::isr.straylight.StrayLightTask.run
run(self, exposure, strayLightData)
Definition
straylight.py:66
lsst::ip::isr.straylight.StrayLightTask.checkFilter
checkFilter(self, exposure)
Definition
straylight.py:79
lsst::geom
lsst::pex::config
Generated on Fri Apr 26 2024 10:39:13 for lsst.ip.isr by
1.10.0