LSSTApplications  21.0.0+1b62c9342b,21.0.0+45a059f35e,21.0.0-1-ga51b5d4+ceb9cf20a3,21.0.0-10-g68cce58c5+c7d3cce47e,21.0.0-2-g103fe59+c1ca725317,21.0.0-2-g1367e85+a1c2f7fe71,21.0.0-2-g2909d54+45a059f35e,21.0.0-2-g45278ab+1b62c9342b,21.0.0-2-g4bc9b9f+b2e40a4e47,21.0.0-2-g5242d73+a1c2f7fe71,21.0.0-2-g54e2caa+c00cf99ed0,21.0.0-2-g66bcc37+27b9d7859a,21.0.0-2-g7f82c8f+203cf74700,21.0.0-2-g8dde007+b0df52bfdd,21.0.0-2-g8f08a60+73884b2cf5,21.0.0-2-ga326454+203cf74700,21.0.0-2-ga63a54e+eec04437aa,21.0.0-2-gc738bc1+59028256f4,21.0.0-2-gde069b7+5a8f2956b8,21.0.0-2-ge17e5af+a1c2f7fe71,21.0.0-2-ge712728+9ad031c87e,21.0.0-2-gecfae73+d3766aec80,21.0.0-2-gfc62afb+a1c2f7fe71,21.0.0-20-g4449a12+38dfb87bce,21.0.0-22-gf0532904+afb8e7912b,21.0.0-3-g4c5b185+a403cb96fd,21.0.0-3-g6d51c4a+27b9d7859a,21.0.0-3-g8076721+e873df194c,21.0.0-3-gaa929c8+df5d87f43a,21.0.0-3-gd222c45+afc8332dbe,21.0.0-4-g1383c07+27b9d7859a,21.0.0-4-g3300ddd+1b62c9342b,21.0.0-4-g5873dc9+9a92674037,21.0.0-4-g8a80011+f67daf2f53,21.0.0-5-gcff38f6+bce43c5818,21.0.0-6-g463d161+44134145d4,21.0.0-6-gd3283ba+df5d87f43a,21.0.0-8-g19111d86+d6551531e4,w.2021.04
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask Class Reference
Inheritance diagram for lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask:

Public Member Functions

def __init__ (self, butler=None, **kwargs)
 
def runDataRef (self, butler)
 
def generateTractOutputProducts (self, butler, tract, visitCat, zptCat, atmCat, stdCat, fgcmBuildStarsConfig, fgcmFitCycleConfig)
 

Public Attributes

 indexer
 
 visitDataRefName
 
 ccdDataRefName
 
 filterMap
 
 configBands
 
 bands
 

Static Public Attributes

 ConfigClass = FgcmOutputProductsConfig
 
 RunnerClass = FgcmOutputProductsRunner
 

Detailed Description

Output products from FGCM global calibration.

Definition at line 242 of file fgcmOutputProducts.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.__init__ (   self,
  butler = None,
**  kwargs 
)
Instantiate an fgcmOutputProductsTask.

Parameters
----------
butler : `lsst.daf.persistence.Butler`

Definition at line 251 of file fgcmOutputProducts.py.

251  def __init__(self, butler=None, **kwargs):
252  """
253  Instantiate an fgcmOutputProductsTask.
254 
255  Parameters
256  ----------
257  butler : `lsst.daf.persistence.Butler`
258  """
259 
260  pipeBase.CmdLineTask.__init__(self, **kwargs)
261 
262  if self.config.doReferenceCalibration:
263  # We need the ref obj loader to get the flux field
264  self.makeSubtask("refObjLoader", butler=butler)
265 
266  if self.config.doRefcatOutput:
267  self.indexer = IndexerRegistry[self.config.datasetConfig.indexer.name](
268  self.config.datasetConfig.indexer.active)
269 

Member Function Documentation

◆ generateTractOutputProducts()

def lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.generateTractOutputProducts (   self,
  butler,
  tract,
  visitCat,
  zptCat,
  atmCat,
  stdCat,
  fgcmBuildStarsConfig,
  fgcmFitCycleConfig 
)
Generate the output products for a given tract, as specified in the config.

This method is here to have an alternate entry-point for
FgcmCalibrateTract.

