Skip to content

Commit

Permalink
Add two pipelines to be run on RA during OR3
Browse files Browse the repository at this point in the history
- A fast observer-support pipeline matching what the
  single frame runner in the summit rapid analysis
  runs now
- A commissiong validation pipeline that 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.
  • Loading branch information
yalsayyad committed Mar 20, 2024
1 parent 8df5466 commit d7a45ef
Show file tree
Hide file tree
Showing 5 changed files with 409 additions and 41 deletions.
42 changes: 1 addition & 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 Down
191 changes: 191 additions & 0 deletions pipelines/LSSTComCamSim/nightly-validation-ops-rehearsal-3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
description: |
DRP-flavored pipeline to support validation
commissiong validation pipeline that 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/_ingredients/LSSTComCamSim/DRP.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 # configure for metrics only
# 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
step2b:
subset:
- analyzeMatchedPreVisitCore
- isolatedStarAssociation
- gbdesAstrometricFit
description: |
Tract-level tasks
Allowed data query constraints: tract
GbdesAstrometricFit and isolatedStarAssociation both use PreSources,
generated by consolidatePreSourceTable, for all visits that overlap a
tract.
gbdesAstrometricFit produces solutions per-tract, per-visit
isolatedStarAssociation produces solutions per-tract.
step2c:
subset:
- fgcmBuildFromIsolatedStars
- fgcmFitCycle
- fgcmOutputProducts
description: |
Global-level tasks that must not be run with any data query constraints
Can be run anytime after subset step2b.
Allowed data query constraints: instrument
step2d:
subset:
- finalizeCharacterization
- writeRecalibratedSourceTable
- transformSourceTable
- consolidateSourceTable
- updateVisitSummary
description: |
Visit-level tasks to re-estimate PSFs and apply
global calibrations to Source tables.
Allowed data query constraints: visit
step2e:
subset:
- makeCcdVisitTable
- makeVisitTable
description: |
Global-level tasks that must not be run with any data query constraints
Can be run anytime after subset step2d.
Allowed data query constraints: instrument
Tasks generate one data product per collection.
make[Ccd]VisitTable produces per-collection summary of the Visits
and CcdVisits.
step3:
subset:
- makeWarp
- selectDeepCoaddVisits
- assembleCoadd
- detection
- mergeDetections
- deblend
- measure
- mergeMeasurements
- forcedPhotCoadd
- transformObjectTable
- writeObjectTable
- consolidateObjectTable
- healSparsePropertyMaps
- selectGoodSeeingVisits
- templateGen
# analysis_tools tasks
- analyzeMatchedVisitCore
- analyzeObjectTableCore
- analyzeObjectTableExtended
- catalogMatchTract
- photometricCatalogMatch
- photometricRefCatObjectTract
- plotPropertyMapTract
- refCatObjectTract
- validateObjectTableCore
description: |
Patch and Tract-level tasks that make coadds and object tables that
can be run together, but only after the 'step1' and 'step2d'
subsets.
These should be run with explicit 'tract' constraints essentially all the
time, because otherwise quanta will be created for jobs with only partial
visit coverage.
step4:
subset:
- forcedPhotCcd
- forcedPhotDiffim
- getTemplate
- subtractImages
- detectAndMeasureDiaSources
- transformDiaSourceCat
- writeForcedSourceTable
description: |
Image subtraction and forced photometry Tasks that can be run together,
but only after the 'step1', 'step2d' and 'step3' subsets
These detector-level tasks should not be run with 'tract' or 'patch' as
part of the data ID expression if all reference catalogs or diffIm
templates that cover these detector-level quanta are desired.
step5:
subset:
- drpAssociation
- drpDiaCalculation
- forcedPhotCcdOnDiaObjects
- forcedPhotDiffOnDiaObjects
- transformForcedSourceTable
- consolidateAssocDiaSourceTable
- consolidateFullDiaObjectTable
- writeForcedSourceOnDiaObjectTable
- transformForcedSourceOnDiaObjectTable
- analyzeDiaSourceTableTract
description: |
ForcedSource and DIASource association Tasks that can be run together,
but only after the 'step1', 'step2', 'step3', and 'step4' subsets
This step includes patch-level aggregation Tasks. These should be run
with explicit 'tract' constraints in the data query, otherwise quanta
will be created for jobs with only partial visit coverage.
step6:
subset:
- consolidateDiaSourceTable
description: |
Tasks that can be run together, but only after the 'step1', 'step2',
'step3', and 'step4' subsets
This step includes visit-level aggregation tasks. Running without tract
or patch in the data query is recommended, otherwise the outputs of
consolidateDiaSourceTable will not contain complete visits.
This subset is separate from step4 to signal to operators to pause to
assess unexpected image differencing failures before these aggregation
steps. Otherwise, if run in the same quantum graph, aggregated data
products (e.g. diaObjects) would not be created if one or more of the
expected inputs is missing.
step7:
subset:
- consolidateHealSparsePropertyMaps
- analyzeObjectTableSurveyCore
description: |
Tasks that should be run as the final step that require global inputs,
and can be run after the 'step3' subset.
This step has global aggregation tasks to run over all visits, detectors,
tracts, etc. This step should be run only with the instrument constraint
in the data query.
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 all slow steps in ISR for
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
Loading

0 comments on commit d7a45ef

Please sign in to comment.