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>