コード例 #1
0
    def createFromFITS(fitsfile,image_hdu='SKYMAP',energy_hdu='EBOUNDS'):
        """ """

        hdulist = pyfits.open(fitsfile)        

#        hdulist.info()

        header = hdulist[image_hdu].header
        v = hdulist[image_hdu].data
        coordsys = header.get('COORDSYS','GAL')            
        
        if image_hdu == 'SKYMAP':
            dtype = v.dtype[0]
            image_data = copy.deepcopy(v.view((dtype, len(v.dtype.names)))).T
        else:
            image_data = copy.deepcopy(v)
        #np.array(hdulist[image_hdu].data).astype(float)

        if energy_hdu == 'EBOUNDS':
            ebounds = hdulist[energy_hdu].data
            nbin = len(ebounds)        
            emin = ebounds[0][1]/1E3
            emax = ebounds[-1][2]/1E3
            delta = np.log10(emax/emin)/nbin
            energy_axis = Axis.create(np.log10(emin),np.log10(emax),nbin)
        elif energy_hdu == 'ENERGIES':
            energies = bintable_to_array(hdulist[energy_hdu].data)
            energy_axis = Axis.createFromArray(np.log10(energies))
        else:
            raise Exception('Unknown HDU name.')

        hp_axis = Axis.create(0,image_data.shape[1],image_data.shape[1])
        return HealpixSkyCube([energy_axis,hp_axis],1,image_data,
                              coordsys=coordsys)
コード例 #2
0
    def createFromFITS(fitsfile,ihdu=0):
        """ """
        hdu = pyfits.open(fitsfile)[ihdu]
        header = hdu.header

        if header['NAXIS'] == 3: return SkyCube.createFromFITS(fitsfile,ihdu)
        elif header['NAXIS'] == 2: return SkyImage.createFromFITS(fitsfile,ihdu)
        else:
            raise Exception('Wrong number of axes.')
コード例 #3
0
def stack_images(files,output_file,hdu_index=0):

    hdulist0 = None
    for i, f in enumerate(files):
        hdulist = pyfits.open(f)
        if i == 0: hdulist0 = hdulist
        else:
            hdulist0[hdu_index].data += hdulist[hdu_index].data
    hdulist0.writeto(output_file,clobber=True)
コード例 #4
0
    def createFromFITS(fitsfile,ihdu=0):
        
        hdulist = pyfits.open(fitsfile)        
        header = hdulist[ihdu].header
        wcs = pywcs.WCS(header,naxis=[1,2],relax=True)

        if hdulist[1].name == 'ENERGIES':
            v = bintable_to_array(hdulist[1].data)
            v = np.log10(v)
            energy_axis = Axis.createFromArray(v)
            axes = copy.deepcopy(FITSAxis.create_axes(header))
            axes[2]._crval = energy_axis.edges[0]
            axes[2]._delta = energy_axis.width[0]
            axes[2]._crpix = 0.0
        else:        
            axes = copy.deepcopy(FITSAxis.create_axes(header))
        return SkyCube(wcs,axes,
                       copy.deepcopy(hdulist[ihdu].data.astype(float).T))
コード例 #5
0
ファイル: fits_util.py プロジェクト: mahmoud-lsw/gammatools
    def createFromFITS(fitsfile,image_hdu='SKYMAP'):
        """ """

        hdulist = pyfits.open(fitsfile)        
        header = hdulist[image_hdu].header
        ebounds = hdulist['EBOUNDS'].data

        v = hdulist[image_hdu].data

        dtype = v.dtype[0]
        image_data = copy.deepcopy(v.view((dtype, len(v.dtype.names))))
        #np.array(hdulist[image_hdu].data).astype(float)
        
        nbin = len(ebounds)        
        emin = ebounds[0][1]/1E3
        emax = ebounds[-1][2]/1E3
        delta = np.log10(emax/emin)/nbin

        energy_axis = Axis.create(np.log10(emin),np.log10(emax),nbin)
        hp_axis = Axis.create(0,image_data.shape[0],image_data.shape[0])
        
        return HealpixSkyCube([energy_axis,hp_axis],1,image_data.T)
コード例 #6
0
    def createFromFITS(fitsfile, image_hdu='SKYMAP'):
        """ """

        hdulist = pyfits.open(fitsfile)
        header = hdulist[image_hdu].header
        ebounds = hdulist['EBOUNDS'].data

        v = hdulist[image_hdu].data

        dtype = v.dtype[0]
        image_data = copy.deepcopy(v.view((dtype, len(v.dtype.names))))
        #np.array(hdulist[image_hdu].data).astype(float)

        nbin = len(ebounds)
        emin = ebounds[0][1] / 1E3
        emax = ebounds[-1][2] / 1E3
        delta = np.log10(emax / emin) / nbin

        energy_axis = Axis.create(np.log10(emin), np.log10(emax), nbin)
        hp_axis = Axis.create(0, image_data.shape[0], image_data.shape[0])

        return HealpixSkyCube([energy_axis, hp_axis], 1, image_data.T)
