def sub_darks(self,data): for exp in data.keys(): inputlist = data[exp]['raw'] outputlist = [s[s.rfind('/')+1:s.find('.FIT')]+\ '_ds.fits'\ for s in inputlist] if self.darks[exp]['combined'] == None: self.gen_dark(exp) if len(inputlist) > 10: while len(inputlist) > 0: inputstring = ','.join(inputlist[:10]) outputstring = ','.join(outputlist[:10]) iraf.nhedit(inputstring,'FIBERPOS','"(ORIGIN)"','Fiber input position',add=True,addonly=True) iraf.imarith(inputstring,'-',\ self.darks[exp]['combined'],\ outputstring) data[exp]['ds'] += outputlist[:10] inputlist = inputlist[10:] outputlist = outputlist[10:] else: iraf.nhedit(','.join(inputlist),'FIBERPOS','"(ORIGIN)"','Fiber input position',add=True,addonly=True) iraf.imarith(','.join(inputlist),\ '-',\ self.darks[exp]['combined'],\ ','.join([s[s.rfind('/')+1:s.find('.FIT')]+\ '_ds.fits' for s in inputlist])) data[exp]['ds'] += outputlist
def uphead(self,mapping): if mapping == False: print "Warning: Input to output mapping not loaded correctly.\n"+\ "FITS headers will NOT be updated" return for fiber_pos in self.ratios.keys(): for filt in self.ratios[fiber_pos]['data'].keys(): outpos = mapping[fiber_pos] iraf.nhedit(self.ratios[fiber_pos]['data'][filt]['fiber']['final'],\ "OUTPOS",outpos,'Fiber output position',\ add=True,addonly=False,after='FIBERPOS') self.ratios[fiber_pos]['outpos'] = outpos
def uphead(self,mapping): if mapping == False: print "Warning: Input to output mapping not loaded correctly.\n" for fiber_pos in self.ratios.keys(): for filt in self.ratios[fiber_pos]['data'].keys(): try: outpos = mapping[fiber_pos] except TypeError: outpos = 'NA' iraf.nhedit(self.ratios[fiber_pos]['data'][filt]['fiber']['final'],\ "OUTPOS",outpos,'Fiber output position',\ add=True,addonly=False,after='FIBERPOS') self.ratios[fiber_pos]['outpos'] = outpos
def combine(self): iraf.imcombine.combine = self.datacombine iraf.imcombine.reject = self.datareject iraf.imcombine.lsigma = self.rejectpar for fiber_pos in self.ratios.keys(): for filt in self.ratios[fiber_pos]['data'].keys(): for ftype in self.ratios[fiber_pos]['data'][filt].keys(): name = self.ratios[fiber_pos]['data'][filt][ftype]['raw'][0] name = name[:name.rfind('.0')]+'.fits' mintime = min(self.ratios[fiber_pos]['data'][filt][ftype]['obstimes']) maxtime = max(self.ratios[fiber_pos]['data'][filt][ftype]['obstimes']) maxtime += float(self.ratios[fiber_pos]['data'][filt][ftype]['exptime']) iraf.imcombine(\ ','.join(self.ratios\ [fiber_pos]['data'][filt][ftype]['raw']),\ name) self.ratios[fiber_pos]['data'][filt][ftype]['final'] = name iraf.nhedit(name,'STARTIME',mintime,'Start time of first combined image',addonly=True) iraf.nhedit(name,'ENDTIME',maxtime,'End time of last combined image',addonly=True)