LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.pipe.tasks.mocks.mockObject.MockObjectTask Class Reference
Inheritance diagram for lsst.pipe.tasks.mocks.mockObject.MockObjectTask:

Public Member Functions

def __init__
 
def run
 
def makePositions
 
def defineObject
 
def drawSource
 

Public Attributes

 schema
 
 center
 
 magKey
 
 rng
 

Static Public Attributes

 ConfigClass = MockObjectConfig
 

Detailed Description

Task that generates simple mock objects and draws them on images, intended as a subtask of
MockCoaddTask.

May be subclassed to generate things other than stars.

Definition at line 45 of file mockObject.py.

Constructor & Destructor Documentation

def lsst.pipe.tasks.mocks.mockObject.MockObjectTask.__init__ (   self,
  kwds 
)

Definition at line 54 of file mockObject.py.

54 
55  def __init__(self, **kwds):
56  lsst.pipe.base.Task.__init__(self, **kwds)
58  self.center = lsst.afw.table.Point2DKey.addFields(self.schema, "center",
59  "center position in tract WCS", "pixels")
60  self.magKey = self.schema.addField("mag", type=float, doc="exact true magnitude")
61  self.rng = numpy.random.RandomState(self.config.seed)
static Schema makeMinimalSchema()
Return a minimal schema for Simple tables and records.
Definition: Simple.h:121

Member Function Documentation

def lsst.pipe.tasks.mocks.mockObject.MockObjectTask.defineObject (   self,
  record 
)
Fill in additional fields in a truth catalog record (id and coord will already have
been set).

Definition at line 100 of file mockObject.py.

101  def defineObject(self, record):
102  """Fill in additional fields in a truth catalog record (id and coord will already have
103  been set).
104  """
105  mag = self.rng.rand() * (self.config.maxMag - self.config.minMag) + self.config.minMag
106  record.setD(self.magKey, mag)
def lsst.pipe.tasks.mocks.mockObject.MockObjectTask.drawSource (   self,
  record,
  exposure,
  buffer = 0 
)
Draw the given truth catalog record on the given exposure, makings use of its Psf, Wcs,
Calib, and possibly filter to transform it appropriately.

The mask and variance planes of the Exposure are ignored.

The 'buffer' parameter is used to expand the source's bounding box when testing whether it
is considered fully part of the image.

Returns 0 if the object does not appear on the given image at all, 1 if it appears partially,
and 2 if it appears fully (including the given buffer).

Definition at line 107 of file mockObject.py.

108  def drawSource(self, record, exposure, buffer=0):
109  """Draw the given truth catalog record on the given exposure, makings use of its Psf, Wcs,
110  Calib, and possibly filter to transform it appropriately.
111 
112  The mask and variance planes of the Exposure are ignored.
113 
114  The 'buffer' parameter is used to expand the source's bounding box when testing whether it
115  is considered fully part of the image.
116 
117  Returns 0 if the object does not appear on the given image at all, 1 if it appears partially,
118  and 2 if it appears fully (including the given buffer).
119  """
120  wcs = exposure.getWcs()
121  center = wcs.skyToPixel(record.getCoord())
122  try:
123  psfImage = exposure.getPsf().computeImage(center).convertF()
124  except:
125  return 0
126  psfBBox = psfImage.getBBox()
127  overlap = exposure.getBBox()
128  overlap.clip(psfBBox)
129  if overlap.isEmpty():
130  return 0
131  flux = exposure.getCalib().getFlux(record.getD(self.magKey))
132  normalization = flux / psfImage.getArray().sum()
133  if psfBBox != overlap:
134  psfImage = psfImage.Factory(psfImage, overlap)
135  result = 1
136  else:
137  result = 2
138  if buffer != 0:
139  bufferedBBox = lsst.afw.geom.Box2I(psfBBox)
140  bufferedBBox.grow(buffer)
141  bufferedOverlap = exposure.getBBox()
142  bufferedOverlap.clip(bufferedBBox)
143  if bufferedOverlap != bufferedBBox:
144  result = 1
145  image = exposure.getMaskedImage().getImage()
146  subImage = image.Factory(image, overlap)
147  subImage.scaledPlus(normalization, psfImage)
148  return result
boost::enable_if< typename ExpressionTraits< Scalar >::IsScalar, Scalar >::type sum(Scalar const &scalar)
Definition: operators.h:1250
An integer coordinate rectangle.
Definition: Box.h:53
def lsst.pipe.tasks.mocks.mockObject.MockObjectTask.makePositions (   self,
  tractInfo 
)
Generate the centers (as a (coord, point) tuple) of mock objects (the point returned is
in the tract coordinate system).

