In [1]:
%run ~/notebooks/helpers.py
In [2]:
from IPython.display import Image
Before fix¶
In [3]:
collections = "u/wtg/run20/detectorMaps"
In [4]:
butler = Butler('/work/datastore', collections=collections)
In [5]:
dataId = dict(visit=119621, arm='b', spectrograph=3, instrument='PFS')
In [6]:
Image(filename=butler.getURI('dmQaResidualPlot', dataId).unquoted_path)
Out[6]:
In [7]:
[l['message'] for l in butler.get('dmResiduals_log', dataId).model_dump()]
Out[7]:
["Preparing execution of quantum for label=dmResiduals dataId={instrument: 'PFS', arm: 'b', spectrograph: 3, visit: 119621, ...}.",
"Constructing task and executing quantum for label=dmResiduals dataId={instrument: 'PFS', arm: 'b', spectrograph: 3, visit: 119621, ...}.",
'Getting and scrubbing the data',
"Scrubbing data using config={'lineFlags': ['BAD'], 'traceIterations': 2, 'iterations': 3, 'rejection': 4.0, 'order': 2, 'reserveFraction': 0.1, 'soften': 0.003, 'lsqThreshold': 1e-06, 'doSlitOffsets': False, 'slitOffsetIterations': 3, 'base': '/work/stack-2024-07-11/conda/envs/lsst-scipipe-7.0.1/share/eups/Linux64/drp_pfs_data/w.2025.03/detectorMap/detectorMap-sim-%(arm)s%(spectrograph)s.fits', 'minSignalToNoise': 20.0, 'maxCentroidError': 0.15, 'maxRejectionFrac': 0.3, 'minNumWavelengths': 3, 'weightings': {}, 'qaNumFibers': 5, 'exclusionRadius': 4.0, 'doRejectBadLines': False, 'forced': [], 'parameters': [], 'spatialOffsets': {}, 'spectralOffsets': {}, 'chipGap': 69.33333333333334}",
'2312509 line centroids for 585 traces',
'2312509 lines in list',
'2312509 good lines after initial flags (Trace: 2312509)',
'2312509 good lines after line flags (Trace: 2312509)',
'2312314 good lines after finite positions (Trace: 2312314)',
'2312314 good lines after finite intensities (Trace: 2312314)',
'Using mean SN=114.42 instead of config 20.0',
'1375368 good lines after min SN=114.42 (Trace: 1375368)',
'1375366 good lines after maxCentroidError=0.15 centroid errors (Trace: 1375366)',
'Masking outliers',
'Adding fiber information',
'Removing outliers',
'Getting residual stats',
'Making residual plots',
"Execution of task 'dmResiduals' on quantum {instrument: 'PFS', arm: 'b', spectrograph: 3, visit: 119621, ...} took 33.616 seconds"]
After fix¶
In [ ]:
-d "combination = 'run20/detectorMaps/input'" \
In [52]:
!pipetask \
--no-log-tty \
--long-log \
--log-level pfs=DEBUG \
run \
-b /work/datastore \
--instrument lsst.obs.pfs.PrimeFocusSpectrograph \
-i "PFS/calib/pipe2d-1622/verify.20250122b,PFS/defaults" \
-o u/wtg/tickets/PIPE2D-1651 \
-p "/work/wtg/drp_qa_dev/pipelines/drpQA.yaml#dmResiduals,dmCombinedResiduals" \
-d "combination = 'run20/detectorMaps/input' and visit = 119621 and arm = 'b'" \
--fail-fast \
-j 32
In [53]:
butler = Butler('/work/datastore', collections='u/wtg/tickets/PIPE2D-1651')
In [54]:
[l['message'] for l in butler.get('dmResiduals_log', dataId).model_dump()]
Out[54]:
["Preparing execution of quantum for label=dmResiduals dataId={instrument: 'PFS', arm: 'b', spectrograph: 3, visit: 119621, dither: -13, pfs_design_id: 6577301261601167266}.",
"Constructing task and executing quantum for label=dmResiduals dataId={instrument: 'PFS', arm: 'b', spectrograph: 3, visit: 119621, dither: -13, pfs_design_id: 6577301261601167266}.",
'Getting and scrubbing the data',
"Scrubbing data using config={'lineFlags': ['BAD'], 'traceIterations': 2, 'iterations': 3, 'rejection': 4.0, 'order': 2, 'reserveFraction': 0.1, 'soften': 0.003, 'lsqThreshold': 1e-06, 'doSlitOffsets': False, 'slitOffsetIterations': 3, 'base': '/work/stack-2024-07-11/conda/envs/lsst-scipipe-7.0.1/share/eups/Linux64/drp_pfs_data/w.2025.03/detectorMap/detectorMap-sim-%(arm)s%(spectrograph)s.fits', 'minSignalToNoise': 20.0, 'maxCentroidError': 0.15, 'maxRejectionFrac': 0.3, 'minNumWavelengths': 3, 'weightings': {}, 'qaNumFibers': 5, 'exclusionRadius': 4.0, 'doRejectBadLines': False, 'forced': [], 'parameters': [], 'spatialOffsets': {}, 'spectralOffsets': {}, 'chipGap': 69.33333333333334}",
'2312509 line centroids for 585 traces',
'2312509 lines in list',
'2312509 good lines after initial flags (Trace: 2312509)',
'2312509 good lines after line flags (Trace: 2312509)',
'2312314 good lines after finite positions (Trace: 2312314)',
'2312314 good lines after finite intensities (Trace: 2312314)',
'Filtering SN < sn_cut=20.00',
'2312314 good lines after SN filtering (Trace: 2312314)',
'2306119 good lines after maxCentroidError=0.15 centroid errors (Trace: 2306119)',
'/work/wtg/drp_qa_dev/python/pfs/drp/qa/dmResiduals.py:468: FutureWarning: Logical ops (and, or, xor) between Pandas objects and dtype-less sequences (e.g. list, tuple) are deprecated and will raise in a future version. Wrap the object in a Series, Index, or np.array before operating instead.\n is_reserved = (arc_data.status & ReferenceLineStatus.DETECTORMAP_RESERVED) != 0\n',
'/work/wtg/drp_qa_dev/python/pfs/drp/qa/dmResiduals.py:469: FutureWarning: Logical ops (and, or, xor) between Pandas objects and dtype-less sequences (e.g. list, tuple) are deprecated and will raise in a future version. Wrap the object in a Series, Index, or np.array before operating instead.\n is_used = (arc_data.status & ReferenceLineStatus.DETECTORMAP_USED) != 0\n',
'Masking outliers',
'Adding fiber information',
'Removing outliers',
'Getting residual stats',
'Making residual plots',
'/work/wtg/drp_qa_dev/python/pfs/drp/qa/dmResiduals.py:1001: FutureWarning: The default of observed=False is deprecated and will be changed to True in a future version of pandas. Pass observed=False to retain current behavior or observed=True to adopt the future default and silence this warning.\n binned_data = plotData.dropna(subset=["wavelength", column]).groupby(["bin", "status", "isOutlier"])[\n',
"Execution of task 'dmResiduals' on quantum {instrument: 'PFS', arm: 'b', spectrograph: 3, visit: 119621, dither: -13, pfs_design_id: 6577301261601167266} took 38.106 seconds"]
In [55]:
Image(filename=butler.getURI('dmQaResidualPlot', dataId).unquoted_path)
Out[55]: