Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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()