class DeblendCoaddSourcesMultiConfig(DeblendCoaddSourcesBaseConfig):
    multibandDeblend = ConfigurableField(
        target=MultibandDeblendTask,
        doc="Task to deblend an images in multiple bands"
    )
    coadds = InputDatasetField(
        doc="Exposure on which to run deblending",
        nameTemplate="{inputCoaddName}Coadd_calexp",
        storageClass="ExposureF",
        dimensions=("tract", "patch", "abstract_filter", "skymap")
    )
    outputSchema = InitOutputDatasetField(
        doc="Output of the schema used in deblending task",
        nameTemplate="{outputCoaddName}Coadd_deblendedModel_schema",
        storageClass="SourceCatalog"
    )
    fluxCatalogs = OutputDatasetField(
        doc="Flux catalogs produced by multiband deblending, not written "
            "if conserve flux is turned off",
        nameTemplate="{outputCoaddName}Coadd_deblendedFlux",
        storageClass="SourceCatalog",
        dimensions=("tract", "patch", "abstract_filter", "skymap")
    )
    templateCatalogs = OutputDatasetField(
        doc="Template catalogs produced by multiband deblending",
        nameTemplate="{outputCoaddName}Coadd_deblendedModel",
        storageClass="SourceCatalog",
        dimensions=("tract", "patch", "abstract_filter", "skymap")
    )

    def setDefaults(self):
        super().setDefaults()
        self.quantum.dimensions = ("tract", "patch", "skymap")
Exemple #2
0
class PatchSkyMapTaskConfig(PipelineTaskConfig):
    coadd = InputDatasetField(
        name="deepCoadd_calexp",
        dimensions=["SkyMap", "Tract", "Patch", "AbstractFilter"],
        storageClass="ExposureF",
        scalar=True,
        doc="DatasetType for the input image")
    inputCatalog = InputDatasetField(
        name="deepCoadd_mergeDet",
        dimensions=["SkyMap", "Tract", "Patch"],
        storageClass="SourceCatalog",
        scalar=True,
        doc="DatasetType for the input catalog (merged detections).")
    outputCatalog = OutputDatasetField(
        name="deepCoadd_meas",
        dimensions=["SkyMap", "Tract", "Patch", "AbstractFilter"],
        storageClass="SourceCatalog",
        scalar=True,
        doc=("DatasetType for the output catalog "
             "(deblended per-band measurements)"))

    def setDefaults(self):
        # set dimensions of a quantum, this task uses per-tract-patch-filter quanta
        self.quantum.dimensions = [
            "SkyMap", "Tract", "Patch", "AbstractFilter"
        ]
Exemple #3
0
class ExamplePipelineTaskConfig(PipelineTaskConfig):
    input1 = InputDatasetField(name="",
                               dimensions=[],
                               storageClass="example",
                               doc="Input for this task")
    input2 = InputDatasetField(name="",
                               dimensions=[],
                               storageClass="example",
                               doc="Input for this task")
    output1 = OutputDatasetField(name="",
                                 dimensions=[],
                                 storageClass="example",
                                 doc="Output for this task")
    output2 = OutputDatasetField(name="",
                                 dimensions=[],
                                 storageClass="example",
                                 doc="Output for this task")
Exemple #4
0
class DummyPipelineTaskConfig(PipelineTaskConfig):
    input = InputDatasetField(name="raw",
                              units=["Camera", "Exposure", "Sensor"],
                              storageClass="DecoratedImageU",
                              scalar=True,
                              doc="Input dataset type")
    output = OutputDatasetField(name="modified_raw",
                                units=["Camera", "Exposure", "Sensor"],
                                storageClass="DecoratedImageU",
                                scalar=True,
                                doc="Output dataset type")

    def setDefaults(self):
        self.quantum.units = ["Camera", "Exposure", "Sensor"]
class RawToCalexpTaskConfig(PipelineTaskConfig):
    input = InputDatasetField(name="raw",
                              dimensions=["Instrument", "Exposure", "Detector"],
                              storageClass="ExposureU",
                              doc="Input dataset type for this task")
    output = OutputDatasetField(name="calexp",
                                dimensions=["Instrument", "Visit", "Detector"],
                                storageClass="ExposureF",
                                scalar=True,
                                doc="Output dataset type for this task")

    def setDefaults(self):
        # set dimensions of a quantum, this task uses per-visit-detector quanta
        self.quantum.dimensions = ["Instrument", "Visit", "Detector"]
class Test2Config(PipelineTaskConfig):
    input = InputDatasetField(name="input",
                              dimensions=["Instrument", "Visit"],
                              storageClass="example",
                              doc="Input dataset type for this task")
    output = OutputDatasetField(name="output",
                                dimensions=["Tract", "Patch"],
                                storageClass="example",
                                scalar=True,
                                doc="Output dataset type for this task")

    def setDefaults(self):
        # this task combines all selected visits into a tract/patch, on
        # input it expects per-visit data, on output it produces per-patch.
        # Combining visits "destroys" Visit dimension in a quantum.
        self.quantum.dimensions = ["Instrument", "Tract", "Patch"]
