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)
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.')
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)
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))
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)
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)
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)
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
def createFromFITS(fitsfile,ihdu=0): hdulist = pyfits.open(fitsfile) return SkyImage.createFromFITS(hdulist[ihdu])
def createFromFITS(fitsfile,ihdu=0): """ """ hdulist = pyfits.open(fitsfile) return FITSImage.createFromHDU(hdulist[ihdu])
def createFromFITS(fitsfile, ihdu=0): """ """ hdulist = pyfits.open(fitsfile) return FITSImage.createFromHDU(hdulist[ihdu])
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