import numpy as np
# create a datetime64 with a very precise time string
= np.datetime64('2022-01-01T15:12:11.172455')
time_1
# create a new time by adding some time to time_1
= time_1 + np.timedelta64(60, 's')
time_2
# get the number of hour separating them:
= (time_2 - time_1) / np.timedelta64(1, 'h') delta_1
Concepts
This page highlights a few core DASCore concepts.
Time
Any expression of time should use numpy time constructs, which include datetime64 and timedelta64.
For example:
DASCore provides two convenience functions for working with times:
to_datetime64 which tries to convert most types of inputs expressing date times to the proper numpy type. to_timedelta64 performs a similar function for timedeltas. For example:
import dascore as dc
# convert a time string to a datetime64 object.
= dc.to_datetime64('2022-01-01T12:12:12.1212')
time_1
# convert a timestamp (seconds from 1970-01-01) to a datetime object
= dc.to_datetime64(610243200) time_2
In general you should try to be as explicit as possible and use numpy’s time constructs directly, but the dascore time functions provide a helpful way to sanitize a variety of time inputs.
Dimension Selection
Most of DASCore’s processing methods can be applied along any dimension. For example, pass_filter can be applied along any dimension by passing a range and dimension name:
import dascore as dc
= dc.get_example_patch()
patch
= patch.pass_filter(time=(1, 5))
filtered_time = patch.pass_filter(distance=(0.1, 0.2)) filtered_distance
However, the meaning of the values (ie frequency vs period) depends on the function, so be sure to read the docs!
Data structures
DASCore has two key data structures; the Patch and the Spool. Both of these have their own tutorial pages.
The Patch
contains a contiguous block of N dimensional data and metadata. The Spool
manages a group of Patch
s. These can be in memory, on disk, or a remote resource.