コード例 #7
0
ファイル: imagegui.py プロジェクト: woodmd/gammatools
    def __init__(self, files, hdu=0,*args, **kwargs):
        wx.Frame.__init__(self, *args,**kwargs)

        self.files = files
        self.hdulist = []
        self.show_image = []
        self.image_window = []

        for i, f in enumerate(files):
            self.hdulist.append(pyfits.open(f))
            self.show_image.append(True)
            self.image_window.append(ImagePanel(self,i))
            
        self.hdu = hdu
        self.slice = 0
        self.nbin = 1
        self._projx_width = 10.
        self._projx_center = 50.
        self._projy_width = 10.
        self._projy_center = 50.

        self.projx_window = PlotPanel(self,12,0,'LAT Projection','','')
        self.projy_window = PlotPanel(self,13,1,'LON Projection','','')

#        self.ctrl_slice = SliderGroup(self,'Slice',0,6,fn=self.update_slice)
        
        self.ctrl_slice = SpinCtrlGroup(self,'Slice',0,6,fn=self.update_slice)
        self.ctrl_nbins = SpinCtrlGroup(self,'NBins',0,6,fn=self.update_nbin)
        self.ctrl_hdu = SpinCtrlGroup(self,'HDU',0,6,fn=self.update_hdu)

#        self.spinctrl0 = wx.SpinCtrl(self, value='0')#, pos=(150, 75), size=(60, -1))
#        self.spinctrl0.SetRange(0,6)
        
 #       self.spinctrl0.Bind(wx.EVT_SPINCTRL, lambda evt: self.update_slice(evt.GetPosition()))


        
        self.ctrl_projx_center = SliderGroup(self,'X Center',0,100,
                                             self.update_projx_center,
                                             float_arg=True)

        self.ctrl_projx_width = SliderGroup(self,'X Width',0,100,
                                            self.update_projx_width,
                                            float_arg=True)

        
        self.ctrl_projy_center = SliderGroup(self,'Y Center',0,100,
                                             self.update_projy_center,
                                             float_arg=True)

        self.ctrl_projy_width = SliderGroup(self,'Y Width',0,100,
                                            self.update_projy_width,
                                            float_arg=True)
        
        self.ctrl_rebin = SpinCtrlGroup(self,'Rebin',1,4,
                                          fn=self.update_rebin)

        self.ctrl_hdu.init(0,len(self.hdulist[0])-1)

        sb0 = wx.StaticBox(self, label="Optional Attributes")
        sb0sizer = wx.StaticBoxSizer(sb0, wx.VERTICAL)

        sb1 = wx.StaticBox(self, label="Projection")
        sb1sizer = wx.StaticBoxSizer(sb1, wx.VERTICAL)

        sb2 = wx.StaticBox(self, label="Transform")
        sb2sizer = wx.StaticBoxSizer(sb2, wx.VERTICAL)

        sizer_main = wx.BoxSizer(wx.HORIZONTAL)

        sizer_plots = wx.BoxSizer(wx.HORIZONTAL)

        sizer_proj = wx.BoxSizer(wx.VERTICAL)
        self.sizer_image = wx.BoxSizer(wx.VERTICAL)
        
        sizer_ctrls = wx.BoxSizer(wx.VERTICAL)