Parameters
----------
butler: `lsst.daf.persistence.Butler`
tract: `int`
   Tract number
visitCat: `lsst.afw.table.BaseCatalog`
   FGCM visitCat from `FgcmBuildStarsTask`
zptCat: `lsst.afw.table.BaseCatalog`
   FGCM zeropoint catalog from `FgcmFitCycleTask`
atmCat: `lsst.afw.table.BaseCatalog`
   FGCM atmosphere parameter catalog from `FgcmFitCycleTask`
stdCat: `lsst.afw.table.SimpleCatalog`
   FGCM standard star catalog from `FgcmFitCycleTask`
fgcmBuildStarsConfig: `lsst.fgcmcal.FgcmBuildStarsConfig`
   Configuration object from `FgcmBuildStarsTask`
fgcmFitCycleConfig: `lsst.fgcmcal.FgcmFitCycleConfig`
   Configuration object from `FgcmFitCycleTask`

Definition at line 399 of file fgcmOutputProducts.py.

399  def generateTractOutputProducts(self, butler, tract,
400  visitCat, zptCat, atmCat, stdCat,
401  fgcmBuildStarsConfig, fgcmFitCycleConfig):
402  """
403  Generate the output products for a given tract, as specified in the config.
404 
405  This method is here to have an alternate entry-point for
406  FgcmCalibrateTract.
407 
408  Parameters
409  ----------
410  butler: `lsst.daf.persistence.Butler`
411  tract: `int`
412  Tract number
413  visitCat: `lsst.afw.table.BaseCatalog`
414  FGCM visitCat from `FgcmBuildStarsTask`
415  zptCat: `lsst.afw.table.BaseCatalog`
416  FGCM zeropoint catalog from `FgcmFitCycleTask`
417  atmCat: `lsst.afw.table.BaseCatalog`
418  FGCM atmosphere parameter catalog from `FgcmFitCycleTask`
419  stdCat: `lsst.afw.table.SimpleCatalog`
420  FGCM standard star catalog from `FgcmFitCycleTask`
421  fgcmBuildStarsConfig: `lsst.fgcmcal.FgcmBuildStarsConfig`
422  Configuration object from `FgcmBuildStarsTask`
423  fgcmFitCycleConfig: `lsst.fgcmcal.FgcmFitCycleConfig`
424  Configuration object from `FgcmFitCycleTask`
425  """
426 
427  self.configBands = fgcmFitCycleConfig.bands
428  self.visitDataRefName = fgcmBuildStarsConfig.visitDataRefName
429  self.ccdDataRefName = fgcmBuildStarsConfig.ccdDataRefName
430  self.filterMap = fgcmBuildStarsConfig.filterMap
431 
432  if stdCat is not None:
433  md = stdCat.getMetadata()
434  self.bands = md.getArray('BANDS')
435  else:
436  self.bands = self.configBands
437 
438  if self.config.doReferenceCalibration and fgcmFitCycleConfig.doReferenceCalibration:
439  self.log.warn("doReferenceCalibration is set, and is possibly redundant with "
440  "fitCycleConfig.doReferenceCalibration")
441 
442  if self.config.doComposeWcsJacobian and not fgcmBuildStarsConfig.doApplyWcsJacobian:
443  raise RuntimeError("Cannot compose the WCS jacobian if it hasn't been applied "
444  "in fgcmBuildStarsTask.")
445 
446  if not self.config.doComposeWcsJacobian and fgcmBuildStarsConfig.doApplyWcsJacobian:
447  self.log.warn("Jacobian was applied in build-stars but doComposeWcsJacobian is not set.")
448 
449  if self.config.doReferenceCalibration:
450  offsets = self._computeReferenceOffsets(butler, stdCat)
451  else:
452  offsets = np.zeros(len(self.bands))
453 
454  if self.config.doRefcatOutput:
455  # Create a special config that has the tract number in it
456  datasetConfig = copy.copy(self.config.datasetConfig)
457  datasetConfig.ref_dataset_name = '%s_%d' % (self.config.datasetConfig.ref_dataset_name,
458  tract)
459  self._outputStandardStars(butler, stdCat, offsets, datasetConfig)
460 
461  if self.config.doZeropointOutput:
462  self._outputZeropoints(butler, zptCat, visitCat, offsets, tract=tract)
463 
464  if self.config.doAtmosphereOutput:
465  self._outputAtmospheres(butler, atmCat, tract=tract)
466 
467  return pipeBase.Struct(offsets=offsets)
468 