class Test1Config(PipelineTaskConfig):
    input = InputDatasetField(name="input",
                              dimensions=["Instrument", "Visit"],
                              storageClass="example",
                              scalar=True,
                              doc="Input dataset type for this task")
    output = OutputDatasetField(name="output",
                                dimensions=["Instrument", "Visit"],
                                storageClass="example",
                                scalar=True,
                                doc="Output dataset type for this task")

    def setDefaults(self):
        # set dimensions of a quantum, this task uses per-visit quanta and it
        # expects datset dimensions to be the same
        self.quantum.dimensions = ["Instrument", "Visit"]
Exemple #8
0
class CalexpToCoaddTaskConfig(PipelineTaskConfig):
    calexp = InputDatasetField(name="calexp",
                               dimensions=["Instrument", "Visit", "Detector"],
                               storageClass="ExposureF",
                               doc="DatasetType for the input image")
    coadd = OutputDatasetField(
        name="deepCoadd_calexp",
        dimensions=["SkyMap", "Tract", "Patch", "AbstractFilter"],
        storageClass="ExposureF",
        scalar=True,
        doc="DatasetType for the output image")

    def setDefaults(self):
        # set dimensions of a quantum, this task uses per-tract-patch-filter quanta
        self.quantum.dimensions = [
            "SkyMap", "Tract", "Patch", "AbstractFilter"
        ]
class DeblendCoaddSourcesSingleConfig(DeblendCoaddSourcesBaseConfig):
    singleBandDeblend = ConfigurableField(
        target=SourceDeblendTask,
        doc="Task to deblend an image in one band"
    )
    coadd = InputDatasetField(
        doc="Exposure on which to run deblending",
        nameTemplate="{inputCoaddName}Coadd_calexp",
        storageClass="ExposureF",
        scalar=True,
        dimensions=("tract", "patch", "abstract_filter", "skymap")
    )
    measureCatalog = OutputDatasetField(
        doc="The output measurement catalog of deblended sources",
        nameTemplate="{outputCoaddName}Coadd_deblendedFlux",
        scalar=True,
        storageClass="SourceCatalog",
        dimensions=("tract", "patch", "abstract_filter", "skymap")
    )
    outputSchema = InitOutputDatasetField(
        doc="Output of the schema used in deblending task",
        nameTemplate="{outputCoaddName}Coadd_deblendedFlux_schema",
        storageClass="SourceCatalog"
    )
