(lsst-scipipe-3.0.0) price@pfsa-usr02-gb:/work/price/pipe2d-1268 $ cp -r /work/drp/CALIB-2023-07-v2 .
from glob import glob
import numpy as np
from pfs.drp.stella import DetectorMap
from pfs.utils.fiberids import FiberIds
def interpolate(x, x1, x2, y1, y2):
weight2 = (x - x1)/(x2 - x1)
weight1 = 1.0 - weight2
return y1*weight1 + y2*weight2
def fixDetectorMap(detMap):
base = detMap
distortion = None
if hasattr(detMap, "getBase"):
base = detMap.getBase()
distortion = detMap.getDistortion()
fibers = FiberIds()
isEngFiber = np.isin(detMap.fiberId, fibers.fiberId[fibers.scienceFiberId == fibers.ENGINEERING])
engFibers = detMap.fiberId[isEngFiber]
scienceFibers = detMap.fiberId[~isEngFiber]
for fiberId in engFibers:
lowIndex, highIndex = np.argpartition(np.abs(scienceFibers - fiberId), [0, 1])[:2]
low = scienceFibers[lowIndex]
high = scienceFibers[highIndex]
xCenterKnots = interpolate(fiberId, low, high, base.getXCenterSpline(low).getX(), base.getXCenterSpline(high).getX())
xCenterValues = interpolate(fiberId, low, high, base.getXCenterSpline(low).getY(), base.getXCenterSpline(high).getY())
wavelengthKnots = interpolate(fiberId, low, high, base.getWavelengthSpline(low).getX(), base.getWavelengthSpline(high).getX())
wavelengthValues = interpolate(fiberId, low, high, base.getWavelengthSpline(low).getY(), base.getWavelengthSpline(high).getY())
base.setXCenter(fiberId, xCenterKnots, xCenterValues)
base.setWavelength(fiberId, wavelengthKnots, wavelengthValues)
if distortion is None:
return base
return type(detMap)(base, distortion, detMap.visitInfo, detMap.metadata)
for filename in glob("/work/price/pipe2d-1268/CALIB-2023-07-v2/DETECTORMAP/pfsDetectorMap-*.fits"):
detMap = DetectorMap.readFits(filename)
detMap = fixDetectorMap(detMap)
detMap.writeFits(filename)
(lsst-scipipe-3.0.0) price@pfsa-usr02-gb:/work/drp $ cp -r /work/price/pipe2d-1268/CALIB-2023-07-v2 CALIB-2023-07-v3
(lsst-scipipe-3.0.0) price@pfsa-usr02-gb:/work/drp $ rm CALIB
(lsst-scipipe-3.0.0) price@pfsa-usr02-gb:/work/drp $ ln -s CALIB-2023-07-v3 CALIB
(lsst-scipipe-3.0.0) price@pfsa-usr02-gb:/work/drp/CALIB-2023-07-v3 $ rm -r DETECTORMAP-bad-r1-316/