def read_qubicpack_fits(self,hdulist): ''' read a FITS file that was written by QubicPack argument is an hdulist after opening a FITS file and confirming that it really is a QubicPack fits file ''' self.datafiletype = 'QP_FITS' self.observer = hdulist[0].header['OBSERVER'] self.assign_obsdate(dt.datetime.strptime(hdulist[0].header['DATE-OBS'],'%Y-%m-%d %H:%M:%S UTC')) asic_idx = hdulist[0].header['ASIC'] - 1 self.QubicStudio_ip=hdulist[0].header['QUBIC-IP'] if 'TES_TEMP' in hdulist[0].header.keys(): self.temperature=hdulist[0].header['TES_TEMP'] else: self.temperature=None if 'END-OBS' in hdulist[0].header.keys(): self.endobs=dt.datetime.strptime(hdulist[0].header['END-OBS'],'%Y-%m-%d %H:%M:%S UTC') else: self.endobs=None if 'DET_NAME' in hdulist[0].header.keys(): self.assign_detector_name(hdulist[0].header['DET_NAME']) # in case detector name is undefined... self.guess_detector_name() self.asic_list[asic_idx] = qubicasic() self.asic_list[asic_idx].read_qubicpack_fits(hdulist) return
def read_qubicstudio_science_fits(self,hdu): ''' read the science data for an ASIC The HDU passed here as the argument should already have been identified as the Science HDU ''' self.printmsg('DEBUG: read_qubicstudio_science_fits object type is %s' % self.__object_type__,verbosity=3) asic_no = hdu.header['ASIC_NUM'] asic_ctr = asic_no - 1 qubicasic.verbosity = self.verbosity if self.asic_list[asic_ctr] is None: self.asic_list[asic_ctr] = qubicasic() self.asic_list[asic_ctr].read_qubicstudio_science_fits(hdu) obsdate = self.asic_list[asic_ctr].obsdate self.printmsg('ASIC%i Observation date: %s' % (asic_no,obsdate.strftime('%Y-%m-%d %H:%M:%S.%f'))) if self.obsdate is None: self.printmsg('DEBUG: setting obsdate which was None: %s' % obsdate.strftime('%Y-%m-%d %H:%M:%S.%f'),verbosity=3) self.obsdate = obsdate if self.obsdate>obsdate: self.obsdate = obsdate self.printmsg('Observation date is not the same between ASIC data. Using the earlier date',verbosity=3) endobs = self.asic_list[asic_ctr].endobs self.printmsg('ASIC%i Observation end date: %s' % (asic_no,endobs.strftime('%Y-%m-%d %H:%M:%S.%f'))) if self.endobs is None: self.printmsg('DEBUG: setting endobs which was None: %s' % endobs.strftime('%Y-%m-%d %H:%M:%S.%f'),verbosity=3) self.endobs = endobs if self.endobs<endobs: self.endobs = endobs self.printmsg('End Observation is not the same between ASIC data. Using the later date',verbosity=3) return