-
Notifications
You must be signed in to change notification settings - Fork 29
/
time-1.2.0.yaml
299 lines (243 loc) · 8.27 KB
/
time-1.2.0.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
%YAML 1.1
---
$schema: "http://stsci.edu/schemas/yaml-schema/draft-01"
id: "http://stsci.edu/schemas/asdf/time/time-1.2.0"
title: Represents an instance in time.
description: |
A "time" is a single instant in time. It may explicitly specify the
way time is represented (the "format") and the "scale" which
specifies the offset and scaling relation of the unit of time.
Specific emphasis is placed on supporting time scales (e.g. UTC,
TAI, UT1, TDB) and time representations (e.g. JD, MJD, ISO 8601)
that are used in astronomy and required to calculate, e.g., sidereal
times and barycentric corrections.
Times may be represented as one of the following:
- an object, with explicit `value`, and optional `format`, `scale`
and `location`.
- a string, in which case the format is guessed from across
the unambiguous options (`iso`, `byear`, `jyear`, `yday`), and the
scale is hardcoded to `UTC`.
In either case, a single time tag may be used to represent an
n-dimensional array of times, using either an `ndarray` tag or
inline as (possibly nested) YAML lists. If YAML lists, the same
format must be used for all time values.
The precision of the numeric formats should only be assumed to be as
good as an IEEE-754 double precision (float64) value. If
higher-precision is required, the `iso` or `yday` format should be
used.
examples:
-
- Example ISO time
- asdf-standard-1.6.0
- |
!time/time-1.2.0 "2000-12-31T13:05:27.737"
-
- Example year, day-of-year and time format time
- asdf-standard-1.6.0
- |
!time/time-1.2.0 "2001:003:04:05:06.789"
-
- Example Besselian Epoch time
- asdf-standard-1.6.0
- |
!time/time-1.2.0 B2000.0
-
- Example Besselian Epoch time, equivalent to above
- asdf-standard-1.6.0
- |
!time/time-1.2.0
value: 2000.0
format: byear
-
- Example list of times
- asdf-standard-1.6.0
- |
!time/time-1.2.0
["2000-12-31T13:05:27.737", "2000-12-31T13:06:38.444"]
-
- Example of an array of times
- asdf-standard-1.6.0
- |
!time/time-1.2.0
value: !core/ndarray-1.1.0
data: [2000, 2001]
datatype: float64
format: jyear
-
- Example with a location
- asdf-standard-1.6.0
- |
!time/time-1.2.0
value: 2000.0
format: jyear
scale: tdb
location:
x: !unit/quantity-1.2.0
value: 6378100
unit: !unit/unit-1.0.0 m
y: !unit/quantity-1.2.0
value: 0
unit: !unit/unit-1.0.0 m
z: !unit/quantity-1.2.0
value: 0
unit: !unit/unit-1.0.0 m
definitions:
iso_time:
type: string
pattern: "[0-9]{4}-(0[1-9])|(1[0-2])-(0[1-9])|([1-2][0-9])|(3[0-1])[T ]([0-1][0-9])|(2[0-4]):[0-5][0-9]:[0-5][0-9](.[0-9]+)?"
byear:
type: string
pattern: "B[0-9]+(.[0-9]+)?"
jyear:
type: string
pattern: "J[0-9]+(.[0-9]+)?"
yday:
type: string
pattern: "[0-9]{4}:(00[1-9])|(0[1-9][0-9])|([1-2][0-9][0-9])|(3[0-5][0-9])|(36[0-5]):([0-1][0-9])|([0-1][0-9])|(2[0-4]):[0-5][0-9]:[0-5][0-9](.[0-9]+)?"
string_formats:
anyOf:
- $ref: "#/definitions/iso_time"
- $ref: "#/definitions/byear"
- $ref: "#/definitions/jyear"
- $ref: "#/definitions/yday"
array_of_strings:
type: array
items:
anyOf:
- $ref: "#/definitions/array_of_strings"
- $ref: "#/definitions/string_formats"
format:
description: |
The format of the time.
The supported formats are:
- `iso`: ISO 8601 compliant date-time format
`YYYY-MM-DDTHH:MM:SS.sss...`. For example,
`2000-01-01 00:00:00.000` is midnight on January 1,
2000. The `T` separating the date from the time
section is optional.
- `yday`: Year, day-of-year and time as
`YYYY:DOY:HH:MM:SS.sss...`. The day-of-year (DOY) goes
from 001 to 365 (366 in leap years). For example,
`2000:001:00:00:00.000` is midnight on January 1,
2000.
- `byear`: Besselian Epoch year, eg. `B1950.0`. The `B`
is optional if the `byear` format is explicitly
specified.
- `jyear`: Julian Epoch year, eg. `J2000.0`. The `J` is
optional if the `jyear` format is explicitly
specified.
- `decimalyear`: Time as a decimal year, with integer
values corresponding to midnight of the first day of
each year. For example 2000.5 corresponds to the ISO
time `2000-07-02 00:00:00`.
- `jd`: Julian Date time format. This represents the
number of days since the beginning of the Julian
Period. For example, 2451544.5 in `jd` is midnight on
January 1, 2000.
- `mjd`: Modified Julian Date time format. This
represents the number of days since midnight on
November 17, 1858. For example, 51544.0 in MJD is
midnight on January 1, 2000.
- `gps`: GPS time: seconds from 1980-01-06 00:00:00 UTC
For example, 630720013.0 is midnight on January 1,
2000.
- `unix`: Unix time: seconds from 1970-01-01 00:00:00
UTC. For example, 946684800.0 in Unix time is midnight
on January 1, 2000. [TODO: Astropy's definition of
UNIX time doesn't match POSIX's here. What should we
do for the purposes of ASDF?]
enum:
- byear
- cxcsec
- decimalyear
- gps
- iso
- jd
- jyear
- mjd
- unix
- unix_tai
- yday
other_format:
description: |
The other formats supported by astropy.time:
https://docs.astropy.org/en/latest/time/index.html#time-format
enum:
- byear_str
- datetime
- fits
- isot
- jyear_str
- plot_date
- ymdhms
- datetime64
anyOf:
- $ref: "#/definitions/string_formats"
- $ref: "#/definitions/array_of_strings"
- type: object
properties:
value:
description: |
The value(s) of the time.
anyOf:
- $ref: "#/definitions/string_formats"
- $ref: "#/definitions/array_of_strings"
- $ref: "../core/ndarray-1.1.0"
- type: number
format:
description: |
The format used to save the time in ASDF
If not provided, the the format should be guessed from the
string from among the following unambiguous options:
`iso`, `byear`, `jyear` and `yday`.
$ref: "#/definitions/format"
base_format:
description: |
The original format of the time object
oneOf:
- $ref: "#/definitions/format"
- $ref: "#/definitions/other_format"
scale:
description: |
The time scale (or time standard) is a specification for
measuring time: either the rate at which time passes; or
points in time; or both. See also [3] and [4].
These scales are defined in detail in [SOFA Time Scale and
Calendar Tools](http://www.iausofa.org/sofa_ts_c.pdf).
The supported time scales are:
- `utc`: Coordinated Universal Time (UTC). This is the
default time scale, except for `gps`, `unix`.
- `tai`: International Atomic Time (TAI).
- `tcb`: Barycentric Coordinate Time (TCB).
- `tcg`: Geocentric Coordinate Time (TCG).
- `tdb`: Barycentric Dynamical Time (TDB).
- `tt`: Terrestrial Time (TT).
- `ut1`: Universal Time (UT1).
enum:
- utc
- tai
- tcb
- tcg
- tdb
- tt
- ut1
location:
description: |
Specifies the observer location for scales that are
sensitive to observer location, currently only `tdb`. May
be specified either with geocentric coordinates (X, Y, Z)
with an optional unit or geodetic coordinates:
- `long`: longitude in degrees
- `lat`: in degrees
- `h`: optional height
type: object
properties:
x:
$ref: "../unit/quantity-1.2.0"
y:
$ref: "../unit/quantity-1.2.0"
z:
$ref: "../unit/quantity-1.2.0"
required: [x, y, z]
required: [value]
...