◆ runDataRef()

def lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.runDataRef (   self,
  butler 
)
Make FGCM output products for use in the stack

Parameters
----------
butler:  `lsst.daf.persistence.Butler`
cycleNumber: `int`
   Final fit cycle number, override config.

Returns
-------
offsets: `lsst.pipe.base.Struct`
   A structure with array of zeropoint offsets

Raises
------
RuntimeError:
   Raised if any one of the following is true:

   - butler cannot find "fgcmBuildStars_config" or
     "fgcmBuildStarsTable_config".
   - butler cannot find "fgcmFitCycle_config".
   - "fgcmFitCycle_config" does not refer to
     `self.config.cycleNumber`.
   - butler cannot find "fgcmAtmosphereParameters" and
     `self.config.doAtmosphereOutput` is `True`.
   - butler cannot find "fgcmStandardStars" and
     `self.config.doReferenceCalibration` is `True` or
     `self.config.doRefcatOutput` is `True`.
   - butler cannot find "fgcmZeropoints" and
     `self.config.doZeropointOutput` is `True`.

Definition at line 275 of file fgcmOutputProducts.py.

275  def runDataRef(self, butler):
276  """
277  Make FGCM output products for use in the stack
278 
279  Parameters
280  ----------
281  butler: `lsst.daf.persistence.Butler`
282  cycleNumber: `int`
283  Final fit cycle number, override config.
284 
285  Returns
286  -------
287  offsets: `lsst.pipe.base.Struct`
288  A structure with array of zeropoint offsets
289 
290  Raises
291  ------
292  RuntimeError:
293  Raised if any one of the following is true:
294 
295  - butler cannot find "fgcmBuildStars_config" or
296  "fgcmBuildStarsTable_config".
297  - butler cannot find "fgcmFitCycle_config".
298  - "fgcmFitCycle_config" does not refer to
299  `self.config.cycleNumber`.
300  - butler cannot find "fgcmAtmosphereParameters" and
301  `self.config.doAtmosphereOutput` is `True`.
302  - butler cannot find "fgcmStandardStars" and
303  `self.config.doReferenceCalibration` is `True` or
304  `self.config.doRefcatOutput` is `True`.
305  - butler cannot find "fgcmZeropoints" and
306  `self.config.doZeropointOutput` is `True`.
307  """
308 
309  # Check to make sure that the fgcmBuildStars config exists, to retrieve
310  # the visit and ccd dataset tags
311  if not butler.datasetExists('fgcmBuildStarsTable_config') and \
312  not butler.datasetExists('fgcmBuildStars_config'):
313  raise RuntimeError("Cannot find fgcmBuildStarsTable_config or fgcmBuildStars_config, "
314  "which is prereq for fgcmOutputProducts")
315 
316  if butler.datasetExists('fgcmBuildStarsTable_config'):
317  fgcmBuildStarsConfig = butler.get('fgcmBuildStarsTable_config')
318  else:
319  fgcmBuildStarsConfig = butler.get('fgcmBuildStars_config')
320  self.visitDataRefName = fgcmBuildStarsConfig.visitDataRefName
321  self.ccdDataRefName = fgcmBuildStarsConfig.ccdDataRefName
322  self.filterMap = fgcmBuildStarsConfig.filterMap
323 
324  if self.config.doComposeWcsJacobian and not fgcmBuildStarsConfig.doApplyWcsJacobian:
325  raise RuntimeError("Cannot compose the WCS jacobian if it hasn't been applied "
326  "in fgcmBuildStarsTask.")
327 
328  if not self.config.doComposeWcsJacobian and fgcmBuildStarsConfig.doApplyWcsJacobian:
329  self.log.warn("Jacobian was applied in build-stars but doComposeWcsJacobian is not set.")
330 
331  # Make sure that the fit config exists, to retrieve bands and other info
332  if not butler.datasetExists('fgcmFitCycle_config', fgcmcycle=self.config.cycleNumber):
333  raise RuntimeError("Cannot find fgcmFitCycle_config from cycle %d " % (self.config.cycleNumber) +
334  "which is required for fgcmOutputProducts.")
335 
336  fitCycleConfig = butler.get('fgcmFitCycle_config', fgcmcycle=self.config.cycleNumber)
337  self.configBands = fitCycleConfig.bands
338 
339  if self.config.doReferenceCalibration and fitCycleConfig.doReferenceCalibration:
340  self.log.warn("doReferenceCalibration is set, and is possibly redundant with "
341  "fitCycleConfig.doReferenceCalibration")
342 
343  # And make sure that the atmosphere was output properly
344  if (self.config.doAtmosphereOutput and
345  not butler.datasetExists('fgcmAtmosphereParameters', fgcmcycle=self.config.cycleNumber)):
346  raise RuntimeError("Atmosphere parameters are missing for cycle %d." %
347  (self.config.cycleNumber))
348 
349  if ((self.config.doReferenceCalibration or self.config.doRefcatOutput) and
350  (not butler.datasetExists('fgcmStandardStars',
351  fgcmcycle=self.config.cycleNumber))):
352  raise RuntimeError("Standard stars are missing for cycle %d." %
353  (self.config.cycleNumber))
354 
355  if (self.config.doZeropointOutput and
356  (not butler.datasetExists('fgcmZeropoints', fgcmcycle=self.config.cycleNumber))):
357  raise RuntimeError("Zeropoints are missing for cycle %d." %
358  (self.config.cycleNumber))
359 
360  # And make sure this is the last cycle
361  if butler.datasetExists('fgcmFitCycle_config', fgcmcycle=self.config.cycleNumber + 1):
362  raise RuntimeError("The task fgcmOutputProducts should only be run"
363  "on the final fit cycle products")
364 
365  if self.config.doReferenceCalibration or self.config.doRefcatOutput:
366  stdCat = butler.get('fgcmStandardStars', fgcmcycle=self.config.cycleNumber)
367  md = stdCat.getMetadata()
368  self.bands = md.getArray('BANDS')
369  else:
370  stdCat = None
371  self.bands = self.configBands
372 
373  if self.config.doReferenceCalibration:
374  offsets = self._computeReferenceOffsets(butler, stdCat)
375  else:
376  offsets = np.zeros(len(self.bands))
377 
378  # Output the standard stars in stack format
379  if self.config.doRefcatOutput:
380  self._outputStandardStars(butler, stdCat, offsets, self.config.datasetConfig)
381 
382  del stdCat
383 
384  # Output the gray zeropoints
385  if self.config.doZeropointOutput:
386  zptCat = butler.get('fgcmZeropoints', fgcmcycle=self.config.cycleNumber)
387  visitCat = butler.get('fgcmVisitCatalog')
388 
389  self._outputZeropoints(butler, zptCat, visitCat, offsets)
390 
391  # Output the atmospheres
392  if self.config.doAtmosphereOutput:
393  atmCat = butler.get('fgcmAtmosphereParameters', fgcmcycle=self.config.cycleNumber)
394  self._outputAtmospheres(butler, atmCat)
395 
396  # We return the zp offsets
397  return pipeBase.Struct(offsets=offsets)
398 

Member Data Documentation

◆ bands

lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.bands

Definition at line 368 of file fgcmOutputProducts.py.

◆ ccdDataRefName

lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.ccdDataRefName

Definition at line 321 of file fgcmOutputProducts.py.

◆ configBands

lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.configBands

Definition at line 337 of file fgcmOutputProducts.py.

◆ ConfigClass

lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.ConfigClass = FgcmOutputProductsConfig
static

Definition at line 247 of file fgcmOutputProducts.py.

◆ filterMap

lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.filterMap

Definition at line 322 of file fgcmOutputProducts.py.

◆ indexer

lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.indexer

Definition at line 267 of file fgcmOutputProducts.py.

◆ RunnerClass

lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.RunnerClass = FgcmOutputProductsRunner
static

Definition at line 248 of file fgcmOutputProducts.py.

◆ visitDataRefName

lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask.visitDataRefName

Definition at line 320 of file fgcmOutputProducts.py.


The documentation for this class was generated from the following file:
lsst::log.log.logContinued.warn
def warn(fmt, *args)
Definition: logContinued.py:205