Package: torchtime
Benchmark time series data sets for PyTorchPyTorch data sets for supervised time series classification and prediction problems, including:All UEA/UCR classification repository data setsPhysioNet Challenge 2012 (in-hospital mortality)PhysioNet Challenge 2019 (sepsis prediction)A binary prediction variant of the 2019 PhysioNet ChallengeWhy usetorchtime?Saves time. You don't have to write your own PyTorch data classes.Better research. Use common, reproducible implementations of data sets for a level playing field when evaluating models.InstallationInstall PyTorch followed bytorchtime:$pipinstalltorchtimeor$condainstalltorchtime-cconda-forgeThere is currently no Windows build forconda. Feedback is welcome fromcondausers in particular.Getting startedData classes have a common API. Thesplitargument determines whether training ("train"), validation ("val") or test ("test") data are returned. The size of the splits are controlled with thetrain_propand (optional)val_proparguments.PhysioNet data setsThreePhysioNetdata sets are currently supported:torchtime.data.PhysioNet2012returns the 2012 challenge (in-hospital mortality)[link].torchtime.data.PhysioNet2019returns the 2019 challenge (sepsis prediction)[link].torchtime.data.PhysioNet2019Binaryreturns a binary prediction variant of the 2019 challenge.For example, to load training data for the 2012 challenge with a 70/30% training/validation split and create aDataLoaderfor model training:fromtorch.utils.dataimportDataLoaderfromtorchtime.dataimportPhysioNet2012physionet2012=PhysioNet2012(split="train",train_prop=0.7,)dataloader=DataLoader(physionet2012,batch_size=32)UEA/UCR repository data setsThetorchtime.data.UEAclass returns theUEA/UCR repositorydata set specified by thedatasetargument, for example:fromtorch.utils.dataimportDataLoaderfromtorchtime.dataimportUEAarrowhead=UEA(dataset="ArrowHead",split="train",train_prop=0.7,)dataloader=DataLoader(arrowhead,batch_size=32)Using the DataLoaderBatches are dictionaries of tensorsX,yandlength:Xare the time series data. The package follows thebatch firstconvention thereforeXhas shape (n,s,c) wherenis batch size,sis (longest) trajectory length andcis the number of channels. By default, the first channel is a time stamp.yare one-hot encoded labels of shape (n,l) wherelis the number of classes.lengthare the length of each trajectory (before padding if sequences are of irregular length) i.e. a tensor of shape (n).For example, ArrowHead is a univariate time series thereforeXhas two channels, the time stamp followed by the time series (c= 2). Each series has 251 observations (s= 251) and there are three classes (l= 3). For a batch size of 32:next_batch=next(iter(dataloader))next_batch["X"].shape# torch.Size([32, 251, 2])next_batch["y"].shape# torch.Size([32, 3])next_batch["length"].shape# torch.Size([32])SeeUsing DataLoadersfor more information.Advanced optionsMissing data can be imputed by settingimputetomean(replace with training data channel means) orforward(replace with previous observation). Alternatively a custom imputation function can be passed to theimputeargument.A time stamp (added by default), missing data mask and the time since previous observation can be appended with the boolean argumentstime,maskanddeltarespectively.Time series data are standardised using thestandardiseboolean argument.The location of cached data can be changed with thepathargument, for example to share a single cache location across projects.For reproducibility, an optional randomseedcan be specified.Missing data can be simulated using themissingargument to drop data at random from UEA/UCR data sets.See thetutorialsandAPIfor more information.Other resourcesIf you're looking for the TensorFlow equivalent for PhysioNet data sets trymedical_ts_datasets.Acknowledgementstorchtimeuses some of the data processing ideas in Kidger et al, 2020[1]and Che et al, 2018[2].This work is supported by the Engineering and Physical Sciences Research Council, Centre for Doctoral Training in Cloud Computing for Big Data, Newcastle University (grant number EP/L015358/1).CitingtorchtimeIf you use this software, please cite thepaper:@software{darke_torchtime_2022,
    author = Darke, Philip and Missier, Paolo and Bacardit, Jaume,
    title = "Benchmark time series data sets for {PyTorch} - the torchtime package",
    month = July,
    year = 2022,
    publisher={arXiv},
    doi = 10.48550/arXiv.2207.12503,
    url = https://doi.org/10.48550/arXiv.2207.12503,
}DOIs are also available for each version of the packagehere.ReferencesKidger, P, Morrill, J, Foster, J,et al. Neural Controlled Differential Equations for Irregular Time Series.arXiv2005.08926 (2020).[arXiv]Che, Z, Purushotham, S, Cho, K,et al. Recurrent Neural Networks for Multivariate Time Series with Missing Values.Sci Rep8, 6085 (2018).[doi]Silva, I, Moody, G, Scott, DJ,et al. Predicting In-Hospital Mortality of ICU Patients: The PhysioNet/Computing in Cardiology Challenge 2012.Comput Cardiol2012;39:245-248 (2010).[hdl]Reyna, M, Josef, C, Jeter, R,et al. Early Prediction of Sepsis From Clinical Data: The PhysioNet/Computing in Cardiology Challenge.Critical Care Medicine48 2: 210-217 (2019).[doi]Reyna, M, Josef, C, Jeter, R,et al. Early Prediction of Sepsis from Clinical Data: The PhysioNet/Computing in Cardiology Challenge 2019 (version 1.0.0).PhysioNet(2019).[doi]Goldberger, A, Amaral, L, Glass, L,et al. PhysioBank, PhysioToolkit, and PhysioNet: Components of a new research resource for complex physiologic signals.Circulation101 (23), pp. e215–e220 (2000).[doi]Löning, M, Bagnall, A, Ganesh, S,et al. sktime: A Unified Interface for Machine Learning with Time Series.Workshop on Systems for ML at NeurIPS 2019(2019).[doi]Löning, M, Bagnall, A, Middlehurst, M,et al. alan-turing-institute/sktime: v0.10.1 (v0.10.1).Zenodo(2022).[doi]LicenseReleased under the MIT license.