Converting between Different Time Representations¶
In Accessing Times, we saw how to access the time columns/attributes of the |TimeSeries| and |BinnedTimeSeries| classes. Here we look in more detail at how to manipulate the resulting times.
Converting Times¶
Since the time column in time series is always a |Time| object, it is possible to use the usual attributes on |Time| to convert the time to different formats or scales.
Example¶
To get the times as modified Julian Dates from a minimal time series:
>>> from astropy import units as u
>>> from astropy.timeseries import TimeSeries
>>> ts = TimeSeries(time_start='2016-03-22T12:30:31', time_delta=3 * u.s,
... data={'flux': [1., 3., 4., 2., 4.]})
>>> ts.time.mjd
array([57469.52119213, 57469.52122685, 57469.52126157, 57469.5212963 ,
57469.52133102])
Or to convert the times to the Temps Atomique International (TAI) scale:
>>> ts.time.tai
<Time object: scale='tai' format='isot' value=['2016-03-22T12:31:07.000' '2016-03-22T12:31:10.000'
'2016-03-22T12:31:13.000' '2016-03-22T12:31:16.000'
'2016-03-22T12:31:19.000']>
To find the current time scale of the data, you can do:
>>> ts.time.scale
'utc'
See Time and Dates (astropy.time) for more documentation on how to access and convert times.
Formatting Times¶
Since the various time columns are |Time| objects, the default format and scale
to use for the display of the time series can be changed using the format
and scale
attributes.
Example¶
To change the display of the time series:
>>> ts.time.format = 'isot'
>>> ts
<TimeSeries length=5>
time flux
Time float64
----------------------- -------
2016-03-22T12:30:31.000 1.0
2016-03-22T12:30:34.000 3.0
2016-03-22T12:30:37.000 4.0
2016-03-22T12:30:40.000 2.0
2016-03-22T12:30:43.000 4.0
>>> ts.time.format = 'unix'
>>> ts
<TimeSeries length=5>
time flux
Time float64
------------ -------
1458649831.0 1.0
1458649834.0 3.0
1458649837.0 4.0
1458649840.0 2.0
1458649843.0 4.0
Times Relative to Other Times¶
In some cases, it can be useful to use relative rather than absolute times. This can be done by using the |TimeDelta| class instead of the |Time| class, for example, by subtracting a reference time from an existing |Time| object.
Example¶
To use a relative rather than an absolute time:
>>> ts_rel = TimeSeries(time=ts.time - ts.time[0])
>>> ts_rel
<TimeSeries length=5>
time
TimeDelta
----------------------
0.0
3.472222222222765e-05
6.94444444444553e-05
0.00010416666666657193
0.00013888888888879958
The |TimeDelta| values can be converted to a different time unit (e.g., second) using:
>>> ts_rel.time.to('second')
<Quantity [ 0., 3., 6., 9., 12.] s>