Skip to content

brendanjohnharris/TimeseriesTools.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

334 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TimeseriesTools

Dev Build Status Coverage DOI Aqua QA code style: runic

TimeseriesTools.jl is a package for analyzing and visualizing time-series data in Julia.

Features

  • 📈 Practical utilities for working with time series
  • 📊 Spectral analysis and visualization
  • 🌈 Beautiful plotting using Makie

Example Shadow Plot Example Shadow Plot

Warning

The latest releases (v0.8, v0.9) come with major breaking changes. Please be aware that TimeSeries(t, x) should now be written as Timeseries(x, t). Most package methods have been distributed across multiple sub-packages, listed below.

  1. Core package functionality moved to a minimal-dependency package TimeseriesBase.jl
  2. Plotting utilities have been moved to TimeseriesMakie.jl, with recipes updated for the latest breaking Makie version
  3. progressmap functionality has been moved to MoreMaps.jl
  4. Documentation has been moved to TimeseriesDocs.jl
  5. Surrogate methods have been moved to TimeseriesToolsSurrogates.jl

Feature spotlight:

  • One type for everything: values, time points, units, and metadata live in a single DimensionalData-backed array.
  • Type dispatch: regular, irregular, and multivariate series and spectra select the right algorithm automatically.
  • Units end to end: frequencies, power, and amplitudes stay dimensionally consistent via Unitful.
  • Spectra: power and energy spectra, plus wavelet spectrograms.
  • Data wrangling: interpolate, upsample, resample, downsample (anti-aliased), and impute.
  • Signal processing: bandpass/highpass/lowpass filters, Hilbert transform, instantaneous phase/frequency/amplitude.
  • Spike trains: point-process types, spike spectra, and the spike-time tiling coefficient.
  • Light by default: heavy analysis loads on demand through package extensions.

Installation

To install TimeseriesTools.jl, simply run the following command in your Julia REPL:

] add TimeseriesTools

Usage

Here's a quick example to get you started:

using TimeseriesTools, CairoMakie, TimeseriesTools.FFTW, Unitful

# Generate some quick brown noise
t = 0.005:0.005:1e5
x = colorednoise(t*u"s")*u"V" # ::AbstractTimeseries
plot(x[1:10000])
S = powerspectrum(x, 0.001)
p = plot(S)

Example Time-series Plot Example Spectrum Plot Example Time-series Plot Example Spectrum Plot

Note that an instance of the most basic type of this package, the AbstractTimeseries, can be generated with:

t = 0:0.01:1
x = sin.(t)
Timeseries(x, t)

Please see the documentation for further functionality.

Acknowledgements 🙏

TimeseriesTools.jl builds upon the excellent DimensionalData.jl package for handling dimensions and indexing in time-series data.

Happy analyzing! 🚀

About

A Julia package for working with time series (time-indexed arrays)

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages