from herschel.pacs.spg.phot import PhotHelper from herschel.share.fltdyn.math import SexagesimalFormatter from herschel.ia.gui.plot import LayerRgbImage """ Load the red map """ cameraName = "red" fitsFile = dataDir + str(obsids[0]) + "-" + str(obsids[1]) + "_JScanamHPDP_" + cameraName + ".fits" redMap = FitsArchive().load(fitsFile) """ Load the blue map """ try: cameraName = "blue" fitsFile = dataDir + str(obsids[0]) + "-" + str(obsids[1]) + "_JScanamHPDP_" + cameraName + ".fits" blueMap = FitsArchive().load(fitsFile) except: cameraName = "green" fitsFile = dataDir + str(obsids[0]) + "-" + str(obsids[1]) + "_JScanamHPDP_" + cameraName + ".fits" blueMap = FitsArchive().load(fitsFile) """ Get the map center """ wcs = redMap.wcs raCenter = redMap.meta["ra"].value decCenter = redMap.meta["dec"].value center = wcs.getPixelCoordinates(raCenter, decCenter) """ Create the RGB map """ exponent = 0.45 multiplicativeFactor = 1.0 rgbMap = PhotHelper.createRgbMap(redMap, blueMap, maxSignal, exponent, multiplicativeFactor) """ Create the RGB layer with the color image """ rgbLayer = LayerRgbImage(rgbMap["red"].data, rgbMap["green"].data, rgbMap["blue"].data) """ Set the layer axes """ cdelt1 = wcs.cdelt1 * 60 cdelt2 = wcs.cdelt2 * 60 naxis1 = wcs.naxis1 naxis2 = wcs.naxis2 rgbLayer.xcdelt = cdelt1 rgbLayer.ycdelt = cdelt2 rgbLayer.xcrpix = center[1] rgbLayer.ycrpix = center[0] rgbLayer.xcrval = 0 rgbLayer.ycrval = 0 """ Create the plot """ p = PlotXY(False) p.setPlotSize(4.0, 4.0 * abs((naxis2 * cdelt2)/(naxis1 * cdelt1))) p.addLayer(rgbLayer) """ Add the tile and subtitle """ raFormat = SexagesimalFormatter(SexagesimalFormatter.Mode.RA_HMS_LOWER) decFormat = SexagesimalFormatter(SexagesimalFormatter.Mode.DEC_DMS_SYMBOL) raFormat.setDecimals(1) decFormat.setDecimals(0) raString = raFormat.formatDegrees(raCenter) decString = decFormat.formatDegrees(decCenter) p.setTitleText("JScanam HPDP") p.setSubtitleText("OBSIDs " + str(obsids)[1:-1] + "\n(RA, Dec) = (" + raString + "," + decString + ") (J2000)") """ Change the plot axes """ p.xaxis.titleText = "Offset from center (arcmin)" p.yaxis.titleText = "Offset from center (arcmin)" xtick = p.xaxis.getTick() xtick.getLabel().setFontSize(11) xtick.setAutoAdjustNumber(False) xtick.setNumber(5) xtick.setMinorNumber(3) ytick = p.yaxis.getTick() ytick.getLabel().setFontSize(11) ytick.setAutoAdjustNumber(False) ytick.setNumber(5) ytick.setMinorNumber(3) p.xrange = [-(center[1] - 0.5) * cdelt1, (naxis1 - center[1] + 0.5)*cdelt1] p.yrange = [-(center[0] - 0.5) * cdelt2, (naxis2 - center[0] + 0.5)*cdelt2] """ Save the postcard """ p.setSize(2400, int(2400* abs((naxis2 * cdelt2)/(naxis1 * cdelt1)))) p.saveAsJPG(dataDir + str(obsids[0]) + "-" + str(obsids[1]) + "_JScanamHPDP_Postcard.jpg")