def from_fits_file(cls, fname, session): """ generate a """ data_file_object = DataFile.from_file(fname) fits_object = TemporaryFITSFile() fits_object.data_file = data_file_object session.add(fits_object) session.commit() niri_raw_image = cls() niri_raw_image.fits = fits_object niri_raw_image.object = base.Object.from_fits_object(fits_object) niri_raw_image.program = base.Program.from_fits_object(fits_object) niri_raw_image.observation_block = base.ObservationBlock.from_fits_object(fits_object) niri_raw_image.observation_class = base.ObservationClass.from_fits_object(fits_object) niri_raw_image.observation_type = base.ObservationType.from_fits_object(fits_object) niri_raw_image.instrument = base.Instrument.from_fits_object(fits_object) date_obs_str = '{0}T{1}'.format(fits_object.header['date-obs'], fits_object.header['time-obs']) niri_raw_image.mjd = time.Time(date_obs_str, scale='utc').mjd session.add(niri_raw_image) session.commit() return niri_raw_image
def from_fits_file(cls, fname, session): """ generate a """ data_file_object = DataFile.from_file(fname) fits_object = TemporaryFITSFile() fits_object.data_file = data_file_object session.add(fits_object) session.commit() gmos_raw_image = cls() gmos_raw_image.fits = fits_object gmos_raw_image.object = Object.from_fits_object(fits_object) gmos_raw_image.program = Program.from_fits_object(fits_object) gmos_raw_image.observation_block = ObservationBlock.from_fits_object(fits_object) gmos_raw_image.observation_class = ObservationClass.from_fits_object(fits_object) gmos_raw_image.observation_type = ObservationType.from_fits_object(fits_object) gmos_raw_image.instrument = Instrument.from_fits_object(fits_object) gmos_raw_image.instrument_setup = GMOSImagingInstrumentSetup.from_fits_file(fname, session) date_obs_str = '{0}T{1}'.format(fits_object.header['date-obs'], fits_object.header['time-obs']) gmos_raw_image.mjd = time.Time(date_obs_str, scale='utc').mjd session.add(gmos_raw_image) session.commit() return gmos_raw_image
def from_table(cls, table, slice, mos_point_source, relative_path='spectra', fname=None): """ class method to add a new spectrum given a table from the extracted spectrum. Parameters ---------- table: astropy.table.Table mos_point_source: MosPointSource relative_path: str relative path to work dir (default='spectra') fname: str filename of the extracted spectrum (default None) if None it automatically generates <raw_fits_fname>_slc<slc_id>_src<src_id> """ if not os.path.exists(os.path.join(cls.work_dir, relative_path)): logger.warn('Relative dir {0} does not exist for adding spectrum ' '- creating'.format(relative_path)) os.mkdir(os.path.join(cls.work_dir, relative_path)) if fname is None: fname = '{0}_slc{1}_src{2}.h5'.format( slice.science_set.science.fits.fname.replace('.fits', ''), slice.id, mos_point_source.id) full_fname = os.path.join(cls.work_dir, relative_path, fname) table.write(full_fname, path=cls.hdf5_path, format='hdf5', overwrite=True) data_file = DataFile.from_file(os.path.join(relative_path, fname)) spectrum = cls(mos_point_source_id=mos_point_source.id, slice_id=slice.id) spectrum.data_file = data_file return data_file, spectrum