コード例 #1
0
ファイル: gti.py プロジェクト: registerrier/gammapy
    def from_time_intervals(cls, time_intervals, reference_time="2000-01-01"):
        """From list of time intervals

        Parameters
        ----------
        time_intervals : list of `~astropy.time.Time` objects
            Time intervals
        reference_time : `~astropy.time.Time`
            Reference time to use in GTI definition

        Returns
        -------
        gti : `GTI`
            GTI table.
        """
        reference_time = Time(reference_time)
        start = Time([_[0] for _ in time_intervals]) - reference_time
        stop = Time([_[1] for _ in time_intervals]) - reference_time
        meta = time_ref_to_dict(reference_time)
        table = Table({
            "START": start.to("s"),
            "STOP": stop.to("s")
        },
                      meta=meta)
        return cls(table=table)
コード例 #2
0
    def create(cls, start, stop, reference_time="2000-01-01"):
        """Creates a GTI table from start and stop times.

        Parameters
        ----------
        start : `~astropy.time.Time` or `~astropy.units.Quantity`
            Start times, if a quantity then w.r.t. reference time
        stop : `~astropy.time.Time` or `~astropy.units.Quantity`
            Stop times, if a quantity then w.r.t. reference time
        reference_time : `~astropy.time.Time`
            the reference time to use in GTI definition
        """
        reference_time = Time(reference_time)

        if isinstance(start, Time):
            start = (start - reference_time).to(u.s)

        if isinstance(stop, Time):
            stop = (stop - reference_time).to(u.s)

        start = Quantity(start, ndmin=1)
        stop = Quantity(stop, ndmin=1)
        meta = time_ref_to_dict(reference_time)
        table = Table({
            "START": start.to("s"),
            "STOP": stop.to("s")
        },
                      meta=meta)
        return cls(table)
コード例 #3
0
def test_time_ref_to_dict():
    time = Time("2001-01-01T00:00:00")

    d = time_ref_to_dict(time)

    assert set(d) == {"MJDREFI", "MJDREFF", "TIMESYS"}
    assert d["MJDREFI"] == 51910
    assert_allclose(d["MJDREFF"], 0.00074287036841269583)
    assert d["TIMESYS"] == "tt"
コード例 #4
0
def test_from_table_time_axis():
    t0 = Time("2006-02-12", scale="utc")
    t_min = np.linspace(0, 10, 10) * u.d
    t_max = t_min + 12 * u.h

    table = Table()
    table["TIME_MIN"] = t_min
    table["TIME_MAX"] = t_max
    table.meta.update(time_ref_to_dict(t0))
    table.meta["AXCOLS1"] = "TIME_MIN,TIME_MAX"

    axis = TimeMapAxis.from_table(table, format="gadf")

    assert axis.nbin == 10
    assert_allclose(axis.time_mid[0].mjd, 53778.25)
コード例 #5
0
def test_fixed_pointing_info_fixed_altaz():
    location = observatory_locations["cta_south"]
    start = Time("2020-11-01T03:00:00")
    stop = Time("2020-11-01T03:15:00")
    ref = Time("2020-11-01T00:00:00")
    pointing_icrs = SkyCoord(ra=83.28 * u.deg, dec=21.78 * u.deg)
    pointing_altaz = pointing_icrs.transform_to(
        AltAz(obstime=start, location=location))

    meta = time_ref_to_dict(ref)
    meta['TSTART'] = time_relative_to_ref(start, meta).to_value(u.s)
    meta['TSTOP'] = time_relative_to_ref(stop, meta).to_value(u.s)
    meta.update(earth_location_to_dict(location))
    meta["OBS_MODE"] = "DRIFT"
    meta["ALT_PNT"] = pointing_altaz.alt.deg
    meta["AZ_PNT"] = pointing_altaz.az.deg

    pointing = FixedPointingInfo(meta=meta)

    # not given, but assumed if missing
    assert pointing.mode == PointingMode.DRIFT
    assert pointing.fixed_icrs is None
    assert u.isclose(pointing.fixed_altaz.alt, pointing_altaz.alt)
    assert u.isclose(pointing.fixed_altaz.az, pointing_altaz.az)

    icrs = pointing.get_icrs(start)
    assert icrs.obstime == start
    assert isinstance(icrs.frame, ICRS)

    back_trafo = icrs.transform_to(pointing_altaz.frame)
    assert u.isclose(back_trafo.alt, pointing_altaz.alt)
    assert u.isclose(back_trafo.az, pointing_altaz.az)

    times = start + np.linspace(0, 1, 50) * (stop - start)
    icrs = pointing.get_icrs(times)
    assert len(icrs) == len(times)
    assert np.all(icrs.obstime == times)
    assert isinstance(icrs.frame, ICRS)

    back_trafo = icrs.transform_to(AltAz(location=location, obstime=times))
    assert u.isclose(back_trafo.alt, pointing_altaz.alt).all()
    assert u.isclose(back_trafo.az, pointing_altaz.az).all()

    assert np.all(u.isclose(pointing_altaz.alt, pointing.get_altaz(times).alt))
    assert np.all(u.isclose(pointing_altaz.az, pointing.get_altaz(times).az))
コード例 #6
0
ファイル: observations.py プロジェクト: mireianievas/gammapy
    def _get_obs_info(pointing, deadtime_fraction, time_start, time_stop,
                      reference_time, location):
        """Create obs info dict from in memory data"""
        obs_info = {
            "RA_PNT": pointing.icrs.ra.deg,
            "DEC_PNT": pointing.icrs.dec.deg,
            "DEADC": 1 - deadtime_fraction,
        }
        obs_info.update(time_ref_to_dict(reference_time))
        obs_info['TSTART'] = time_relative_to_ref(time_start,
                                                  obs_info).to_value(u.s)
        obs_info['TSTOP'] = time_relative_to_ref(time_stop,
                                                 obs_info).to_value(u.s)

        if location is not None:
            obs_info.update(earth_location_to_dict(location))

        return obs_info
コード例 #7
0
def test_fixed_pointing_info_fixed_icrs():
    location = observatory_locations["cta_south"]
    start = Time("2020-11-01T03:00:00")
    stop = Time("2020-11-01T03:15:00")
    ref = Time("2020-11-01T00:00:00")
    pointing_icrs = SkyCoord(ra=83.28 * u.deg, dec=21.78 * u.deg)

    meta = time_ref_to_dict(ref)
    meta['TSTART'] = time_relative_to_ref(start, meta).to_value(u.s)
    meta['TSTOP'] = time_relative_to_ref(stop, meta).to_value(u.s)
    meta.update(earth_location_to_dict(location))
    meta["RA_PNT"] = pointing_icrs.ra.deg
    meta["DEC_PNT"] = pointing_icrs.dec.deg

    pointing = FixedPointingInfo(meta=meta)

    # not given, but assumed if missing
    assert pointing.mode == PointingMode.POINTING
    assert pointing.fixed_icrs == pointing_icrs
    assert pointing.fixed_altaz is None

    altaz = pointing.get_altaz(start)
    assert altaz.obstime == start
    assert isinstance(altaz.frame, AltAz)
    assert np.all(u.isclose(pointing_icrs.ra, pointing.get_icrs(start).ra))

    back_trafo = altaz.transform_to("icrs")
    assert u.isclose(back_trafo.ra, pointing_icrs.ra)
    assert u.isclose(back_trafo.dec, pointing_icrs.dec)

    times = start + np.linspace(0, 1, 50) * (stop - start)
    altaz = pointing.get_altaz(times)
    assert len(altaz) == len(times)
    assert np.all(altaz.obstime == times)
    assert isinstance(altaz.frame, AltAz)

    back_trafo = altaz.transform_to("icrs")
    assert u.isclose(back_trafo.ra, pointing_icrs.ra).all()
    assert u.isclose(back_trafo.dec, pointing_icrs.dec).all()
    assert np.all(u.isclose(pointing_icrs.ra, pointing.get_icrs(times).ra))
コード例 #8
0
    def setup_class(self):
        table = Table()
        table["RA"] = [0.0, 0.0, 0.0, 0.0, 10.0] * u.deg
        table["DEC"] = [0.0, 0.05, 0.9, 10.0, 10.0] * u.deg
        table["ENERGY"] = [1.0, 1.0, 1.5, 1.5, 10.0] * u.TeV
        table["OFFSET"] = [0.1, 0.1, 0.5, 1.0, 1.5] * u.deg

        table.meta["RA_PNT"] = 0 * u.deg
        table.meta["DEC_PNT"] = 0.5 * u.deg

        meta_obs = dict()
        meta_obs["RA_PNT"] = 0 * u.deg
        meta_obs["DEC_PNT"] = 0.5 * u.deg
        meta_obs["DEADC"] = 1

        meta = time_ref_to_dict("2010-01-01")
        gti_table = Table({"START": [1], "STOP": [3]}, meta=meta)
        gti = GTI(gti_table)

        self.observation = Observation(
            events=EventList(table), obs_info=meta_obs, gti=gti
        )
コード例 #9
0
    def create(cls, start, stop, reference_time="2000-01-01"):
        """Creates a GTI table from start and stop times.

        Parameters
        ----------
        start : `~astropy.units.Quantity`
            start times w.r.t. reference time
        stop : `~astropy.units.Quantity`
            stop times w.r.t. reference time
        reference_time : `~astropy.time.Time`
            the reference time to use in GTI definition
        """
        start = np.atleast_1d(Quantity(start))
        stop = np.atleast_1d(Quantity(stop))
        reference_time = Time(reference_time)
        meta = time_ref_to_dict(reference_time)
        table = Table({
            "START": start.to("s"),
            "STOP": stop.to("s")
        },
                      meta=meta)
        return cls(table)
コード例 #10
0
ファイル: test_utils.py プロジェクト: registerrier/gammapy
    def setup_class(self):
        self.observations = []
        for sign in [-1, 1]:
            events = Table()
            events["RA"] = [0.0, 0.0, 0.0, 0.0, 10.0] * u.deg
            events["DEC"] = sign * ([0.0, 0.05, 0.9, 10.0, 10.0] * u.deg)
            events["ENERGY"] = [1.0, 1.0, 1.5, 1.5, 10.0] * u.TeV
            events["OFFSET"] = [0.1, 0.1, 0.5, 1.0, 1.5] * u.deg


            obs_info = dict(
                RA_PNT=0 * u.deg,
                DEC_PNT=sign * 0.5 * u.deg,
                DEADC=1,
            )
            events.meta.update(obs_info)
            meta = time_ref_to_dict("2010-01-01")
            gti_table = Table({"START": [1], "STOP": [3]}, meta=meta)
            gti = GTI(gti_table)

            self.observations.append(Observation(
                events=EventList(events), obs_info=obs_info, gti=gti
            ))
コード例 #11
0
ファイル: test_spectrum.py プロジェクト: AtreyeeS/gammapy
def make_gti(times, time_ref="2010-01-01"):
    meta = time_ref_to_dict(time_ref)
    table = Table(times, meta=meta)
    return GTI(table)