class CalibrateConfig(PipelineTaskConfig):
    """Config for CalibrateTask"""
    doWrite = pexConfig.Field(
        dtype=bool,
        default=True,
        doc="Save calibration results?",
    )
    doWriteHeavyFootprintsInSources = pexConfig.Field(
        dtype=bool,
        default=True,
        doc="Include HeavyFootprint data in source table? If false then heavy "
            "footprints are saved as normal footprints, which saves some space"
    )
    doWriteMatches = pexConfig.Field(
        dtype=bool,
        default=True,
        doc="Write reference matches (ignored if doWrite false)?",
    )
    doWriteMatchesDenormalized = pexConfig.Field(
        dtype=bool,
        default=False,
        doc=("Write reference matches in denormalized format? "
             "This format uses more disk space, but is more convenient to "
             "read. Ignored if doWriteMatches=False or doWrite=False."),
    )
    doAstrometry = pexConfig.Field(
        dtype=bool,
        default=True,
        doc="Perform astrometric calibration?",
    )
    astromRefObjLoader = pexConfig.ConfigurableField(
        target=LoadIndexedReferenceObjectsTask,
        doc="reference object loader for astrometric calibration",
    )
    photoRefObjLoader = pexConfig.ConfigurableField(
        target=LoadIndexedReferenceObjectsTask,
        doc="reference object loader for photometric calibration",
    )
    astrometry = pexConfig.ConfigurableField(
        target=AstrometryTask,
        doc="Perform astrometric calibration to refine the WCS",
    )
    requireAstrometry = pexConfig.Field(
        dtype=bool,
        default=True,
        doc=("Raise an exception if astrometry fails? Ignored if doAstrometry "
             "false."),
    )
    doPhotoCal = pexConfig.Field(
        dtype=bool,
        default=True,
        doc="Perform phometric calibration?",
    )
    requirePhotoCal = pexConfig.Field(
        dtype=bool,
        default=True,
        doc=("Raise an exception if photoCal fails? Ignored if doPhotoCal "
             "false."),
    )
    photoCal = pexConfig.ConfigurableField(
        target=PhotoCalTask,
        doc="Perform photometric calibration",
    )
    icSourceFieldsToCopy = pexConfig.ListField(
        dtype=str,
        default=("calib_psf_candidate", "calib_psf_used", "calib_psf_reserved"),
        doc=("Fields to copy from the icSource catalog to the output catalog "
             "for matching sources Any missing fields will trigger a "
             "RuntimeError exception. Ignored if icSourceCat is not provided.")
    )
    matchRadiusPix = pexConfig.Field(
        dtype=float,
        default=3,
        doc=("Match radius for matching icSourceCat objects to sourceCat "
             "objects (pixels)"),
    )
    checkUnitsParseStrict = pexConfig.Field(
        doc=("Strictness of Astropy unit compatibility check, can be 'raise', "
             "'warn' or 'silent'"),
        dtype=str,
        default="raise",
    )
    detection = pexConfig.ConfigurableField(
        target=SourceDetectionTask,
        doc="Detect sources"
    )
    doDeblend = pexConfig.Field(
        dtype=bool,
        default=True,
        doc="Run deblender input exposure"
    )
    deblend = pexConfig.ConfigurableField(
        target=SourceDeblendTask,
        doc="Split blended sources into their components"
    )
    measurement = pexConfig.ConfigurableField(
        target=SingleFrameMeasurementTask,
        doc="Measure sources"
    )
    doApCorr = pexConfig.Field(
        dtype=bool,
        default=True,
        doc="Run subtask to apply aperture correction"
    )
    applyApCorr = pexConfig.ConfigurableField(
        target=ApplyApCorrTask,
        doc="Subtask to apply aperture corrections"
    )
    # If doApCorr is False, and the exposure does not have apcorrections
    # already applied, the active plugins in catalogCalculation almost
    # certainly should not contain the characterization plugin
    catalogCalculation = pexConfig.ConfigurableField(
        target=CatalogCalculationTask,
        doc="Subtask to run catalogCalculation plugins on catalog"
    )
    doInsertFakes = pexConfig.Field(
        dtype=bool,
        default=False,
        doc="Run fake sources injection task"
    )
    insertFakes = pexConfig.ConfigurableField(
        target=BaseFakeSourcesTask,
        doc="Injection of fake sources for testing purposes (must be "
            "retargeted)"
    )
    icSourceSchema = InitInputDatasetField(
        doc="Schema produced by characterize image task, used to initialize this task",
        name="icSrc_schema",
        storageClass="SourceCatalog",
    )
    outputSchema = InitOutputDatasetField(
        doc="Schema after CalibrateTask has been initialized",
        name="src_schema",
        storageClass="SourceCatalog",
    )
    exposure = InputDatasetField(
        doc="Input image to calibrate",
        name="icExp",
        storageClass="ExposureF",
        dimensions=("instrument", "visit", "detector"),
        scalar=True
    )
    background = InputDatasetField(
        doc="Backgrounds determined by characterize task",
        name="icExpBackground",
        storageClass="Background",
        dimensions=("instrument", "visit", "detector"),
        scalar=True
    )
    icSourceCat = InputDatasetField(
        doc="Source catalog created by characterize task",
        name="icSrc",
        storageClass="SourceCatalog",
        dimensions=("instrument", "visit", "detector"),
        scalar=True
    )
    astromRefCat = InputDatasetField(
        doc="Reference catalog to use for astrometry",
        name="ref_cat",
        storageClass="SimpleCatalog",
        dimensions=("skypix",),
        manualLoad=True
    )
    photoRefCat = InputDatasetField(
        doc="Reference catalog to use for photometric calibration",
        name="ref_cat",
        storageClass="SimpleCatalog",
        dimensions=("skypix",),
        manualLoad=True
    )
    outputExposure = OutputDatasetField(
        doc="Exposure after running calibration task",
        name="calexp",
        storageClass="ExposureF",
        dimensions=("instrument", "visit", "detector"),
        scalar=True
    )
    outputCat = OutputDatasetField(
        doc="Source catalog produced in calibrate task",
        name="src",
        storageClass="SourceCatalog",
        dimensions=("instrument", "visit", "detector"),
        scalar=True
    )
    outputBackground = OutputDatasetField(
        doc="Background models estimated in calibration task",
        name="calexpBackground",
        storageClass="Background",
        dimensions=("instrument", "visit", "detector"),
        scalar=True
    )
    matches = OutputDatasetField(
        doc="Source/refObj matches from the astrometry solver",
        name="srcMatch",
        storageClass="Catalog",
        dimensions=("instrument", "visit", "detector"),
        scalar=True
    )
    matchesDenormalized = OutputDatasetField(
        doc="Denormalized matches from astrometry solver",
        name="srcMatchFull",
        storageClass="Catalog",
        dimensions=("instrument", "visit", "detector"),
        scalar=True
    )

    doWriteExposure = pexConfig.Field(
        dtype=bool,
        default=True,
        doc="Write the calexp? If fakes have been added then we do not want to write out the calexp as a "
            "normal calexp but as a fakes_calexp."
    )

    def setDefaults(self):
        super().setDefaults()
        self.quantum.dimensions = ("instrument", "visit", "detector")