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 new_wcs(wcs, p): new_wcs = wcs.copy() new_wcs.header['CRPIX1'] = p[0] new_wcs.header['CRPIX2'] = p[1] cos_a = 1. #numpy.cos(p[2]) sin_a = 0. #numpy.sin(p[2]) new_wcs.header[ 'CD1_1'] = wcs.header['CD1_1'] * cos_a + wcs.header['CD1_2'] * sin_a new_wcs.header[ 'CD1_2'] = wcs.header['CD1_2'] * cos_a - wcs.header['CD1_1'] * sin_a new_wcs.header[ 'CD2_1'] = wcs.header['CD2_1'] * cos_a + wcs.header['CD2_2'] * sin_a new_wcs.header[ 'CD2_2'] = wcs.header['CD2_2'] * cos_a - wcs.header['CD2_1'] * sin_a new_wcs.updateFromHeader() return new_wcs
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