コード例 #1
0
ファイル: imaging_raw.py プロジェクト: ThierrySN/geminiutil
    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
コード例 #2
0
ファイル: imaging_raw.py プロジェクト: ThierrySN/geminiutil
    def from_fits_file(cls, fits_file, session,
                       tilt_equivalency_threshold=0.001,
                       wavelength_equivalency_threshold=0.0001):
        header = fits.getheader(fits_file)

        filter1 = GMOSFilter.from_keyword(header['filter1'], session)
        filter2 = GMOSFilter.from_keyword(header['filter2'], session)

        grating = GMOSGrating.from_keyword(header['grating'], session)
        instrument = Instrument.from_keyword(header['instrume'], session)

        grating_central_wavelength = header['centwave']
        grating_slit_wavelength = header['grwlen']

        grating_tilt = header['grtilt']
        grating_order = header['grorder']


        #Checking if the same instrument setup already exists
        instrument_setup_query = session.query(cls).filter(
            cls.filter1_id==filter1.id, cls.filter2_id==filter2.id,
            cls.grating_id==grating.id, cls.instrument_id==instrument.id,
            func.abs(cls.grating_central_wavelength_value -
                     grating_central_wavelength)
            < wavelength_equivalency_threshold,
            func.abs(cls.grating_slit_wavelength_value -
                      grating_slit_wavelength) <
            wavelength_equivalency_threshold,
            func.abs(cls.grating_tilt_value -
                      grating_tilt) < tilt_equivalency_threshold)

        instrument_setup_object = instrument_setup_query.first()

        if instrument_setup_object is None:
            instrument_setup_object = cls(
                filter1_id=filter1.id,
                filter2_id=filter2.id,
                grating_id=grating.id,
                grating_central_wavelength_value=grating_central_wavelength,
                grating_slit_wavelength_value=grating_slit_wavelength,
                grating_tilt_value=grating_tilt,
                grating_order=grating_order,
                instrument_id=instrument.id)

            session.add(instrument_setup_object)
            session.commit()

        return instrument_setup_object