Time chunks¶
- class weatherbenchX.time_chunks.TimeChunks(init_times: ndarray, lead_times: ndarray | slice, init_time_chunk_size: int | None = None, lead_time_chunk_size: int | None = None)[source]¶
Iterable defining chunks in init and lead time.
Init.
- Parameters:
init_times – Numpy array of init_times (dtype: np.datetime64).
lead_times – To specify exact lead times, array of np.timedelta64. For a lead_time interval, specify slice of np.timedelta64’s. End point is inclusive following pandas/xarray conventions. start and stop are mandatory for slice. step parameter is not used.
init_time_chunk_size – Chunk size in init_time dimension. None or zero specifies a single chunk (default).
lead_time_chunk_size – Chunk size in lead_time dimension. None or zero specifies a single chunk (default). Must be None in the case of a single lead_time slice.
Iterator returns tuples of (init_times, lead_times) chunks. The chunks are products of the individual init_times and lead_times chunks. See example below.
init_time is an array of np.datetime64’s. For exact lead times, lead_time is an array of np.timedelta64’s. For lead time intervals, lead_time is a slice indicating start and stop as np.timedelta64’s.
- Example 1: Exact lead times
>>> from weatherbenchX import time_chunks >>> init_times = np.arange( >>> '2020-01-01T00', >>> '2020-01-02T00', >>> np.timedelta64(6, 'h'), >>> dtype="datetime64" >>> ) >>> lead_times = np.arange(0, 18, 6, dtype='timedelta64[h]') >>> times = time_chunks.TimeChunks( >>> init_times, >>> lead_times, >>> init_time_chunk_size=2, >>> lead_time_chunk_size=2 >>> ) >>> list(times) [(array(['2020-01-01T00', '2020-01-01T06'], dtype='datetime64[h]'), array([0, 6], dtype='timedelta64[h]')), (array(['2020-01-01T00', '2020-01-01T06'], dtype='datetime64[h]'), array([12], dtype='timedelta64[h]')), (array(['2020-01-01T12', '2020-01-01T18'], dtype='datetime64[h]'), array([0, 6], dtype='timedelta64[h]')), (array(['2020-01-01T12', '2020-01-01T18'], dtype='datetime64[h]'), array([12], dtype='timedelta64[h]'))]
- Example 2: Lead time interval
>>> lead_times = slice(np.timedelta64(0), np.timedelta64(6, 'h')) >>> times = time_chunks.TimeChunks( >>> init_times, >>> lead_times, >>> init_time_chunk_size=2, >>> lead_time_chunk_size=None # Must be None for slice >>> ) >>> list(times) [(array(['2020-01-01T00', '2020-01-01T06'], dtype='datetime64[h]'), slice(numpy.timedelta64(0), numpy.timedelta64(6,'h'), None)), (array(['2020-01-01T12', '2020-01-01T18'], dtype='datetime64[h]'), slice(numpy.timedelta64(0), numpy.timedelta64(6,'h'), None))]