LSSTApplications
20.0.0
LSSTDataManagementBasePackage
stack
1a1d771
Linux64
synpipe
20.0.0
python
lsst
synpipe
FakeSourceLib.py
Go to the documentation of this file.
1
import
numpy
as
np
2
3
import
lsst.afw.geom
4
import
lsst.afw.math
5
import
lsst.pex.config
6
import
lsst.afw.image
7
import
lsst.afw.cameraGeom
8
import
lsst.pipe.base
as
pipeBase
9
10
11
"""
12
Helper functions for making fake sources
13
"""
14
15
16
class
SkyMapIdContainer
(pipeBase.DataIdContainer):
17
"""A version of lsst.pipe.base.DataIdContainer specialized for loading a skyMap
18
in the make fake source catalog scripts. These scripts use the data id in a
19
unique way, such that they only need a tract number. This class supports that
20
use case and should not be used in any other contexts in the LSST stack.
21
Required because butler.subset does not support only tract
22
"""
23
24
def
makeDataRefList
(self, namespace):
25
"""Make self.refList from self.idList
26
"""
27
28
for
dataId
in
self.idList:
29
if
"tract"
not
in
dataId:
30
raise
RuntimeError(
"id must specify which tract to process tract"
)
31
# warn about unused options
32
for
key
in
dataId:
33
if
key !=
"tract"
:
34
namespace.log.warn(
"'{}' specified in --id is unused and will be ignored"
.
format
(key))
35
addList = [dataId]
36
37
self.refList += [namespace.butler.dataRef(datasetType=
"deepCoadd_skyMap"
, dataId=addId)
38
for
addId
in
addList]
39
40
41
def
cropFakeImage
(fakeImage, expBBox):
42
"""
43
Crops the Fake image to fit inside the exposure BBox
44
Note that the bboxes need to have the correct offsets applied
45
Args:
46
fakeImage: fake image object
47
expBBox: bounding box for CCD exposure (integer type, BBoxI)
48
and with offsets applied
49
50
Returns:
51
New cropped fake image
52
"""
53
fakeBBox = fakeImage.getBBox(lsst.afw.image.PARENT)
54
55
if
not
expBBox.contains(fakeBBox):
56
newBBox = fakeImage.getBBox(lsst.afw.image.PARENT)
57
newBBox.clip(expBBox)
58
fakeImage = fakeImage.Factory(fakeImage, newBBox,
59
lsst.afw.image.PARENT)
60
# TODO: finish this up
61
62
63
def
addNoise
(galImage, detector, rand_gen=None):
64
"""
65
adds noise to the the image and returns a variance plane
66
INPUT: image to add noise to
67
detector where the image will be located, this sets the gain
68
NOTE: this assumes float type images and will break if given doubles
69
RETURN: a MaskedImageF with the image with additional noise and the
70
variance plane
71
giving the variance due to the object
72
"""
73
# TODO: this is gaussian noise right now, probably good enough
74
varImage = galImage.Factory(galImage,
True
)
75
if
rand_gen
is
None
:
76
rand_gen = np.random
77
scale = np.sqrt(np.abs(varImage.getArray())) + 1e-12
78
noiseArray = rand_gen.normal(loc=0.0,
79
scale=scale,
80
size=(galImage.getHeight(),
81
galImage.getWidth()))
82
noiseImage = lsst.afw.image.ImageF(noiseArray.astype(np.float32))
83
galImage += noiseImage
84
85
return
lsst.afw.image.MaskedImageF(galImage,
None
, varImage)
lsst::afw::image
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
Definition:
imageAlgorithm.dox:1
lsst.synpipe.FakeSourceLib.addNoise
def addNoise(galImage, detector, rand_gen=None)
Definition:
FakeSourceLib.py:63
lsst.synpipe.FakeSourceLib.SkyMapIdContainer
Definition:
FakeSourceLib.py:16
pex.config.history.format
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition:
history.py:174
lsst::afw::cameraGeom
Definition:
Amplifier.h:33
lsst.synpipe.FakeSourceLib.SkyMapIdContainer.makeDataRefList
def makeDataRefList(self, namespace)
Definition:
FakeSourceLib.py:24
lsst::afw::math
Definition:
statistics.dox:6
lsst.synpipe.FakeSourceLib.cropFakeImage
def cropFakeImage(fakeImage, expBBox)
Definition:
FakeSourceLib.py:41
lsst.pipe.base
Definition:
__init__.py:1
lsst::afw::geom
Definition:
frameSetUtils.h:40
Generated on Wed Jun 24 2020 18:10:12 for LSSTApplications by
1.8.18