Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DM-43347: Add a Fast Summit Support and a Slower Validation Pipelines to be run on Rapid Analysis #114

Merged
merged 1 commit into from
Mar 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 2 additions & 41 deletions pipelines/LSSTComCamSim/DRP-ops-rehearsal-3.yaml
Original file line number Diff line number Diff line change
@@ -1,48 +1,8 @@
description: DRP Pipeline for Simulated ComCam Ops Rehearsal 3
instrument: lsst.obs.lsst.LsstComCamSim
imports:
- $DRP_PIPE_DIR/pipelines/_ingredients/DRP-full.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/coaddColumnValidate.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/coaddQualityCore.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/coaddQualityExtended.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/diaTractQualityCore.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/matchedVisitQualityCore.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/visitQualityCore.yaml
tasks:
fgcmFitCycle:
class: lsst.fgcmcal.fgcmFitCycle.FgcmFitCycleTask
config:
doMultipleCycles: true
multipleCyclesFinalCycleNumber: 4
- $DRP_PIPE_DIR/pipelines/_ingredients/LSSTComCamSim/DRP.yaml

fgcmOutputProducts:
class: lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask
config:
connections.cycleNumber: 4

selectGoodSeeingVisits:
class: lsst.pipe.tasks.selectImages.BestSeeingQuantileSelectVisitsTask
config:
connections.goodVisits: goodSeeingVisits
nVisitsMin: 12
# For simulation 2 there are 60 visits per region
# between 60399.362 and 60402.419.
minMJD: 60399.362
maxMJD: 60402.419
updateVisitSummary:
class: lsst.drp.tasks.update_visit_summary.UpdateVisitSummaryTask
config:
# TODO: Evaluate GBDES, SkyCorr, FGCM after initial DRP
wcs_provider: "tract"
photo_calib_provider: "global"
background_provider: "input_summary"
analyzeObjectTableCore:
class: lsst.analysis.tools.tasks.ObjectTableTractAnalysisTask
config:
python: |
# no z-band in comCamSim
del config.atools.yPerpPSF
del config.atools.yPerpCModel
subsets:
step1:
subset:
Expand All @@ -60,6 +20,7 @@ subsets:
select partial visits that overlap that region.
step2a:
subset:
- analyzeMatchedPreVisitCore
- consolidatePreSourceTable
- consolidateVisitSummary
description: |
Expand Down
84 changes: 84 additions & 0 deletions pipelines/LSSTComCamSim/nightly-validation-ops-rehearsal-3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
description: |
DRP-flavored pipeline to support validation
during commissioning, and will help inform
what changes to make the following night. Detector and Visit
level tasks can be run in real time by e.g. Rapid Analysis.
The rest of the pipeline is expected to be run as part of the
10am processing.
instrument: lsst.obs.lsst.LsstComCamSim
imports:
- $DRP_PIPE_DIR/pipelines/LSSTComCamSim/DRP-ops-rehearsal-3.yaml
tasks:
analyzePreSourceTableCore:
class: lsst.analysis.tools.tasks.SourceTableVisitAnalysisTask
config:
connections.data: preSourceTable_visit
connections.inputName: preSourceTable_visit
connections.outputName: preSourceTableCore
subsets:
# These 3 steps can be run in real time by Rapid Analysis Framework at USDF
step1:
subset:
- isr
- characterizeImage
- calibrate
- writePreSourceTable
- transformPreSourceTable
description: |
Detector level tasks. TO DO: requests include synthetic source injection,
subtractImages, detectAndMeasureDiaSources.
step2a:
subset:
- consolidatePreSourceTable
- consolidateVisitSummary
- analyzePreSourceTableCore
- catalogMatchPreVisit
- astrometricRefCatPreSourceVisit
# TO DO: Add photometricMatchPreVisit, photometricRefCatPreSourceVisit
description: Visit-level tasks
nightlyRollup:
subset:
- makePreliminaryCcdVisitTable
- makePreliminaryVisitTable
- preliminaryVisitCoverageAnalysis
description: |
Global tasks that can be run at end of night or multiple times during
the night, to get a summary of observations taken.
# The following N steps should be run once at the end of the night
# Steps 2b,2c,2d,2e,4,5,6,7 are currently the same as DRP.
# This step3 here does not make templates. To run step4,step5,step6 you must
# provide a collection with templates as input, ideally the same one that
# was used for prompt processing.
# A complete pipeline without DIA is #step2b,step2c,step2d,step2e,step3,step7
step3:
subset:
- makeWarp
- selectDeepCoaddVisits
- assembleCoadd
- detection
- mergeDetections
- deblend
- measure
- mergeMeasurements
- forcedPhotCoadd
- transformObjectTable
- writeObjectTable
- consolidateObjectTable
- healSparsePropertyMaps
# analysis_tools tasks
- analyzeMatchedVisitCore
- analyzeObjectTableCore
- analyzeObjectTableExtended
- catalogMatchTract
- photometricCatalogMatch
- photometricRefCatObjectTract
- plotPropertyMapTract
- refCatObjectTract
- validateObjectTableCore
description: |
This overrides the default DRP pipeline by not making nightly templates.
We may want to make daily templates in the future.