#        sizer.Add(self.window, 1, wx.EXPAND)
        sizer_ctrls.Add(sb0sizer, 0, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)
        sizer_ctrls.Add(sb1sizer, 0, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)
        sizer_ctrls.Add(sb2sizer, 0, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)

        sb0sizer.Add(self.ctrl_slice.sizer, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)
        sb0sizer.Add(self.ctrl_nbins.sizer, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)
        sb0sizer.Add(self.ctrl_hdu.sizer, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)

        fn = []

        for i, w in enumerate(self.image_window):
            cb = wx.CheckBox(self, label="Image %i"%i)
            cb.Bind(wx.EVT_CHECKBOX, lambda t,i=i: self.toggle_image(t,i))
            cb.SetValue(True)

            sb0sizer.Add(cb, 0,
                         wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)

        # Projection Controls

        cb_proj_norm = wx.CheckBox(self, label="Normalize")
        cb_proj_norm.Bind(wx.EVT_CHECKBOX, self.toggle_proj_norm)
            
        sb1sizer.Add(self.ctrl_rebin.sizer, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)

        sb1sizer.Add(self.ctrl_projx_center.sizer, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)

        sb1sizer.Add(self.ctrl_projx_width.sizer, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)

        sb1sizer.Add(self.ctrl_projy_center.sizer, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)

        sb1sizer.Add(self.ctrl_projy_width.sizer, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)
        
        sb1sizer.Add(cb_proj_norm, 0,
                     wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)
        
        tc0 = wx.TextCtrl(self, -1, style=wx.TE_PROCESS_ENTER)

        bt0 = wx.Button(self, label="Update")
        bt0.Bind(wx.EVT_BUTTON, self.update)

        sizer_ctrls.Add(bt0, 0, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL, border=5)

        cb1 = wx.CheckBox(self, label="Log Scale")
        cb1.Bind(wx.EVT_CHECKBOX, self.toggle_yscale)

        cb0 = wx.CheckBox(self, label="Smooth")
        cb0.Bind(wx.EVT_CHECKBOX, self.update_smoothing)

        sb2sizer.Add(cb0,flag=wx.LEFT|wx.TOP, border=5)
        sb2sizer.Add(cb1,flag=wx.LEFT|wx.TOP, border=5)
        sb2sizer.Add(bt0,flag=wx.LEFT|wx.TOP, border=5)
        sb2sizer.Add(tc0,flag=wx.LEFT|wx.TOP, border=5)

        sizer_main.Add(sizer_ctrls,1, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL)
        sizer_main.Add(sizer_plots,3, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL)

        sizer_plots.Add(self.sizer_image,1, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL)
        sizer_plots.Add(sizer_proj,1, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL)

        for w in self.image_window:
            self.sizer_image.Add(w,1, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL)

        sizer_proj.Add(self.projx_window,1, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL)
        sizer_proj.Add(self.projy_window,1, wx.EXPAND | wx.ALIGN_CENTER | wx.ALL)

        self.SetSizer(sizer_main)

        self.update_hdu(self.hdu)
        self.update_slice(self.slice)
コード例 #8
0
        mask = np.isfinite(theta) & np.isfinite(theta)

        ipix = ang2pix(self._nside, theta[mask], phi[mask])

        map_data_ = self._data[ipix]
        map_data = np.empty(map_shape, dtype=map_data_.dtype)
        map_data.fill(np.nan)
        map_data.flat[mask] = map_data_

        return map_data


if __name__ == '__main__':

    fname = "LAB_fullvel.fits"
    f = pyfits.open(fname)
    header = f[1].header

    ordering = header["ordering"]
    nside = header["nside"]
    data = f[1].data["temperature"]

    healpix_data = HealpixData(nside, data.flat, nested=False)

    fits_name = "lambda_mollweide_halpha_fwhm06_0512.fits"
    f2 = pyfits.open(fits_name)

    d = healpix_data.get_projected_map(f2[1].header)

    #data2 = f2[1].data
    #header2 = f2[1].header
コード例 #9
0
 def createFromFITS(fitsfile,ihdu=0):
     
     hdulist = pyfits.open(fitsfile)
     return SkyImage.createFromFITS(hdulist[ihdu])
コード例 #10
0
ファイル: fits_util.py プロジェクト: mahmoud-lsw/gammatools
 def createFromFITS(fitsfile,ihdu=0):
     """ """
     hdulist = pyfits.open(fitsfile)
     return FITSImage.createFromHDU(hdulist[ihdu])
コード例 #11
0
 def createFromFITS(fitsfile, ihdu=0):
     """ """
     hdulist = pyfits.open(fitsfile)
     return FITSImage.createFromHDU(hdulist[ihdu])
コード例 #12
0
ファイル: healpix_helper.py プロジェクト: leejjoon/pywcsgrid2
        mask = np.isfinite(theta) & np.isfinite(theta)

        ipix = ang2pix(self._nside, theta[mask], phi[mask])

        map_data_ = self._data[ipix]
        map_data = np.empty(map_shape, dtype=map_data_.dtype)
        map_data.fill(np.nan)
        map_data.flat[mask] = map_data_

        return map_data


if __name__ == "__main__":

    fname = "LAB_fullvel.fits"
    f = pyfits.open(fname)
    header = f[1].header

    ordering = header["ordering"]
    nside = header["nside"]
    data = f[1].data["temperature"]

    healpix_data = HealpixData(nside, data.flat, nested=False)

    fits_name = "lambda_mollweide_halpha_fwhm06_0512.fits"
    f2 = pyfits.open(fits_name)

    d = healpix_data.get_projected_map(f2[1].header)

    # data2 = f2[1].data
    # header2 = f2[1].header