Example #1
0
 def extract_spectrum(self):
     if not self.fit_params.get('model',False):
         popup = AlertDialog(text='Make sure you fit the trace centers first!')
         popup.open()
         return
     self.waiting.open()
     self.lamp = np.empty([2,2], dtype=np.float64)
     self.lamps = False
     if self.theapp.current_night.cals:
         self.lamp = self.theapp.current_night.cals if not self.current_flats \
             else im_divide(self.theapp.current_night.cals, self.current_flats)
         self.lamp = self.lamp[self.region[1]:self.region[3]+1,self.region[0]:self.region[2]+1]
         self.lamps = True
     t = Thread(target=self.extract_wrapper)
     t.start()
 def extract_spectrum(self):
     if not self.fit_params.get('model',False):
         popup = AlertDialog(text='Make sure you fit the trace centers first!')
         popup.open()
         return
     
     #need a calibration, too
     self.lamp = np.empty([2,2], dtype=np.float64)
     lamps = False
     if self.theapp.current_night.cals:
         self.lamp = self.theapp.current_night.cals if not self.current_flats \
             else im_divide(self.theapp.current_night.cals, self.current_flats)
         self.lamp = self.lamp[self.region[1]:self.region[3]+1,self.region[0]:self.region[2]+1]
         lamps = True
     
     #im1, im2 = [x for x in copy.deepcopy(self.theapp.extract_pairs[self.pair_index])]
     #im1.load(); im2.load()
     #im1.data_array = extract.fix_distortion(im1.data_array, pdistort)
     #im2.data_array = extract.fix_distortion(im2.data_array, ndistort)
     #self.tell = make_region(im1, im2, self.region, flat=self.current_flats, telluric=True)
     #self.pextract = extract(self.fit_params['pmodel'], self.extractregion, self.tell, 'pos', lamp = self.lamp)
     #self.nextract = extract(self.fit_params['nmodel'], self.extractregion, self.tell, 'neg', lamp = self.lamp)
     self.current_extraction.fit_trace(self.fit_params['model'], self.lamp, lamps=lamps, extract=True)
     #if self.lamp.size > 0:
     #    spectra, tellurics, lamps = self.current_extraction.extract(trace, 
     #                                                                self.lamp, 
     #                                                                False)
     #else:
     #    spectra, telluric = self.current_extraction.extract(trace, self.lamp, True)
     
     #write uncalibrated spectra to fits files (will update after calibration)
     h1, h2 = fits.Header(), fits.Header()
     fitsimage(self.current_extraction.file1, h1)
     #im1 = FitsImage(self.current_extraction.file1, load=False)
     pstub = os.path.join(self.paths['out'], 
                          re.sub('.fits','-ap%i',
                                 os.path.basename(self.current_extraction.file1)))#im1.fitsfile)
     ext = ('.fits','-sky.fits','-lamp.fits')
     #h = im1.header
     h1['EXREGX1'] = (self.current_extraction.region[0], 'extraction region coordinate X1')
     h1['EXREGY1'] = (self.current_extraction.region[1], 'extraction region coordinate Y1')
     h1['EXREGX2'] = (self.current_extraction.region[2], 'extraction region coordinate X2')
     h1['EXREGY2'] = (self.current_extraction.region[3], 'extraction region coordinate Y2')
     fitsimage(self.current_extraction.file2, h2)
     nstub = os.path.join(self.paths['out'], 
                          re.sub('.fits','-ap%i',
                                 os.path.basename(self.current_extraction.file2)))#im2.fitsfile)
     #h = im2.header
     h2['EXREGX1'] = (self.current_extraction.region[0], 'extraction region coordinate X1')
     h2['EXREGY1'] = (self.current_extraction.region[1], 'extraction region coordinate Y1')
     h2['EXREGX2'] = (self.current_extraction.region[2], 'extraction region coordinate X2')
     h2['EXREGY2'] = (self.current_extraction.region[3], 'extraction region coordinate Y2')
     
     for j, typ in enumerate(['spec', 'tell']+['lamp']*lamps):
         specs = self.current_extraction.extracts[typ]
         if len(specs.shape) == 1:
             if self.fit_params['model'][0][0] > 0:
                 fits.writeto((pstub+ext[j])%0, specs, header=h1)
             else:
                 fits.writeto((nstub+ext[j])%0, specs*-1., header=h2)
         else:
             specs = specs.T
             for i, ap in enumerate(specs):
                 if self.fit_params['model'][i][0] > 0:
                     fits.writeto((pstub+ext[j])%i, ap, header=h1)
                 else:
                     fits.writeto((nstub+ext[j])%i, ap*-1., header=h2)
     return