Time Series Objects

All datasets at the Channel level are represented by mth5.timeseries.ChannelTS objects. The mth5.timeseries.ChannelTS are based on xarray.DataArray objects. This way memory usage is minimal because xarray is lazy and only uses what is called for. Another benefit is that metadata can directly accompany the data. Currently the model is that all metadata are input into a mth5.metadata.Base object to be validated first and then the xarray.DataArray can be updated. This is not automated at this point so the user just needs to use the function update_xarray_metadata when metadata values are changed. Another advantage of using xarray is that the time series data are indexed by time making it easier to align, trim, extract, sort, etc.

All run datasets are represented by mth5.timeseries.RunTS objects, which are based on xarray.DataSet which is a collection of xarray.DataArray objects. The benefits of using xarray are that many of the methods such as aligning, indexing, sorting are already developed and are robust. Therefore the useability is easier without more coding.

Another reason why xarray was picked as the basis for representing the data is that it works seamlessly with other programs like Dask for parallel computing, and plotting tools like hvplot.