def makeDetectorCrosstalk(dataDict, force=False): """Generate and write CrosstalkCalib from dictionary. Parameters ---------- dataDict : `dict` Dictionary from ``readFile`` containing crosstalk definition. """ dataDict['coeffs'] = dataDict['coeffs'].transpose() decamCT = ipIsr.crosstalk.CrosstalkCalib.fromDict(dataDict) # Supply a date prior to all data, to ensure universal use. decamCT.updateMetadata(setDate=False, CALIBDATE='1970-01-01T00:00:00') detName = dataDict['DETECTOR_NAME'] outDir = os.path.join(DecamMapper.getCrosstalkDir(), detName.lower()) if os.path.exists(outDir): if not force: print("Output directory %r exists; use --force to replace" % (outDir, )) sys.exit(1) else: os.makedirs(outDir) decamCT.writeText(f"{outDir}/1970-01-01T00:00:00.yaml")
description="Convert a DECam crosstalk file into LSST CrosstalkCalibs." ) parser.add_argument(dest="crosstalkInfile", help="DECam crosstalk file.") parser.add_argument("-v", "--verbose", action="store_true", help="Print data about each detector.") parser.add_argument("-f", "--force", action="store_true", help="Overwrite existing CrosstalkCalibs.") cmd = parser.parse_args() outDict = readFile(crosstalkInfile=cmd.crosstalkInfile) crosstalkDir = DecamMapper.getCrosstalkDir() if os.path.exists(crosstalkDir): if not cmd.force: print("Output directory %r exists; use --force to replace" % (crosstalkDir, )) sys.exit(1) print("Replacing data in crosstalk directory %r" % (crosstalkDir, )) else: print("Creating crosstalk directory %r" % (crosstalkDir, )) os.makedirs(crosstalkDir) for detName in outDict: if cmd.verbose: print( f"{detName}: has crosstalk? {outDict[detName]['hasCrosstalk']}" ) print(f"COEFF:\n{outDict[detName]['coeffs']}")