diff --git a/config/calibrate.py b/config/calibrate.py index 68b5a27..046ac77 100755 --- a/config/calibrate.py +++ b/config/calibrate.py @@ -12,33 +12,15 @@ # Reference catalogs # The following was copied from obs_subaru and manages conflicts between gen2 and gen3 ref_cat = "ps1_pv3_3pi_20170110_vista" -for refObjLoader in (config.astromRefObjLoader, - config.photoRefObjLoader, - ): - refObjLoader.load(os.path.join(ObsConfigDir, "filterMap.py")) - # This is the Gen2 configuration option. - #refObjLoader.ref_dataset_name = ref_cat #deprecated - # Use the filterMap instead of the "any" filter. Broke after w_2022_21 without this - refObjLoader.anyFilterMapsToThis = None - -# for matchConfig in (config.astrometry, -# ): -# # matchConfig.sourceFluxType = 'Psf' -# # matchConfig.sourceSelector.active.sourceFluxType = 'Psf' -# # matchConfig.matcher.maxRotationDeg = 1.145916 -# matchConfig.matcher.maxOffsetPix = 5 -# if isinstance(matchConfig.matcher, MatchOptimisticBConfig): -# matchConfig.matcher.allowedNonperpDeg = 0.2 -# matchConfig.matcher.maxMatchDistArcSec = 2.0 -# matchConfig.sourceSelector.active.excludePixelFlags = False -# if isinstance(matchConfig.matcher, MatchPessimisticBConfig): -# matchConfig.matcher.allowedNonperpDeg = 0.2 -# matchConfig.matcher.maxMatchDistArcSec = 2.0 -# matchConfig.sourceSelector.active.excludePixelFlags = False - -# These are the Gen3 configuration options for reference catalog name. -config.connections.photoRefCat = ref_cat + +# Use PS1/VISTA for both astrometry and photometry. config.connections.astromRefCat = ref_cat +config.astromRefObjLoader.load(os.path.join(ObsConfigDir, "filterMap.py")) +# Use the filterMap instead of the "any" filter (as is used for Gaia. +config.astromRefObjLoader.anyFilterMapsToThis = None + +config.connections.photoRefCat = ref_cat +config.photoRefObjLoader.load(os.path.join(ObsConfigDir, "filterMap.py")) # number of iterations of fitter (which fits X and Y separately, and so benefits from a few iterations # See Slack: https://lsstc.slack.com/archives/C2B6X08LS/p1586468459084600 diff --git a/config/characterizeImage.py b/config/characterizeImage.py index 85d3a4f..1c42c5c 100644 --- a/config/characterizeImage.py +++ b/config/characterizeImage.py @@ -23,7 +23,7 @@ # This sets the reference catalog name for Gen2. # Note that in Gen3, we've stopped pretending (which is what Gen2 does, # for backwards compatibility) that charImage uses a reference catalog. -config.refObjLoader.ref_dataset_name = "ps1_pv3_3pi_20170110_vista" +#config.refObjLoader.ref_dataset_name = "ps1_pv3_3pi_20170110_vista" # measureApCorr error? # example failure: dataId={'dateObs': '2012-11-22', 'visit': 658653, 'filter': 'VISTA-Ks', 'hdu': 9, 'ccdnum': 8, 'ccd': 8} diff --git a/config/colorterms.py b/config/colorterms.py index e4c2526..1c2737d 100644 --- a/config/colorterms.py +++ b/config/colorterms.py @@ -21,13 +21,13 @@ # Names used by data IDs in both Gen2 and Gen3, and # Exposure.getFilter() in Gen3 (data is the same). - 'HSC-G': Colorterm(primary="g", secondary="r", c0=0.005728, c1=0.061749, c2=-0.001125), - 'HSC-R': Colorterm(primary="r", secondary="i", c0=-0.000144, c1=0.001369, c2=-0.008380), + 'EXT-G': Colorterm(primary="g", secondary="r", c0=0.005728, c1=0.061749, c2=-0.001125), + 'EXT-R': Colorterm(primary="r", secondary="i", c0=-0.000144, c1=0.001369, c2=-0.008380), # 'HSC-R2': Colorterm(primary="r", secondary="i", c0=-0.000032, c1=-0.002866, c2=-0.012638), - 'HSC-I': Colorterm(primary="i", secondary="z", c0=0.000643, c1=-0.130078, c2=-0.006855), + 'EXT-I': Colorterm(primary="i", secondary="z", c0=0.000643, c1=-0.130078, c2=-0.006855), # 'HSC-I2': Colorterm(primary="i", secondary="z", c0=0.001625, c1=-0.200406, c2=-0.013666), - 'HSC-Z': Colorterm(primary="z", secondary="y", c0=-0.005362, c1=-0.221551, c2=-0.308279), - 'HSC-Y': Colorterm(primary="y", secondary="z", c0=-0.002055, c1=0.209680, c2=0.227296), + 'EXT-Z': Colorterm(primary="z", secondary="y", c0=-0.005362, c1=-0.221551, c2=-0.308279), + 'EXT-Y': Colorterm(primary="y", secondary="z", c0=-0.002055, c1=0.209680, c2=0.227296), 'VIRCAM-Z': Colorterm(primary="z2", secondary="z2"), 'VIRCAM-Y': Colorterm(primary="y2", secondary="y2"), 'VIRCAM-J': Colorterm(primary="j", secondary="j"), diff --git a/config/filterMap.py b/config/filterMap.py index a0995f6..7a0447b 100644 --- a/config/filterMap.py +++ b/config/filterMap.py @@ -2,11 +2,11 @@ # All names on right are used in the refcats # All names on the left are names of image bands as physcial_filter or band for source, target in [ - ('HSC-G', 'g'), - ('HSC-R', 'r'), - ('HSC-I', 'i'), - ('HSC-Z', 'z'), - ('HSC-Y', 'y'), + ('EXT-G', 'g'), + ('EXT-R', 'r'), + ('EXT-I', 'i'), + ('EXT-Z', 'z'), + ('EXT-Y', 'y'), ('VIRCAM-Z', 'z2'), ('VIRCAM-Y', 'y2'), ('VIRCAM-J', 'j'), diff --git a/config/makeLSSTSkyMap.py b/config/makeLSSTSkyMap.py new file mode 100644 index 0000000..713131c --- /dev/null +++ b/config/makeLSSTSkyMap.py @@ -0,0 +1,8 @@ +# Taken from https://github.com/lsst/obs_lsst/blob/main/config/makeSkyMap.py +# This may change +config.name = "LSST" +config.skyMap.name = "rings" +config.skyMap["rings"].numRings = 120 +config.skyMap["rings"].projection = "TAN" +config.skyMap["rings"].tractOverlap = 1.0/60 # Overlap between tracts (degrees) +config.skyMap["rings"].pixelScale = 0.2 diff --git a/config/measureCoaddSources.py b/config/measureCoaddSources.py index 845e804..9ecb001 100755 --- a/config/measureCoaddSources.py +++ b/config/measureCoaddSources.py @@ -11,7 +11,7 @@ # config.match.refObjLoader=None # Set reference catalog for Gen2. "ps1_pv3_3pi_vist2020" -config.match.refObjLoader.ref_dataset_name = "ps1_pv3_3pi_20170110_vista" # ps1_pv3_3pi_20170110 +#config.match.refObjLoader.ref_dataset_name = "ps1_pv3_3pi_20170110_vista" # ps1_pv3_3pi_20170110 # Set reference catalog for Gen3. config.connections.refCat = "ps1_pv3_3pi_20170110_vista" # ps1_pv3_3pi_20170110 diff --git a/pipelines/DRP.yaml b/pipelines/DRP.yaml index 3e42ecb..b0da0ac 100644 --- a/pipelines/DRP.yaml +++ b/pipelines/DRP.yaml @@ -1,45 +1,271 @@ -description: The DRP pipeline specialized for the VIRCAM instrument -instrument: lsst.obs.vista.VIRCAM +description: VIRCAM experimental pipeline based on LSSTCam-imSim +instrument: lsstuk.obs.vista.VIRCAM imports: - - $PIPE_TASKS_DIR/pipelines/DRP.yaml + - $DRP_PIPE_DIR/ingredients/DRP-minimal-calibration.yaml + - $ANALYSIS_TOOLS_DIR/pipelines/coaddDiffMatchedQualityExtended.yaml + - $ANALYSIS_TOOLS_DIR/pipelines/coaddQualityCore.yaml + - $FARO_DIR/pipelines/metrics_pipeline.yaml tasks: - isr: lsst.obs.vista.VircamIsrTask - singleFrame: + isr: lsstuk.obs.vista.VircamIsrTask + calibrate: lsst.pipe.tasks.calibrate.CalibrateTask + measure: + class: lsst.pipe.tasks.multiBand.MeasureMergedCoaddSourcesTask + config: + connections.refCat: "ps1_pv3_3pi_20170110_vista" + +subsets: + step1: subset: - isr - characterizeImage - calibrate - writeSourceTable - transformSourceTable + description: | + Per-detector tasks that can be run together to start the DRP pipeline. + These may or may not be run with 'tract' or 'patch' as part of the data + ID expression. This specific pipeline contains no tasks that require full + visits. Running with 'tract' (and 'patch') constraints will select + partial visits that overlap that region. + In data release processing, operators should stop to address unexpected + failures before continuing on to step2. + step2: + subset: - consolidateSourceTable - consolidateVisitSummary + - isolatedStarAssociation + - finalizeCharacterization - makeCcdVisitTable - makeVisitTable - description: > - Set of tasks for complete single frame processing. Analogous to - SingleFrameDriver. isr swapped with vircamIsr to include confidence maps. - coaddDetect: + - updateVisitSummary + description: | + Tasks that can be run together, but only after the 'step1'. + This is a mix of visit-level, tract-level, and collection-level tasks + that must be run with a skymap data query constraint only (an instrument + constraint is fine, but generally unneccessary). For example, running + with 'tract' (and 'patch') constraints will select partial visits that + overlap that region. A skymap constraint is necessary to prevent + isolatedStarAssociation from producing results for all skymaps in the + data repository. + Visit-level tasks include consolidateSourceTable, consolidateVisitSummary, + finalizeCharacterization, updateVisitSummary. + Tract-level tasks include: isolatedStarAssociation + Full collection-level tasks include: makeCcdVisitTable, makeVisitTable + step3: subset: - makeWarp - assembleCoadd + - detection + - mergeDetections + - deblend + - measure + - mergeMeasurements + - forcedPhotCoadd + - transformObjectTable + - writeObjectTable + - consolidateObjectTable - healSparsePropertyMaps + - selectGoodSeeingVisits + - templateGen + #- matchObjectToTruth + #- compareObjectToTruth + description: | + Tasks that can be run together, but only after the 'step1' and 'step2' + 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. + It is expected that many forcedPhotCcd quanta will "normally" fail when + running this subset, but this isn't a problem right now because there are + no tasks downstream of it. If other tasks regularly fail or we add tasks + downstream of forcedPhotCcd, these subsets or the tasks will need + additional changes. + This subset is considered a workaround for missing middleware and task + functionality. It may be removed in the future. + step3a: + subset: + - makeWarp + - assembleCoadd - detection - description: > - A set of tasks to run when coadding images. Adding detection to typical run. - multiVisitLater: + #- mergeDetections + #- deblend + #- measure + #- mergeMeasurements + #- forcedPhotCoadd + #- transformObjectTable + #- writeObjectTable + #- consolidateObjectTable + - healSparsePropertyMaps + #- selectGoodSeeingVisits + #- templateGen + #- matchObjectToTruth + #- compareObjectToTruth + description: | + Tasks that can be run together, but only after the 'step1' and 'step2' + 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. + It is expected that many forcedPhotCcd quanta will "normally" fail when + running this subset, but this isn't a problem right now because there are + no tasks downstream of it. If other tasks regularly fail or we add tasks + downstream of forcedPhotCcd, these subsets or the tasks will need + additional changes. + This subset is considered a workaround for missing middleware and task + functionality. It may be removed in the future. + step3b: subset: #- makeWarp - #- assembleCoadd - #- healSparsePropertyMaps # needs visit info - #- detection #use public HSC detections and run separately on VIRCAM + # - assembleCoadd + #- detection - mergeDetections - deblend - - measure # needs visit src catalogues if propagating flags + - measure - mergeMeasurements - #- forcedPhotCcd # needs CCD exposures - forcedPhotCoadd - - writeObjectTable - transformObjectTable + - writeObjectTable - consolidateObjectTable - description: > - Later parts of multivisit to be conducted following importation of HSC/LSST deepCoadds during VISTA VIRCAM joint processing. + #- healSparsePropertyMaps + #The following steps require single epoch visits which are not ingested for HSC + #- selectGoodSeeingVisits + #- templateGen + #- matchObjectToTruth + #- compareObjectToTruth + description: | + Tasks that can be run together, but only after the 'step1' and 'step2' + 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. + It is expected that many forcedPhotCcd quanta will "normally" fail when + running this subset, but this isn't a problem right now because there are + no tasks downstream of it. If other tasks regularly fail or we add tasks + downstream of forcedPhotCcd, these subsets or the tasks will need + additional changes. + This subset is considered a workaround for missing middleware and task + functionality. It may be removed in the future. + step4: + subset: + - forcedPhotCcd + - forcedPhotDiffim + - getTemplate + - subtractImages + - detectAndMeasureDiaSources + - transformDiaSourceCat + - writeForcedSourceTable + description: | + Tasks that can be run together, but only after the 'step1', 'step2' 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 + - consolidateForcedSourceTable + - consolidateAssocDiaSourceTable + - consolidateFullDiaObjectTable + - writeForcedSourceOnDiaObjectTable + - transformForcedSourceOnDiaObjectTable + - consolidateForcedSourceOnDiaObjectTable + description: | + 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. + 'consolidateForcedSourceTable' is a tract-level task that aggregates + patches and should be rerun if any of the patches fail. + 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 + 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. + step8: + subset: + - analyzeObjectTableCore + - analyzeObjectTableSurveyCore + - catalogMatchTract + - refCatObjectTract + - diff_matched_analysis + description: | + Core (most important), coadd-level plots/metrics from analysis_tools. + Must be run after 'step3' (writeObjectTable). Cannot be run with any + dataquery constraints if analyzeObjectTableSurveyCore is included. + Can be run together with analysis_drp subsets, e.g. pipeline.yaml + (hash/pound sign)step8,analysis_coadd_plots,imsim_analysis_coadd_plots + Includes extended-level diff_matched_analysis metrics, which are + considered core for DC2 as they can't be run on other datasets yet. + faro_all: + subset: + # visit-level on single-frame products + - nsrcMeasVisit + - TE3 + - TE4 + # tract-level, matched-visit on single-frame products + - matchCatalogsTract + - matchCatalogsPatch + - matchCatalogsPatchMultiBand + - matchCatalogsTractMag17to21p5 + - matchCatalogsTractStarsSNR5to80 + - matchCatalogsTractGxsSNR5to80 + - PA1 + - PF1_design + - AM1 + - AM2 + - AM3 + - AD1_design + - AD2_design + - AD3_design + - AF1_design + - AF2_design + - AF3_design + - AB1 + - modelPhotRepGal1 + - modelPhotRepGal2 + - modelPhotRepGal3 + - modelPhotRepGal4 + - modelPhotRepStar1 + - modelPhotRepStar2 + - modelPhotRepStar3 + - modelPhotRepStar4 + - psfPhotRepStar1 + - psfPhotRepStar2 + - psfPhotRepStar3 + - psfPhotRepStar4 + # tract-level on coadd products + - TE1 + - TE2 + - wPerp + - skyObjectMean + - skyObjectStd + description: | + Set of tasks for calculation of metrics via faro. + These tasks are a mix of visit- and tract-level. + Tasks that require single-frame products use Calibrated Source Tables, + which are available after consolidateSourceTable (step2). + Tasks that require coadd products use Object Tables which are available + after consolidateObjectTable (step3). \ No newline at end of file diff --git a/pipelines/DRP_full.yaml b/pipelines/DRP_full.yaml deleted file mode 100644 index 7c661da..0000000 --- a/pipelines/DRP_full.yaml +++ /dev/null @@ -1,232 +0,0 @@ -description: > - Base Pipeline that describes the Data Release Production process. - Never run this pipeline or any of its subsets directly; always use an - obs_* package pipeline that imports it instead. -instrument: lsst.obs.vista.VIRCAM -tasks: - #isr: lsst.ip.isr.IsrTask - isr: lsst.obs.vista.VircamIsrTask - characterizeImage: lsst.pipe.tasks.characterizeImage.CharacterizeImageTask - calibrate: lsst.pipe.tasks.calibrate.CalibrateTask - writeSourceTable: lsst.pipe.tasks.postprocess.WriteSourceTableTask - transformSourceTable: lsst.pipe.tasks.postprocess.TransformSourceTableTask - consolidateSourceTable: lsst.pipe.tasks.postprocess.ConsolidateSourceTableTask - consolidateVisitSummary: lsst.pipe.tasks.postprocess.ConsolidateVisitSummaryTask - makeCcdVisitTable: lsst.pipe.tasks.postprocess.MakeCcdVisitTableTask - makeVisitTable: lsst.pipe.tasks.postprocess.MakeVisitTableTask - makeWarp: - class: lsst.pipe.tasks.makeCoaddTempExp.MakeWarpTask - config: - makePsfMatched: true - makeDirect: true - assembleCoadd: - class: lsst.pipe.tasks.assembleCoadd.CompareWarpAssembleCoaddTask - config: - doInputMap: true - doNImage: true - doMaskBrightObjects: false - healSparsePropertyMaps: lsst.pipe.tasks.healSparseMapping.HealSparsePropertyMapTask - detection: lsst.pipe.tasks.multiBand.DetectCoaddSourcesTask - mergeDetections: lsst.pipe.tasks.mergeDetections.MergeDetectionsTask - #Multiple band SCARLETT deblender - deblend: lsst.pipe.tasks.deblendCoaddSourcesPipeline.DeblendCoaddSourcesMultiTask - #Single band SDSS deblender - currently broken yielding source id error - #deblend: lsst.pipe.tasks.deblendCoaddSourcesPipeline.DeblendCoaddSourcesSingleTask - measure: lsst.pipe.tasks.multiBand.MeasureMergedCoaddSourcesTask - mergeMeasurements: lsst.pipe.tasks.mergeMeasurements.MergeMeasurementsTask - writeObjectTable: lsst.pipe.tasks.postprocess.WriteObjectTableTask - transformObjectTable: lsst.pipe.tasks.postprocess.TransformObjectCatalogTask - consolidateObjectTable: lsst.pipe.tasks.postprocess.ConsolidateObjectTableTask - forcedPhotCcd: lsst.meas.base.forcedPhotCcd.ForcedPhotCcdTask - forcedPhotCoadd: lsst.meas.base.forcedPhotCoadd.ForcedPhotCoaddTask - selectGoodSeeingVisits: - class: lsst.pipe.tasks.selectImages.BestSeeingQuantileSelectVisitsTask - config: - connections.goodVisits: goodSeeingVisits - templateGen: - class: lsst.pipe.tasks.assembleCoadd.CompareWarpAssembleCoaddTask - config: - doSelectVisits: true - assembleStaticSkyModel.doSelectVisits: true - connections.selectedVisits: goodSeeingVisits - connections.outputCoaddName: goodSeeing - # Setting template 'outputCoaddName' to goodSeeing is not sufficient to - # convince contract checker that coaddExposure == goodSeeingCoadd - connections.coaddExposure: goodSeeingCoadd - imageDifference: - class: lsst.pipe.tasks.imageDifference.ImageDifferenceTask - config: - coaddName: goodSeeing - getTemplate.coaddName: goodSeeing - getTemplate.warpType: direct - connections.coaddName: goodSeeing - # Setting template 'coaddName' is not sufficient to satisfy contract - connections.coaddExposures: goodSeeingCoadd - connections.subtractedExposure: goodSeeingDiff_differenceExp - transformDiaSourceCat: - class: lsst.ap.association.TransformDiaSourceCatalogTask - config: - connections.coaddName: goodSeeing - connections.diaSourceSchema: goodSeeingDiff_diaSrc_schema - connections.diaSourceCat: goodSeeingDiff_diaSrc - connections.diffIm: goodSeeingDiff_differenceExp - connections.diaSourceTable: goodSeeingDiff_diaSrcTable - consolidateDiaSourceTable: - class: lsst.pipe.tasks.postprocess.ConsolidateSourceTableTask - config: - connections.inputCatalogs: goodSeeingDiff_diaSrcTable - connections.outputCatalog: diaSourceTable - drpAssociation: - class: lsst.pipe.tasks.drpAssociationPipe.DrpAssociationPipeTask - config: - connections.coaddName: goodSeeing - connections.diaSourceTables: goodSeeingDiff_diaSrcTable - connections.assocDiaSourceTable: goodSeeingDiff_assocDiaSrcTable - connections.diaObjectTable: goodSeeingDiff_diaObjTable - drpDiaCalculation: - class: lsst.pipe.tasks.drpDiaCalculationPipe.DrpDiaCalculationPipeTask - config: - connections.coaddName: goodSeeing - connections.assocDiaSourceTable: goodSeeingDiff_assocDiaSrcTable - connections.diaObjectTable: goodSeeingDiff_diaObjTable - connections.fullDiaObjectTable: goodSeeingDiff_fullDiaObjTable - forcedPhotDiffim: - class: lsst.meas.base.ForcedPhotCcdTask - config: - connections.measCat: forced_diff - connections.outputSchema: forced_diff_schema - connections.exposure: goodSeeingDiff_differenceExp - -subsets: - processCcd: - subset: - - isr - - characterizeImage - - calibrate - description: > - Set of tasks to run when doing single frame processing, without any - conversions to Parquet/DataFrames or visit-level summaries. - sourceTable: - subset: - - writeSourceTable - - transformSourceTable - - consolidateSourceTable - description: > - Set of tasks to generate parquet Source Tables from output of processCcd - subset. - singleFrame: - subset: - - isr - - characterizeImage - - calibrate - - writeSourceTable - - transformSourceTable - - consolidateSourceTable - - consolidateVisitSummary - #These three from the HSC pipeline? - #- skyCorr - #- isolatedStarAssociation - #- finalizeCharacterization - - makeCcdVisitTable - - makeVisitTable - description: > - Set of tasks for complete single frame processing. Analogous to - SingleFrameDriver. - coaddition: - subset: - - makeWarp - - assembleCoadd - - healSparsePropertyMaps - description: > - A set of tasks to run when coadding images. - coaddDetect: - subset: - - makeWarp - - assembleCoadd - - healSparsePropertyMaps - - detection - description: > - A set of tasks to run when coadding images. Adding detection to typical run. - multiband: - subset: - - detection - - mergeDetections - - deblend - - measure - - mergeMeasurements - - forcedPhotCoadd - description: > - A set of tasks to run when making measurements on coadds. - objectTable: - subset: - - writeObjectTable - - transformObjectTable - - consolidateObjectTable - description: > - A set of tasks to transform multiband outputs into a parquet object - table. - forced: - subset: - - forcedPhotCcd - - forcedPhotCoadd - description: > - A set of tasks to run when doing forced measurements. - multiVisit: - subset: - - makeWarp - - assembleCoadd - - healSparsePropertyMaps - - detection - - mergeDetections - - deblend - - measure - - mergeMeasurements - - forcedPhotCcd - - forcedPhotCoadd - - transformObjectTable - - writeObjectTable - - consolidateObjectTable - description: > - All tasks that process multiple visits together. - This subset plus singleFrame should generally be equivalent to the full - pipeline. At present this is not true, because diffimDRP would benefit - from more testing before we start running it with everything else by - default. - multiVisitLater: - subset: - #- makeWarp - #- assembleCoadd - #- healSparsePropertyMaps # needs visit info - #- detection - - mergeDetections - - deblend - - measure # needs visit src catalogues if propagating flags - - mergeMeasurements - #- forcedPhotCcd # needs CCD exposures - - forcedPhotCoadd - - writeObjectTable - - transformObjectTable - - consolidateObjectTable - description: > - Later parts of multivisit - diffimDRP: - subset: - - selectGoodSeeingVisits - - templateGen - - imageDifference - - transformDiaSourceCat - - consolidateDiaSourceTable - - drpAssociation - - drpDiaCalculation - - forcedPhotDiffim - description: Subset for running image differencing branch of the DRP pipeline - -contracts: - - selectGoodSeeingVisits.connections.goodVisits == templateGen.connections.selectedVisits - - templateGen.connections.coaddExposure == imageDifference.connections.coaddExposures - - imageDifference.connections.subtractedExposure == transformDiaSourceCat.connections.diffIm - - imageDifference.connections.subtractedExposure == forcedPhotDiffim.connections.exposure - - transformDiaSourceCat.connections.diaSourceTable == consolidateDiaSourceTable.connections.inputCatalogs - - transformDiaSourceCat.connections.diaSourceTable == drpAssociation.connections.diaSourceTables - - drpAssociation.connections.assocDiaSourceTable == drpDiaCalculation.connections.assocDiaSourceTable - - drpAssociation.connections.diaObjectTable == drpDiaCalculation.connections.diaObjectTable \ No newline at end of file diff --git a/policy/VircamMapper.yaml b/policy/VircamMapper.yaml deleted file mode 100644 index dde0581..0000000 --- a/policy/VircamMapper.yaml +++ /dev/null @@ -1,75 +0,0 @@ -needCalibRegistry: true -camera: ../camera -#defaultLevel: Ccd - - -levels: - # Keys that are NOT relevant for a particular level - skyTile: - - visit - - ccdnum - - hdu - - ccd - tract: patch - visit: - - ccdnum - - hdu - - ccd - sensor: none - - -defaultLevel: sensor - - -#defaultSubLevels: -# skyTile: sensor -# visit: sensor - -# The default policy file is contained within the obs_base/policy directory of the stack. However, specific entries can be overridden by including them in here (and, indeed, some are mandatory as they don't have equivalents in the default files). -# Even if it were possible and you **only** used the defaults in the obs_base/policy files you still need to include exposures, calibrations, and datasets so that it knows to refer to the defaults in obs_base. -exposures: - raw: - python: lsst.afw.image.DecoratedImageF - persistable: DecoratedImageF - #Should we parse each ccd into a new file or do that in a later step? - #Removed -%(ccd)02d from end because one file for all ccds - #'raw/%(dateObs)s/%(dataType)s-%(visit)04d-%(filter)s.fts[%(hdu)d]' - #raw/%(dateObs)s/%(dataType)s-%(visit)04d-%(filter)s-%(ccd)02d.fit - #%(date)s/%(filter)s/decam%(visit)07d.fits.fz[%(hdu)d] - #The following must be in the .fits format (these can be linked even if - #the original files are named .fit). - template: 'raw/%(dateObs)s/%(visit)04d-%(numObs)s-%(filter)s-%(dataType)s.fits[%(hdu)d]' - postISRCCD: - template: 'postISRCCD/%(visit)07d/postISRCCD-%(visit)07d_%(ccdnum)02d.fits' - calexp: - template: 'calexp/%(dateObs)s/calexp-%(visit)07d-%(numObs)s-%(filter)s-%(dataType)s-%(ccdnum)02d.fits' - #recipe: lossyBasic - deepCoadd_directWarp: - template: 'deepCoadd/%(filter)s/%(tract)d/%(patch)s/warp-%(filter)s-%(tract)d-%(patch)s-%(dateObs)s-%(visit)07d-%(numObs)s-%(dataType)s-%(ccdnum)02d.fits' - #recipe: lossyBasic - deepCoadd_psfMatchedWarp: - template: 'deepCoadd/%(filter)s/%(tract)d/%(patch)s/psfMatchedWarp-%(filter)s-%(tract)d-%(patch)s-%(dateObs)s-%(visit)04d-%(numObs)s-%(dataType)s-%(ccdnum)02d.fits' - #recipe: lossyBasic - -# We are currently not performing calibrations. -calibrations: - add_bias_etc_here: - template: 'this.txt' - -datasets: - processCcd_metadata: - template: 'processCcd_metadata/%(filter)s/%(visit)07d-%(ccdnum)02d.yaml' - icSrc: - template: 'sci-results/icSrc/%(dateObs)s/icSrc-%(visit)07d-%(filter)s-%(ccdnum)02d.fits' - src: - template: 'sci-results/src/%(dateObs)s/src-%(visit)07d-%(filter)s-%(ccdnum)02d.fits' - srcMatch: - template: 'sci-results/srcMatch/srcMatch-%(visit)07d_%(ccdnum)02d.fits' - calexpBackground: - template: 'corr/%(dateObs)s/src-%(visit)04d-%(filter)s-%(ccdnum)02d.fits' - forced_src: - template: 'forcedPhot/%(dateObs)s/%(filter)s/src/src-%(ccd)02d-%(run)s.fits' - deepCoadd_measMatch: - template: 'deepCoadd_results/%(filter)s/%(tract)d/%(patch)s/srcMatch-%(filter)s-%(tract)d-%(patch)s.fits' - #deepCoadd_forced_src: - #template: 'deepCoadd_results/%(filter)s/%(tract)d/%(patch)s/forcedSrc-%(filter)s-%(tract)d-%(patch)s.fits' diff --git a/python/lsst/obs/vista/_instrument.py b/python/lsst/obs/vista/_instrument.py deleted file mode 100644 index bde98f7..0000000 --- a/python/lsst/obs/vista/_instrument.py +++ /dev/null @@ -1,171 +0,0 @@ -"""Butler gen3 instrument description for VISTA. - -We use VIRCAM as instrument name. -""" - - -__all__ = ("VIRCAM",) - - -import os - -from lsst.afw.cameraGeom import makeCameraFromPath, CameraConfig -from lsst.obs.base import Instrument, yamlCamera -#from lsst.obs.base.gen2to3 import TranslatorFactory, PhysicalFilterToBandKeyHandler, BandToPhysicalFilterKeyHandler - -from lsst.obs.vista.vircamFilters import VIRCAM_FILTER_DEFINITIONS -#from lsst.daf.butler.core.utils import getFullTypeName -from lsst.utils.introspection import get_full_type_name -from lsst.utils import getPackageDir -# Comment-out the following line if you put .translators/necam.py in the -# astro_metadata_translator repository: -from .translators import VircamTranslator - - -class VIRCAM(Instrument): - filterDefinitions = VIRCAM_FILTER_DEFINITIONS - #policyName = "vircam" - - # obsDataPackage = "obs_vista_data" # What is this? - - def __init__(self, **kwargs): - super().__init__(**kwargs) - packageDir = getPackageDir("obs_vista") - self.configPaths = [os.path.join(packageDir, "config")] - - @classmethod - def getName(cls): - return "VIRCAM" - - def getCamera(self): - #path = os.path.join(getPackageDir("obs_vista"), self.policyName, "camGeom") - #config = CameraConfig() - #config.load(os.path.join(path, "camera.py")) - # return makeCameraFromPath( - # cameraConfig=config, - # ampInfoPath=path, - # shortNameFunc=lambda name: name.replace(" ", "_"), - # ) - # Gen 3 yaml camera - path = os.path.join( - getPackageDir("obs_vista"), - "camera", - 'vircam.yaml') - return yamlCamera.makeCamera(path) - -# def register(self, registry): -# camera = self.getCamera() -# obsMax = 2**31 # What is this? VISTA visit numbers will not go above this I think -# with registry.transaction(): -# registry.syncDimensionData( -# "instrument", -# { -# "name": self.getName(), -# "detector_max": 16, -# "visit_max": obsMax, -# "exposure_max": obsMax, -# "class_name": getFullTypeName(self), -# } -# ) -# -# for detector in camera: -# registry.syncDimensionData( -# "detector", -# { -# "instrument": self.getName(), -# "id": detector.getId(), -# "full_name": detector.getName(), -# "name_in_raft": detector.getName()[1:], -# "raft": detector.getName()[0], -# "purpose": str(detector.getType()).split(".")[-1], -# } -# ) -# -# self._registerFilters(registry) - def register(self, registry, update=False): - # Docstring inherited from Instrument.register - camera = self.getCamera() - # The maximum values below make Gen3's ObservationDataIdPacker produce - # outputs that match Gen2's ccdExposureId. - obsMax = 2**31 - with registry.transaction(): - registry.syncDimensionData( - "instrument", - { - "name": self.getName(), - "detector_max": 16, - "visit_max": obsMax, - "exposure_max": obsMax, - #"class_name": getFullTypeName(self), - "class_name": get_full_type_name(self), - }, - update=update - ) - for detector in camera: - registry.syncDimensionData( - "detector", - { - "instrument": self.getName(), - "id": detector.getId(), - "full_name": detector.getName(), - # TODO: make sure these definitions are consistent with - # those extracted by astro_metadata_translator, and - # test that they remain consistent somehow. - "name_in_raft": detector.getName()[1:], #detector.getName().split("_")[1], - "raft": detector.getName().split("_")[0], - "purpose": str(detector.getType()).split(".")[-1], - }, - update=update - ) - self._registerFilters(registry, update=update) - - def getRawFormatter(self, dataId): - # local import to prevent circular dependency - - from .rawFormatter import VircamRawFormatter - return VircamRawFormatter - -# def makeDataIdTranslatorFactory(self) -> TranslatorFactory: -# # Docstring inherited from lsst.obs.base.Instrument. -# factory = TranslatorFactory() -# factory.addGenericInstrumentRules( -# self.getName(), -# calibFilterType="abstract_filter", -# detectorKey="ccdnum" -# ) -# # VISTA calibRegistry entries are abstract_filters, but we need physical_filter -# # in the gen3 registry. -# # UPDATE seems to have been superseeded by band -# # factory.addRule(AbstractToPhysicalFilterKeyHandler(self.filterDefinitions), -# # instrument=self.getName(), -# # gen2keys=("filter",), -# # consume=("filter",), -# # datasetTypeName="cpFlat") -# # Translate Gen2 `filter` to band if it hasn't been consumed -# # yet and gen2keys includes tract. -# factory.addRule(PhysicalFilterToBandKeyHandler(self.filterDefinitions), -# instrument=self.getName(), gen2keys=("filter", "tract"), consume=("filter",)) -# return factory -# def makeDataIdTranslatorFactory(self) -> TranslatorFactory: -# # Docstring inherited from lsst.obs.base.Instrument. -# factory = TranslatorFactory() -# factory.addGenericInstrumentRules(self.getName()) -# # Translate Gen2 `filter` to band if it hasn't been consumed -# # yet and gen2keys includes tract. -# factory.addRule(PhysicalFilterToBandKeyHandler(self.filterDefinitions), -# instrument=self.getName(), gen2keys=("filter", "tract"), consume=("filter",)) -# return factory - -# def makeDataIdTranslatorFactory(self) -> TranslatorFactory: -# # Docstring inherited from lsst.obs.base.Instrument. -# factory = TranslatorFactory() -# factory.addGenericInstrumentRules(self.getName(), calibFilterType="band", -# detectorKey="ccdnum") -# # DECam calibRegistry entries are bands, but we need physical_filter -# # in the gen3 registry. -# factory.addRule(BandToPhysicalFilterKeyHandler(self.filterDefinitions), -# instrument=self.getName(), -# gen2keys=("filter",), -# consume=("filter",), -# datasetTypeName="cpFlat") -# return factory diff --git a/python/lsst/obs/vista/makeVircamRawVisitInfo.py b/python/lsst/obs/vista/makeVircamRawVisitInfo.py deleted file mode 100755 index f092564..0000000 --- a/python/lsst/obs/vista/makeVircamRawVisitInfo.py +++ /dev/null @@ -1,42 +0,0 @@ -# from lsst.afw.geom import degrees # Failed in 20.0.0 -from lsst.geom import degrees # Many basic astro classes moved from afw.geom to geom -from lsst.afw.coord import Observatory -from lsst.obs.base import MakeRawVisitInfoViaObsInfo #MakeRawVisitInfo #deprecated -from .translators import VircamTranslator - -__all__ = ["MakeVircamRawVisitInfo"] - - -class MakeVircamRawVisitInfo(MakeRawVisitInfoViaObsInfo): - """Make a VisitInfo from the FITS header of a VISTA image - """ - metadataTranslator = VircamTranslator -# observatory = Observatory(-24.62*degrees, 70.4*degrees, 2518) # long, lat, elev -# -# def setArgDict(self, md, argDict): -# """Set an argument dict for makeVisitInfo and pop associated metadata -# @param[in,out] md metadata, as an lsst.daf.base.PropertyList or PropertySet -# @param[in,out] argdict a dict of arguments -# -# While a Make<>RawVisitInfo file is mandatory for processCcd.py to run, it isn't -# mandatory for it to actually do anything. Hence this one simply contains a pass -# statement. -# -# However, it's recommended that you at least include the exposure time from the -# image header and observatory information (for the latter, remember to edit and -# uncomment the "observatory" variable above.) -# """ -# # Uncommented these -# argDict["exposureTime"] = self.popFloat(md, 'EXPTIME') -# argDict["observatory"] = self.observatory -# #argDict["ccd"] = self.popFloat(md, 'CCDNUM') -# startDate = self.popIsoDate(md, "DATE-OBS") -# argDict["date"] = self.offsetDate(startDate, 0.5*argDict["exposureTime"]) -# -# def getDateAvg(self, md, exposureTime): -# """Return date at the middle of the exposure -# @param[in,out] md FITS metadata; changed in place -# @param[in] exposureTime exposure time in sec -# """ -# dateObs = self.popIsoDate(md, "DATE-OBS") -# return self.offsetDate(dateObs, 0.5*exposureTime) diff --git a/python/lsst/obs/vista/vircamFilters.py b/python/lsst/obs/vista/vircamFilters.py deleted file mode 100644 index a084ab9..0000000 --- a/python/lsst/obs/vista/vircamFilters.py +++ /dev/null @@ -1,82 +0,0 @@ -from lsst.obs.base import FilterDefinition, FilterDefinitionCollection - -# lambdaMin and lambda max are chosen to be where the filter rises above 1% -# from HELP/SVO: -# https://github.com/H-E-L-P/herschelhelp_python/blob/master/database_builder/filters/ -VIRCAM_FILTER_DEFINITIONS = FilterDefinitionCollection( - FilterDefinition( - band="Clear", - physical_filter="NONE", - #lambdaEff=0, - alias=["Clear", "NONE", "None", "Unrecognised", "UNRECOGNISED", - "Unrecognized", "UNRECOGNIZED", "NOTSET"] - ), - FilterDefinition( - physical_filter="VIRCAM-Z", - band='Z', - #lambdaEff=8762.4437058376E-1, - #lambdaMin=8156.5423076923E-1, - #lambdaMax=9400.45E-1 - ), - FilterDefinition( - physical_filter="VIRCAM-Y", - band='Y', - #lambdaEff=10184.228370757E-1, - #lambdaMin=9427.060857538E-1, - #lambdaMax=10976.565495208E-1 - ), - FilterDefinition( - physical_filter="VIRCAM-J", - band='J', - #lambdaEff=12464.429377059E-1, - #lambdaMin=11427.444047011E-1, - #lambdaMax=13759.028571429E-1 - ), - FilterDefinition( - physical_filter="VIRCAM-H", - band='H', - #lambdaEff=16310.014908445E-1, - #lambdaMin=14603.599766628E-1, - #lambdaMax=18422.112893276E-1 - ), - FilterDefinition( - physical_filter="VIRCAM-Ks", - #K Capitalised and without s based on - #https://github.com/lsst/skymap/blob/master/python/lsst/skymap/packers.py - band="K", - #lambdaEff=21336.637909756E-1, - #lambdaMin=19332.653810836E-1, - #lambdaMax=23674.330024814E-1 - ), - # Copy pasted from obs_subaru. - FilterDefinition( - physical_filter="HSC-G", - band="g", - #lambdaEff=477, - alias={'W-S-G+'} - ), - FilterDefinition( - physical_filter="HSC-R", - band="r", - #lambdaEff=623, - alias={'W-S-R+'} - ), - FilterDefinition( - physical_filter="HSC-I", - band="i", - #lambdaEff=775, - alias={'W-S-I+'} - ), - FilterDefinition( - physical_filter="HSC-Z", - band="z", - #lambdaEff=925, - alias={'W-S-Z+'} - ), - FilterDefinition( - physical_filter="HSC-Y", - band="y", - #lambdaEff=990, - alias={'W-S-ZR'} - ), -) diff --git a/python/lsst/__init__.py b/python/lsstuk/__init__.py similarity index 100% rename from python/lsst/__init__.py rename to python/lsstuk/__init__.py diff --git a/python/lsst/obs/__init__.py b/python/lsstuk/obs/__init__.py similarity index 100% rename from python/lsst/obs/__init__.py rename to python/lsstuk/obs/__init__.py diff --git a/python/lsst/obs/vista/__init__.py b/python/lsstuk/obs/vista/__init__.py similarity index 60% rename from python/lsst/obs/vista/__init__.py rename to python/lsstuk/obs/vista/__init__.py index 5726898..7d2fa1d 100644 --- a/python/lsst/obs/vista/__init__.py +++ b/python/lsstuk/obs/vista/__init__.py @@ -1,7 +1,5 @@ from ._instrument import * -#from .vircamMapper import * #mapper removed in gen3 from .makeVircamRawVisitInfo import * from ._instrument import * from .rawFormatter import * -#from .ingest import * #deprecated in gen3 from .vircamIsrTask import * \ No newline at end of file diff --git a/python/lsstuk/obs/vista/_instrument.py b/python/lsstuk/obs/vista/_instrument.py new file mode 100644 index 0000000..96c0f1f --- /dev/null +++ b/python/lsstuk/obs/vista/_instrument.py @@ -0,0 +1,88 @@ +"""Butler gen3 instrument description for VISTA. + +We use VIRCAM as instrument name. +""" + + +__all__ = ("VIRCAM",) + + +import os + +from lsst.afw.cameraGeom import makeCameraFromPath, CameraConfig +from lsst.obs.base import Instrument, yamlCamera +from lsst.utils.introspection import get_full_type_name +from lsst.utils import getPackageDir + +#Local imports +from .translators import VircamTranslator +from .vircamFilters import VIRCAM_FILTER_DEFINITIONS + +class VIRCAM(Instrument): + filterDefinitions = VIRCAM_FILTER_DEFINITIONS + #policyName = "vircam" + + # obsDataPackage = "obs_vista_data" # What is this? + + def __init__(self, **kwargs): + super().__init__(**kwargs) + packageDir = getPackageDir("obs_vista") + self.configPaths = [os.path.join(packageDir, "config")] + + @classmethod + def getName(cls): + return "VIRCAM" + + def getCamera(self): + + path = os.path.join( + getPackageDir("obs_vista"), + "camera", + 'vircam.yaml') + return yamlCamera.makeCamera(path) + + + def register(self, registry, update=False): + # Docstring inherited from Instrument.register + camera = self.getCamera() + # The maximum values below make Gen3's ObservationDataIdPacker produce + # outputs that match Gen2's ccdExposureId. + obsMax = 2**31 + with registry.transaction(): + registry.syncDimensionData( + "instrument", + { + "name": self.getName(), + "detector_max": 16, + "visit_max": obsMax, + "exposure_max": obsMax, + #"class_name": getFullTypeName(self), + "class_name": get_full_type_name(self), + }, + update=update + ) + for detector in camera: + registry.syncDimensionData( + "detector", + { + "instrument": self.getName(), + "id": detector.getId(), + "full_name": detector.getName(), + # TODO: make sure these definitions are consistent with + # those extracted by astro_metadata_translator, and + # test that they remain consistent somehow. + "name_in_raft": detector.getName()[1:], #detector.getName().split("_")[1], + "raft": detector.getName().split("_")[0], + "purpose": str(detector.getType()).split(".")[-1], + }, + update=update + ) + self._registerFilters(registry, update=update) + + def getRawFormatter(self, dataId): + # local import to prevent circular dependency + + from .rawFormatter import VircamRawFormatter + return VircamRawFormatter + + diff --git a/python/lsstuk/obs/vista/makeVircamRawVisitInfo.py b/python/lsstuk/obs/vista/makeVircamRawVisitInfo.py new file mode 100755 index 0000000..a62adb6 --- /dev/null +++ b/python/lsstuk/obs/vista/makeVircamRawVisitInfo.py @@ -0,0 +1,14 @@ +from lsst.geom import degrees +from lsst.afw.coord import Observatory +from lsst.obs.base import MakeRawVisitInfoViaObsInfo + +from .translators import VircamTranslator + +__all__ = ["MakeVircamRawVisitInfo"] + + +class MakeVircamRawVisitInfo(MakeRawVisitInfoViaObsInfo): + """Make a VisitInfo from the FITS header of a VISTA image + """ + metadataTranslator = VircamTranslator + diff --git a/python/lsst/obs/vista/rawFormatter.py b/python/lsstuk/obs/vista/rawFormatter.py similarity index 100% rename from python/lsst/obs/vista/rawFormatter.py rename to python/lsstuk/obs/vista/rawFormatter.py diff --git a/python/lsst/obs/vista/translators/__init__.py b/python/lsstuk/obs/vista/translators/__init__.py similarity index 100% rename from python/lsst/obs/vista/translators/__init__.py rename to python/lsstuk/obs/vista/translators/__init__.py diff --git a/python/lsst/obs/vista/translators/readme.md b/python/lsstuk/obs/vista/translators/readme.md similarity index 100% rename from python/lsst/obs/vista/translators/readme.md rename to python/lsstuk/obs/vista/translators/readme.md diff --git a/python/lsst/obs/vista/translators/vircam.py b/python/lsstuk/obs/vista/translators/vircam.py similarity index 100% rename from python/lsst/obs/vista/translators/vircam.py rename to python/lsstuk/obs/vista/translators/vircam.py diff --git a/python/lsstuk/obs/vista/vircamFilters.py b/python/lsstuk/obs/vista/vircamFilters.py new file mode 100644 index 0000000..a0e9c6d --- /dev/null +++ b/python/lsstuk/obs/vista/vircamFilters.py @@ -0,0 +1,66 @@ +from lsst.obs.base import FilterDefinition, FilterDefinitionCollection + +# lambdaMin and lambda max are chosen to be where the filter rises above 1% +# from HELP/SVO: +# https://github.com/H-E-L-P/herschelhelp_python/blob/master/database_builder/filters/ +VIRCAM_FILTER_DEFINITIONS = FilterDefinitionCollection( + + FilterDefinition(band="Clear", physical_filter="NONE", #lambdaEff=0, + alias=["Clear", "NONE", "None", "Unrecognised", "UNRECOGNISED", + "Unrecognized", "UNRECOGNIZED", "NOTSET"]), + FilterDefinition(physical_filter="VIRCAM-Z", + band='Z', + #lambdaEff=8762.4437058376E-1, + #lambdaMin=8156.5423076923E-1, + #lambdaMax=9400.45E-1 + ), + FilterDefinition(physical_filter="VIRCAM-Y", + band='Y', + #lambdaEff=10184.228370757E-1, + #lambdaMin=9427.060857538E-1, + #lambdaMax=10976.565495208E-1 + ), + FilterDefinition(physical_filter="VIRCAM-J", + band='J', + #lambdaEff=12464.429377059E-1, + #lambdaMin=11427.444047011E-1, + #lambdaMax=13759.028571429E-1 + ), + FilterDefinition(physical_filter="VIRCAM-H", + band='H', + #lambdaEff=16310.014908445E-1, + #lambdaMin=14603.599766628E-1, + #lambdaMax=18422.112893276E-1 + ), + FilterDefinition(physical_filter="VIRCAM-Ks", + #K Capitalised and without s based on + #https://github.com/lsst/skymap/blob/master/python/lsst/skymap/packers.py + band="K", + #lambdaEff=21336.637909756E-1, + #lambdaMin=19332.653810836E-1, + #lambdaMax=23674.330024814E-1 + ), + # These are here to import external filters which should be superceded by using + # obs_subaru + FilterDefinition(physical_filter="EXT-G", + band="g", + #lambdaEff=477, + alias={'W-S-G+'}), + FilterDefinition(physical_filter="EXT-R", + band="r", + #lambdaEff=623, + alias={'W-S-R+'}), + FilterDefinition(physical_filter="EXT-I", + band="i", + #lambdaEff=775, + alias={'W-S-I+'}), + FilterDefinition(physical_filter="EXT-Z", + band="z", + #lambdaEff=925, + alias={'W-S-Z+'}), + FilterDefinition(physical_filter="EXT-Y", + band="y", + #lambdaEff=990, + alias={'W-S-ZR'}), + +) diff --git a/python/lsst/obs/vista/vircamIsrTask.py b/python/lsstuk/obs/vista/vircamIsrTask.py similarity index 98% rename from python/lsst/obs/vista/vircamIsrTask.py rename to python/lsstuk/obs/vista/vircamIsrTask.py index bcc6364..9b5485a 100755 --- a/python/lsst/obs/vista/vircamIsrTask.py +++ b/python/lsstuk/obs/vista/vircamIsrTask.py @@ -81,8 +81,6 @@ def run(self, ccdExposure, *, camera=None, bias=None, linearizer=None, fringes=fringes, opticsTransmission=opticsTransmission, filterTransmission=filterTransmission, sensorTransmission=sensorTransmission, atmosphereTransmission=atmosphereTransmission, detectorNum=detectorNum, strayLightData=strayLightData, illumMaskedImage=illumMaskedImage, - #isGen3=isGen3, #deprecated - #additional argument not passed to parent method ) diff --git a/ups/obs_vista.table b/ups/obs_vista.table index be45b77..fe8ef04 100755 --- a/ups/obs_vista.table +++ b/ups/obs_vista.table @@ -1,8 +1,14 @@ -#setupRequired(pipe_tasks) -#setupRequired(pipe_drivers) +setupRequired(obs_base) +setupRequired(meas_astrom) +setupRequired(sconsUtils) +setupRequired(astshim) +setupRequired(astro_metadata_translator) +setupRequired(geom) +setupRequired(daf_butler) setupRequired(meas_modelfit) -#setupRequired(meas_extensions_psfex) -#setupRequired(meas_extensions_shapeHSM) +setupOptional(meas_extensions_gaap) +setupOptional(meas_extensions_psfex) +setupOptional(meas_extensions_shapeHSM) envPrepend(LD_LIBRARY_PATH, ${PRODUCT_DIR}/lib)