def filterCrosstalkCalib(inCalib): """Apply valid constraints to the measured values. Any measured coefficient that is determined to be invalid is set to zero, and has the error set to nan. The validation is determined by checking that the measured coefficient is larger than the calculated standard error of the mean. Parameters ---------- inCalib : `lsst.ip.isr.CrosstalkCalib` Input calibration to filter. Returns ------- outCalib : `lsst.ip.isr.CrosstalkCalib` Filtered calibration. """ outCalib = CrosstalkCalib() outCalib.numAmps = inCalib.numAmps outCalib.coeffs = inCalib.coeffs outCalib.coeffs[~inCalib.coeffValid] = 0.0 outCalib.coeffErr = inCalib.coeffErr outCalib.coeffErr[~inCalib.coeffValid] = np.nan outCalib.coeffNum = inCalib.coeffNum outCalib.coeffValid = inCalib.coeffValid return outCalib
def testDirectAPI(self): """Test that individual function calls work""" config = MeasureCrosstalkTask.ConfigClass() measure = MeasureCrosstalkTask(config=config) ratios = measure.extractCrosstalkRatios(self.exposure, threshold=self.value - 1) coeff, coeffErr, coeffNum = measure.measureCrosstalkCoefficients( ratios) self.checkCoefficients(coeff, coeffErr, coeffNum) calib = CrosstalkCalib() calib.coeffs = coeff.transpose() calib.coeffErr = coeffErr.transpose() calib.coeffNum = coeffNum.transpose() calib.subtractCrosstalk(self.exposure, crosstalkCoeffs=coeff.transpose(), minPixelToMask=self.value - 1, crosstalkStr=self.crosstalkStr) self.checkSubtracted(self.exposure) outPath = tempfile.mktemp( ) if outputName is None else "{}-isrCrosstalk".format(outputName) outPath += '.yaml' calib.writeText(outPath)