|
LSST Applications g00d0e8bbd7+8c5ae1fdc5,g013ef56533+603670b062,g083dd6704c+2e189452a7,g199a45376c+0ba108daf9,g1c5cce2383+bc9f6103a4,g1fd858c14a+cd69ed4fc1,g210f2d0738+c4742f2e9e,g262e1987ae+612fa42d85,g29ae962dfc+83d129e820,g2cef7863aa+aef1011c0b,g35bb328faa+8c5ae1fdc5,g3fd5ace14f+5eaa884f2a,g47891489e3+e32160a944,g53246c7159+8c5ae1fdc5,g5b326b94bb+dcc56af22d,g64539dfbff+c4742f2e9e,g67b6fd64d1+e32160a944,g74acd417e5+c122e1277d,g786e29fd12+668abc6043,g87389fa792+8856018cbb,g88cb488625+47d24e4084,g89139ef638+e32160a944,g8d7436a09f+d14b4ff40a,g8ea07a8fe4+b212507b11,g90f42f885a+e1755607f3,g97be763408+34be90ab8c,g98df359435+ec1fa61bf1,ga2180abaac+8c5ae1fdc5,ga9e74d7ce9+43ac651df0,gbf99507273+8c5ae1fdc5,gc2a301910b+c4742f2e9e,gca7fc764a6+e32160a944,gd7ef33dd92+e32160a944,gdab6d2f7ff+c122e1277d,gdb1e2cdc75+1b18322db8,ge410e46f29+e32160a944,ge41e95a9f2+c4742f2e9e,geaed405ab2+0d91c11c6d,w.2025.44
LSST Data Management Base Package
|
Classes | |
| class | docstring |
| class | ProcessCcdWithFakesConnections |
Variables | |
| exposure : `lsst.afw.image.exposure.exposure.ExposureF` | |
| skyMap : `lsst.skymap.SkyMap` | |
| wcs : `lsst.afw.geom.SkyWcs`, optional | |
| photoCalib : `lsst.afw.image.photoCalib.PhotoCalib`, optional | |
| icSourceCat : `lsst.afw.table.SourceCatalog`, optional | |
| sfdSourceCat : `lsst.afw.table.SourceCatalog`, optional | |
| externalSkyWcsGlobalCatalog | |
| externalSkyWcsTractCatalog : `lsst.afw.table.ExposureCatalog`, optional | |
| externalPhotoCalibGlobalCatalog | |
| externalPhotoCalibTractCatalog | |
| idGenerator : `lsst.meas.base.IdGenerator`, optional | |
| resultStruct : `lsst.pipe.base.struct.Struct` | |
| radius | |
| fakeCats : `list` of `lsst.daf.butler.DeferredDatasetHandle` | |
| combinedFakeCat : `pandas.DataFrame` | |
| fakeCat : `pandas.core.frame.DataFrame` | |
| movingFakeCat : `pandas.DataFrame` | |
| calibCat : `lsst.afw.table.SourceCatalog` | |
| sourceCat : `lsst.afw.table.SourceCatalog` | |
| fieldsToCopy : `lsst.pex.config.listField.List` | |
| newCat : `lsst.afw.table.SourceCatalog` | |
| band : `str` | |
| rngSeed : `int` | |
| dataFrame : `pandas.DataFrame` | |
Insert fake sources into calexps
| lsst.pipe.tasks.processCcdWithFakes.band : `str` |
Definition at line 777 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.calibCat : `lsst.afw.table.SourceCatalog` |
selected = exposure.getInfo().getVisitInfo().getId() == fakeCat["visit"] return fakeCat[selected] def copyCalibrationFields(self, calibCat, sourceCat, fieldsToCopy):
Definition at line 550 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.combinedFakeCat : `pandas.DataFrame` |
Definition at line 507 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.dataFrame : `pandas.DataFrame` |
Definition at line 788 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.exposure : `lsst.afw.image.exposure.exposure.ExposureF` |
Definition at line 418 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.externalPhotoCalibGlobalCatalog |
Definition at line 437 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.externalPhotoCalibTractCatalog |
Definition at line 440 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.externalSkyWcsGlobalCatalog |
Definition at line 432 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.externalSkyWcsTractCatalog : `lsst.afw.table.ExposureCatalog`, optional |
Definition at line 435 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.fakeCat : `pandas.core.frame.DataFrame` |
if len(fakeCats) == 1:
return fakeCats[0].get()
outputCat = []
for fakeCatRef in fakeCats:
cat = fakeCatRef.get()
tractId = fakeCatRef.dataId["tract"]
# Make sure all data is within the inner part of the tract.
outputCat.append(cat[
skyMap.findTractIdArray(cat[self.config.insertFakes.ra_col],
cat[self.config.insertFakes.dec_col],
degrees=False)
== tractId])
return pd.concat(outputCat)
def getVisitMatchedFakeCat(self, fakeCat, exposure):
# Make a new SourceCatalog with the data from sourceCat so that we can add the new columns to it
sourceSchemaMapper = afwTable.SchemaMapper(sourceCat.schema)
sourceSchemaMapper.addMinimalSchema(sourceCat.schema, True)
calibSchemaMapper = afwTable.SchemaMapper(calibCat.schema, sourceCat.schema)
# Add the desired columns from the option fieldsToCopy
missingFieldNames = []
for fieldName in fieldsToCopy:
if fieldName in calibCat.schema:
schemaItem = calibCat.schema.find(fieldName)
calibSchemaMapper.editOutputSchema().addField(schemaItem.getField())
schema = calibSchemaMapper.editOutputSchema()
calibSchemaMapper.addMapping(schemaItem.getKey(), schema.find(fieldName).getField())
else:
missingFieldNames.append(fieldName)
if missingFieldNames:
raise RuntimeError(f"calibCat is missing fields {missingFieldNames} specified in "
"fieldsToCopy")
if "calib_detected" not in calibSchemaMapper.getOutputSchema():
self.calibSourceKey = calibSchemaMapper.addOutputField(afwTable.Field["Flag"]("calib_detected",
"Source was detected as an icSource"))
else:
self.calibSourceKey = None
schema = calibSchemaMapper.getOutputSchema()
newCat = afwTable.SourceCatalog(schema)
newCat.reserve(len(sourceCat))
newCat.extend(sourceCat, sourceSchemaMapper)
# Set the aliases so it doesn't complain.
for k, v in sourceCat.schema.getAliasMap().items():
newCat.schema.getAliasMap().set(k, v)
select = newCat["deblend_nChild"] == 0
matches = afwTable.matchXy(newCat[select], calibCat, self.config.matchRadiusPix)
# Check that no sourceCat sources are listed twice (we already know
# that each match has a unique calibCat source ID, due to using
# that ID as the key in bestMatches)
numMatches = len(matches)
numUniqueSources = len(set(m[1].getId() for m in matches))
if numUniqueSources != numMatches:
self.log.warning("%d calibCat sources matched only %d sourceCat sources", numMatches,
numUniqueSources)
self.log.info("Copying flags from calibCat to sourceCat for %s sources", numMatches)
# For each match: set the calibSourceKey flag and copy the desired
# fields
for src, calibSrc, d in matches:
if self.calibSourceKey:
src.setFlag(self.calibSourceKey, True)
# src.assign copies the footprint from calibSrc, which we don't want
# (DM-407)
# so set calibSrc's footprint to src's footprint before src.assign,
# then restore it
calibSrcFootprint = calibSrc.getFootprint()
try:
calibSrc.setFootprint(src.getFootprint())
src.assign(calibSrc, calibSchemaMapper)
finally:
calibSrc.setFootprint(calibSrcFootprint)
return newCat
class ProcessCcdWithVariableFakesConnections(ProcessCcdWithFakesConnections):
ccdVisitFakeMagnitudes = cT.Output(
doc="Catalog of fakes with magnitudes scattered for this ccdVisit.",
name="{fakesType}ccdVisitFakeMagnitudes",
storageClass="DataFrame",
dimensions=("instrument", "visit", "detector"),
)
@deprecated(
reason="This task will be removed in v28.0 as it is replaced by `source_injection` tasks.",
version="v28.0",
category=FutureWarning,
)
class ProcessCcdWithVariableFakesConfig(ProcessCcdWithFakesConfig,
pipelineConnections=ProcessCcdWithVariableFakesConnections):
scatterSize = pexConfig.RangeField(
dtype=float,
default=0.4,
min=0,
max=100,
doc="Amount of scatter to add to the visit magnitude for variable "
"sources."
)
@deprecated(
reason="This task will be removed in v28.0 as it is replaced by `source_injection` tasks.",
version="v28.0",
category=FutureWarning,
)
class ProcessCcdWithVariableFakesTask(ProcessCcdWithFakesTask):
_DefaultName = "processCcdWithVariableFakes"
ConfigClass = ProcessCcdWithVariableFakesConfig
def run(self, fakeCats, exposure, skyMap, wcs=None, photoCalib=None,
icSourceCat=None, sfdSourceCat=None, idGenerator=None):
fakeCat = self.composeFakeCat(fakeCats, skyMap)
if wcs is None:
wcs = exposure.getWcs()
if photoCalib is None:
photoCalib = exposure.getPhotoCalib()
if idGenerator is None:
idGenerator = IdGenerator()
band = exposure.getFilter().bandLabel
ccdVisitMagnitudes = self.addVariability(
fakeCat,
band,
exposure,
photoCalib,
idGenerator.catalog_id,
)
self.insertFakes.run(fakeCat, exposure, wcs, photoCalib)
# detect, deblend and measure sources
returnedStruct = self.calibrate.run(exposure, idGenerator=idGenerator)
sourceCat = returnedStruct.sourceCat
sourceCat = self.copyCalibrationFields(sfdSourceCat, sourceCat, self.config.srcFieldsToCopy)
resultStruct = pipeBase.Struct(outputExposure=exposure,
outputCat=sourceCat,
ccdVisitFakeMagnitudes=ccdVisitMagnitudes)
return resultStruct
def addVariability(self, fakeCat, band, exposure, photoCalib, rngSeed):
Definition at line 531 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.fakeCats : `list` of `lsst.daf.butler.DeferredDatasetHandle` |
fakeCat = self.composeFakeCat(fakeCats, skyMap)
if wcs is None:
wcs = exposure.getWcs()
if photoCalib is None:
photoCalib = exposure.getPhotoCalib()
if self.config.doMatchVisit:
fakeCat = self.getVisitMatchedFakeCat(fakeCat, exposure)
self.insertFakes.run(fakeCat, exposure, wcs, photoCalib)
# detect, deblend and measure sources
if idGenerator is None:
idGenerator = IdGenerator()
returnedStruct = self.calibrate.run(exposure, idGenerator=idGenerator)
sourceCat = returnedStruct.sourceCat
sourceCat = self.copyCalibrationFields(sfdSourceCat, sourceCat, self.config.srcFieldsToCopy)
resultStruct = pipeBase.Struct(outputExposure=exposure, outputCat=sourceCat)
return resultStruct
def composeFakeCat(self, fakeCats, skyMap):
Definition at line 500 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.fieldsToCopy : `lsst.pex.config.listField.List` |
Definition at line 554 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.icSourceCat : `lsst.afw.table.SourceCatalog`, optional |
Definition at line 426 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.idGenerator : `lsst.meas.base.IdGenerator`, optional |
Definition at line 443 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.movingFakeCat : `pandas.DataFrame` |
Definition at line 538 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.newCat : `lsst.afw.table.SourceCatalog` |
Definition at line 559 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.photoCalib : `lsst.afw.image.photoCalib.PhotoCalib`, optional |
Definition at line 424 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.radius |
Definition at line 457 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.resultStruct : `lsst.pipe.base.struct.Struct` |
Definition at line 448 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.rngSeed : `int` |
Definition at line 783 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.sfdSourceCat : `lsst.afw.table.SourceCatalog`, optional |
Definition at line 429 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.skyMap : `lsst.skymap.SkyMap` |
Definition at line 420 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.sourceCat : `lsst.afw.table.SourceCatalog` |
Definition at line 552 of file processCcdWithFakes.py.
| lsst.pipe.tasks.processCcdWithFakes.wcs : `lsst.afw.geom.SkyWcs`, optional |
Definition at line 422 of file processCcdWithFakes.py.