Patch and Tract-level tasks that make coadds and object tables that
can be run together, but only after the 'step1' and 'step2d'
subsets.
70 changes: 70 additions & 0 deletions pipelines/LSSTComCamSim/quickLook-ops-rehearsal-3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
description: |
A fast pipeline to be run on the rapid analysis framework at
the summit which feeds RubinTV for realtime observer feedback
instrument: lsst.obs.lsst.LsstComCamSim
imports:
- $DRP_PIPE_DIR/pipelines/_ingredients/LSSTComCamSim/DRP.yaml
tasks:
isr:
class: lsst.ip.isr.IsrTask
config:
# Turn off slow steps in ISR
doBrighterFatter: false
# TO DO: Replace with calibrateImage in a way that we can use the
# preSources downstream.
characterizeImage:
class: lsst.pipe.tasks.characterizeImage.CharacterizeImageTask
config:
doApCorr: false
doDeblend: false
doMaskStreaks: false
calibrate:
class: lsst.pipe.tasks.calibrate.CalibrateTask
config:
python: |
config.measurement.plugins.names = ['base_CircularApertureFlux',
'base_PsfFlux',
'base_NaiveCentroid',
'base_CompensatedGaussianFlux',
'base_LocalBackground',
'base_SdssCentroid',
'base_SdssShape',
'base_Variance',
'base_Jacobian',
'base_PixelFlags',
'base_GaussianFlux',
'base_SkyCoord',
'base_FPPosition',
'base_ClassificationSizeExtendedness',
]
config.measurement.slots.shape = "base_SdssShape"
config.measurement.slots.psfShape = "base_SdssShape_psf"
config.measurement.plugins['base_PixelFlags'].masksFpAnywhere.remove('STREAK')
config.measurement.plugins['base_PixelFlags'].masksFpCenter.remove('STREAK')
config.doApCorr = False
config.doDeblend = False
config.astrometry.sourceSelector["science"].doRequirePrimary = False
config.astrometry.sourceSelector["science"].doIsolated = False
# TO DO: DM-41189 Get pipeline that will attach an atool here from lauren
subsets:
step1:
subset:
- isr
- characterizeImage
- calibrate
# TO DO: configure and add writePreSourceTable, transformPreSourceTable
description: |
Per-detector tasks that can be run together
step2a:
subset:
- consolidateVisitSummary
# TO DO: configure and add consolidatePreSourceTable
nightlyRollup:
# can be run at end of night or on a timer
# Need to either clobber OR use a chained collection of timestamped runs
subset:
- makePreliminaryCcdVisitTable
- makePreliminaryVisitTable
- preliminaryVisitCoverageAnalysis
description: |
Global-level tasks
10 changes: 10 additions & 0 deletions pipelines/_ingredients/DRP-full.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,16 @@ tasks:
class: lsst.pipe.tasks.multiBand.MeasureMergedCoaddSourcesTask
config:
connections.sourceTableHandles: preSourceTable_visit
makePreliminaryCcdVisitTable:
class: lsst.pipe.tasks.postprocess.MakeCcdVisitTableTask
config:
connections.visitSummaryRefs: visitSummary
connections.outputCatalog: preCcdVisitTable
makePreliminaryVisitTable:
class: lsst.pipe.tasks.postprocess.MakeVisitTableTask
config:
connections.visitSummaries: visitSummary
connections.outputCatalog: preVisitTable
subsets:
# This pipeline file only defines subsets that have a consistent or
# near-consistent definition as a set of tasks, for use by downstream
Expand Down
116 changes: 116 additions & 0 deletions pipelines/_ingredients/LSSTComCamSim/DRP.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
description: DRP Pipeline for Simulated ComCam Ops Rehearsal 3
instrument: lsst.obs.lsst.LsstComCamSim
imports:
- $DRP_PIPE_DIR/pipelines/_ingredients/DRP-full.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/coaddColumnValidate.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/coaddQualityCore.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/coaddQualityExtended.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/diaTractQualityCore.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/matchedVisitQualityCore.yaml
- $ANALYSIS_TOOLS_DIR/pipelines/visitQualityCore.yaml
tasks:
fgcmFitCycle:
class: lsst.fgcmcal.fgcmFitCycle.FgcmFitCycleTask
config:
doMultipleCycles: true
multipleCyclesFinalCycleNumber: 4
fgcmOutputProducts:
class: lsst.fgcmcal.fgcmOutputProducts.FgcmOutputProductsTask
config:
connections.cycleNumber: 4
selectGoodSeeingVisits:
class: lsst.pipe.tasks.selectImages.BestSeeingQuantileSelectVisitsTask
config:
connections.goodVisits: goodSeeingVisits
nVisitsMin: 12
# For simulation 2 there are 60 visits per region
# between 60399.362 and 60402.419.
minMJD: 60399.362
maxMJD: 60402.419
updateVisitSummary:
class: lsst.drp.tasks.update_visit_summary.UpdateVisitSummaryTask
config:
# TODO: Evaluate GBDES, SkyCorr, FGCM after initial DRP
wcs_provider: "tract"
photo_calib_provider: "global"
background_provider: "input_summary"
analyzeMatchedPreVisitCore:
class: lsst.analysis.tools.tasks.AssociatedSourcesTractAnalysisTask
config:
connections.sourceCatalogs: preSourceTable_visit
connections.outputName: matchedPreVisitCore
# The rest should be the same as configs in matchedVisitQualityCore.yaml
atools.stellarPhotometricRepeatability: StellarPhotometricRepeatability
atools.stellarPhotometricResiduals: StellarPhotometricResidualsFocalPlane
atools.stellarAstrometricResidualsRA: StellarAstrometricResidualsRAFocalPlanePlot
atools.stellarAstrometricResidualsDec: StellarAstrometricResidualsDecFocalPlanePlot
atools.stellarAstrometricResidualStdDevRA: StellarAstrometricResidualStdDevRAFocalPlanePlot
atools.stellarAstrometricResidualStdDevDec: StellarAstrometricResidualStdDevDecFocalPlanePlot
atools.stellarAstrometricRepeatability1: AstrometricRelativeRepeatability
atools.stellarAstrometricRepeatability1.xValue: 1
atools.stellarAstrometricRepeatability1.process.calculateActions.rms.annulus: 5
atools.stellarAstrometricRepeatability2: AstrometricRelativeRepeatability
atools.stellarAstrometricRepeatability2.xValue: 2
atools.stellarAstrometricRepeatability2.process.calculateActions.rms.annulus: 20
atools.stellarAstrometricRepeatability3: AstrometricRelativeRepeatability
atools.stellarAstrometricRepeatability3.xValue: 3
atools.stellarAstrometricRepeatability3.process.calculateActions.rms.annulus: 200
atools.stellarAstrometricRepeatability3.process.calculateActions.rms.threshAD: 30
python: |
from lsst.analysis.tools.atools import *
analyzeObjectTableCore:
class: lsst.analysis.tools.tasks.ObjectTableTractAnalysisTask
config:
python: |
# no z-band in comCamSim
del config.atools.yPerpPSF
del config.atools.yPerpCModel
analyzePreSourceTableCore:
class: lsst.analysis.tools.tasks.SourceTableVisitAnalysisTask
config:
connections.outputName: preSourceTableCore
atools.skyFluxVisitStatisticMetric: SkyFluxStatisticMetric
atools.skyFluxVisitStatisticMetric.applyContext: VisitContext
atools.skySourceSky: SkySourceSkyPlot
atools.skySourceFlux: SkySourceHistPlot
python: |
from lsst.analysis.tools.atools import *
from lsst.analysis.tools.contexts import *
catalogMatchPreVisit:
class: lsst.analysis.tools.tasks.astrometricCatalogMatch.AstrometricCatalogMatchVisitTask
config:
connections.catalog: "preSourceTable_visit"
connections.targetCatalog: "preSourceTable_visit"
astrometricRefCatPreSourceVisit:
class: lsst.analysis.tools.tasks.refCatSourceAnalysis.RefCatSourceAnalysisTask
config:
# Only run metrics for analyzing the preSources:
connections.data: preSourceTable_visit_uw_stars_20240228_match
atools.astromDiffMetrics: TargetRefCatDeltaMetrics
atools.astromDiffMetrics.applyContext: VisitContext
python: |
from lsst.analysis.tools.atools import *
from lsst.analysis.tools.contexts import *
# These don't actually work now:
photometricMatchPreVisit:
class: lsst.analysis.tools.tasks.photometricCatalogMatch.PhotometricCatalogMatchVisitTask
config:
extraColumns: ["x", "y", "ap09Flux", "ap09FluxErr"]
connections.refCatalog: uw_stars_20240228
connections.catalog: preSourceTable_visit
connections.targetCatalog: preSourceTable_visit
connections.matchedCatalog: preSourceTable_visit_uw_stars_20240228_photoMatch
photometricRefCatPreSourceVisit:
class: lsst.analysis.tools.tasks.refCatSourcePhotometricAnalysis.RefCatSourcePhotometricAnalysisTask
config:
# Only run metrics for analyzing the preSources:
connections.data: preSourceTable_visit_uw_stars_20240228_photoMatch
python: from lsst.analysis.tools.atools import *
preliminaryVisitCoverageAnalysis:
class: lsst.analysis.tools.tasks.CcdVisitTableAnalysisTask
config:
connections.data: preCcdVisitTable
atools.raDecCoveragePlot: RaDecMultiVisitCoveragePlot
atools.raDecCoveragePlot.produce.plot.showExtremeOutliers: false
atools.focalPlaneCoveragePlot: FocalPlaneMultiVisitCoveragePlot
python: from lsst.analysis.tools.atools import *
Loading