try:
import plotly.express as px
except ImportError:
print("\nThis script requires `plotly` (pip install plotly)\n")
try:
import pandas as pd
except ImportError:
print("\nThis script requires `pandas` (pip install pandas)\n")
from hifitime import Epoch, TimeSeries, Unit
if __name__ == "__main__":
ts = TimeSeries(
Epoch("1970-01-01 00:00:00 UTC"),
Epoch("2023-01-01 00:00:00 UTC"),
Unit.Day * 30.0,
True,
)
data = []
columns = [
"UTC Epoch",
"Δ TT (s)",
"Δ ET (s)",
"Δ TDB (s)",
"Δ UTC (s)",
"ET-TDB (s)",
]
for epoch in ts:
delta_utc = epoch.to_utc_duration() - epoch.to_tai_duration()
delta_tt = epoch.to_tt_duration() - epoch.to_tai_duration()
delta_tdb = epoch.to_tdb_duration_since_j1900() - epoch.to_tai_duration()
delta_et = epoch.to_et_duration_since_j1900() - epoch.to_tai_duration()
delta_et_tdb = delta_et - delta_tdb
pd_epoch = pd.to_datetime(str(epoch))
data.append(
[
pd_epoch,
delta_tt.to_seconds(),
delta_et.to_seconds(),
delta_tdb.to_seconds(),
delta_utc.to_seconds(),
delta_et_tdb.to_seconds(),
]
)
df = pd.DataFrame(data, columns=columns)
fig = px.line(
df,
x="UTC Epoch",
y=columns[1:-1],
title="Time scale deviation with respect to TAI",
)
fig.write_html("./target/time-scale-deviation.html")
fig.show()
fig = px.line(
df,
x="UTC Epoch",
y=columns[1:-2],
title="Time scale deviation with respect to TAI (excl. UTC)",
)
fig.write_html("./target/time-scale-deviation-no-utc.html")
fig.show()
fig = px.line(
df,
x="UTC Epoch",
y=columns[-1],
title="Time scale deviation of TDB and ET with respect to TAI",
)
fig.write_html("./target/time-scale-deviation-tdb-et.html")
fig.show()