Default implementation puts objects on a grid that is square in the tract's image coordinate
system, with spacing approximately given by config.spacings.

The return value is a Python iterable over (coord, point) pairs; the default implementation
is actually an iterator (i.e. the function is a "generator"), but derived-class overrides may
return any iterable. 

Definition at line 82 of file mockObject.py.

82 
83  def makePositions(self, tractInfo):
84  """Generate the centers (as a (coord, point) tuple) of mock objects (the point returned is
85  in the tract coordinate system).
86 
87  Default implementation puts objects on a grid that is square in the tract's image coordinate
88  system, with spacing approximately given by config.spacings.
89 
90  The return value is a Python iterable over (coord, point) pairs; the default implementation
91  is actually an iterator (i.e. the function is a "generator"), but derived-class overrides may
92  return any iterable.
93  """
94  wcs = tractInfo.getWcs()
95  spacing = self.config.spacing / wcs.pixelScale().asArcseconds() # get spacing in tract pixels
96  bbox = tractInfo.getBBox()
97  for y in numpy.arange(bbox.getMinY() + 0.5 * spacing, bbox.getMaxY(), spacing):
98  for x in numpy.arange(bbox.getMinX() + 0.5 * spacing, bbox.getMaxX(), spacing):
99  yield wcs.pixelToSky(x, y), lsst.afw.geom.Point2D(x, y),
def lsst.pipe.tasks.mocks.mockObject.MockObjectTask.run (   self,
  tractInfo,
  catalog = None 
)
Add records to the truth catalog and return it, delegating to makePositions and defineObject.

If the given catalog is not None, add records to this catalog and return it instead
of creating a new one.

Subclasses should generally not need to override this method.

Definition at line 62 of file mockObject.py.

62 
63  def run(self, tractInfo, catalog=None):
64  """Add records to the truth catalog and return it, delegating to makePositions and defineObject.
65 
66  If the given catalog is not None, add records to this catalog and return it instead
67  of creating a new one.
68 
69  Subclasses should generally not need to override this method.
70  """
71  if catalog is None:
72  catalog = lsst.afw.table.SimpleCatalog(self.schema)
73  else:
74  if not catalog.getSchema().contains(self.schema):
75  raise ValueError("Catalog schema does not match Task schema")
76  for coord, center in self.makePositions(tractInfo):
77  record = catalog.addNew()
78  record.setCoord(coord)
79  record.set(self.center, center)
80  self.defineObject(record)
81  return catalog
Custom catalog class for record/table subclasses that are guaranteed to have an ID, and should generally be sorted by that ID.
Definition: fwd.h:55

Member Data Documentation

lsst.pipe.tasks.mocks.mockObject.MockObjectTask.center

Definition at line 57 of file mockObject.py.

lsst.pipe.tasks.mocks.mockObject.MockObjectTask.ConfigClass = MockObjectConfig
static

Definition at line 52 of file mockObject.py.

lsst.pipe.tasks.mocks.mockObject.MockObjectTask.magKey

Definition at line 59 of file mockObject.py.

lsst.pipe.tasks.mocks.mockObject.MockObjectTask.rng

Definition at line 60 of file mockObject.py.

lsst.pipe.tasks.mocks.mockObject.MockObjectTask.schema

Definition at line 56 of file mockObject.py.


The documentation for this class was generated from the following file: