def liteMapFromDataAndWCS(data, wcs): """ @brief Given a np array: data and a astLib.astWCS instance: wcs creates a liteMap """ ltmap = liteMap() ltmap.data = data.copy() [ltmap.Ny, ltmap.Nx] = ltmap.data.shape ltmap.wcs = wcs.copy() ltmap.header = ltmap.wcs.header #[ltmap.x0,ltmap.x1,ltmap.y0,ltmap.y1] = wcs.getImageMinMaxWCSCoords() ltmap.x0, ltmap.y0 = wcs.pix2wcs(0, 0) ltmap.x1, ltmap.y1 = wcs.pix2wcs(ltmap.Nx - 1, ltmap.Ny - 1) if ltmap.x0 > ltmap.x1: ltmap.pixScaleX = np.abs(ltmap.x1-ltmap.x0)/ltmap.Nx*np.pi/180.\ *np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) else: ltmap.pixScaleX = np.abs((360.-ltmap.x1)+ltmap.x0)/ltmap.Nx*np.pi/180.\ *np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) ltmap.pixScaleY = np.abs(ltmap.y1 - ltmap.y0) / ltmap.Ny * np.pi / 180. #print 0.5*(ltmap.y0+ltmap.y1) ltmap.area = ltmap.Nx * ltmap.Ny * ltmap.pixScaleX * ltmap.pixScaleY * ( 180. / np.pi)**2 #print np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) flTrace.issue("flipper.liteMap",1, "Map dimensions (Ny,Nx) %d %d"%\ (ltmap.Ny,ltmap.Nx)) flTrace.issue("flipper.liteMap",1, "pixel scales Y, X (degrees) %f %f"%\ (ltmap.pixScaleY*180./np.pi,ltmap.pixScaleX*180./np.pi)) return ltmap
def liteMapFromDataAndWCS(data,wcs): """ @brief Given a np array: data and a astLib.astWCS instance: wcs creates a liteMap """ ltmap = liteMap() ltmap.data = data.copy() [ltmap.Ny,ltmap.Nx] = ltmap.data.shape ltmap.wcs = wcs.copy() ltmap.header = ltmap.wcs.header #[ltmap.x0,ltmap.x1,ltmap.y0,ltmap.y1] = wcs.getImageMinMaxWCSCoords() ltmap.x0,ltmap.y0 = wcs.pix2wcs(0,0) ltmap.x1,ltmap.y1 = wcs.pix2wcs(ltmap.Nx-1,ltmap.Ny-1) if ltmap.x0 > ltmap.x1: ltmap.pixScaleX = np.abs(ltmap.x1-ltmap.x0)/ltmap.Nx*np.pi/180.\ *np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) else: ltmap.pixScaleX = np.abs((360.-ltmap.x1)+ltmap.x0)/ltmap.Nx*np.pi/180.\ *np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) ltmap.pixScaleY = np.abs(ltmap.y1-ltmap.y0)/ltmap.Ny*np.pi/180. #print 0.5*(ltmap.y0+ltmap.y1) ltmap.area = ltmap.Nx*ltmap.Ny*ltmap.pixScaleX*ltmap.pixScaleY*(180./np.pi)**2 #print np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) flTrace.issue("flipper.liteMap",1, "Map dimensions (Ny,Nx) %d %d"%\ (ltmap.Ny,ltmap.Nx)) flTrace.issue("flipper.liteMap",1, "pixel scales Y, X (degrees) %f %f"%\ (ltmap.pixScaleY*180./np.pi,ltmap.pixScaleX*180./np.pi)) return ltmap
def liteMapFromFits(fileName, extension=0): """ @brief Reads in a FITS file and creates a liteMap object out of it. @param extension specify the FITS HDU where the map image is stored """ ltmap = liteMap() hdulist = pyfits.open(fileName) header = hdulist[extension].header flTrace.issue('flipper.liteMap', 3, "Map header \n %s" % header) ltmap.data = hdulist[extension].data.copy() [ltmap.Ny, ltmap.Nx] = ltmap.data.shape wcs = astLib.astWCS.WCS(fileName, extensionName=extension) ltmap.wcs = wcs.copy() ltmap.header = ltmap.wcs.header ltmap.x0, ltmap.y0 = wcs.pix2wcs(0, 0) ltmap.x1, ltmap.y1 = wcs.pix2wcs(ltmap.Nx - 1, ltmap.Ny - 1) #[ltmap.x0,ltmap.x1,ltmap.y0,ltmap.y1] = wcs.getImageMinMaxWCSCoords() if ltmap.x0 > ltmap.x1: ltmap.pixScaleX = np.abs(ltmap.x1-ltmap.x0)/ltmap.Nx*np.pi/180.\ *np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) else: ltmap.pixScaleX = np.abs((360.-ltmap.x1)+ltmap.x0)/ltmap.Nx*np.pi/180.\ *np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) ltmap.pixScaleY = np.abs(ltmap.y1 - ltmap.y0) / ltmap.Ny * np.pi / 180. #print 0.5*(ltmap.y0+ltmap.y1) ltmap.area = ltmap.Nx * ltmap.Ny * ltmap.pixScaleX * ltmap.pixScaleY * ( 180. / np.pi)**2 #print np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) flTrace.issue('flipper.liteMap', 1, 'Reading file %s' % (fileName)) flTrace.issue("flipper.liteMap",1, "Map dimensions (Ny,Nx) %d %d" %\ (ltmap.Ny,ltmap.Nx)) flTrace.issue("flipper.liteMap",1, "pixel scales Y, X (degrees) %f %f" %\ (ltmap.pixScaleY*180./np.pi,ltmap.pixScaleX*180./np.pi)) return ltmap
def liteMapFromFits(fileName,extension=0): """ @brief Reads in a FITS file and creates a liteMap object out of it. @param extension specify the FITS HDU where the map image is stored """ ltmap = liteMap() hdulist = pyfits.open(fileName) header = hdulist[extension].header flTrace.issue('flipper.liteMap',3,"Map header \n %s"%header) ltmap.data = hdulist[extension].data.copy() [ltmap.Ny,ltmap.Nx] = ltmap.data.shape wcs = astLib.astWCS.WCS(fileName,extensionName = extension) ltmap.wcs = wcs.copy() ltmap.header = ltmap.wcs.header ltmap.x0,ltmap.y0 = wcs.pix2wcs(0,0) ltmap.x1,ltmap.y1 = wcs.pix2wcs(ltmap.Nx-1,ltmap.Ny-1) #[ltmap.x0,ltmap.x1,ltmap.y0,ltmap.y1] = wcs.getImageMinMaxWCSCoords() if ltmap.x0 > ltmap.x1: ltmap.pixScaleX = np.abs(ltmap.x1-ltmap.x0)/ltmap.Nx*np.pi/180.\ *np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) else: ltmap.pixScaleX = np.abs((360.-ltmap.x1)+ltmap.x0)/ltmap.Nx*np.pi/180.\ *np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) ltmap.pixScaleY = np.abs(ltmap.y1-ltmap.y0)/ltmap.Ny*np.pi/180. #print 0.5*(ltmap.y0+ltmap.y1) ltmap.area = ltmap.Nx*ltmap.Ny*ltmap.pixScaleX*ltmap.pixScaleY*(180./np.pi)**2 #print np.cos(np.pi/180.*0.5*(ltmap.y0+ltmap.y1)) flTrace.issue('flipper.liteMap',1,'Reading file %s' % (fileName)) flTrace.issue("flipper.liteMap",1, "Map dimensions (Ny,Nx) %d %d" %\ (ltmap.Ny,ltmap.Nx)) flTrace.issue("flipper.liteMap",1, "pixel scales Y, X (degrees) %f %f" %\ (ltmap.pixScaleY*180./np.pi,ltmap.pixScaleX*180./np.pi)) return ltmap
def wcs_fit(p, wcs, headers, xy, radec, cos_dec): # update the WCS for i, key in enumerate(headers): wcs.header[key] = p[i] wcs.updateFromHeader() ra_dec = numpy.array(wcs.pix2wcs(xy[:, 0], xy[:, 1])) # _wcs = new_wcs(wcs, p) # ra_dec = numpy.array(_wcs.pix2wcs(xy[:,0], xy[:,1])) # print "iteration: %d %d %f" % (p[0], p[1], numpy.degrees(p[2])) diff = (radec - ra_dec) * [cos_dec, 1.0] return diff.flatten()