epodium / time_series_generator

Create synthetic time series data
Apache License 2.0
0 stars 0 forks source link

List possible alternatives / similar libraries here #24

Closed jspaaks closed 3 years ago

jspaaks commented 3 years ago
  1. http://libnoise.sourceforge.net/ and https://pypi.org/project/noiselib/
  2. http://python-acoustics.github.io/python-acoustics/ and https://github.com/python-acoustics/python-acoustics
  3. https://pypi.org/project/soothingsounds/ (colored noise generators)
  4. https://pypi.org/project/noisy/ and http://fridh.github.io/noisy/ and https://github.com/FRidh/noisy colored noise
  5. https://pypi.org/project/perlin-noise/ (smooth, autocorrelated noise, n-dimensional)
  6. https://pypi.org/project/pyplnoise/ generate power law noise time series
  7. https://pypi.org/project/noisify/ seems similar in spirit
  8. https://pypi.org/project/colorednoise/ and https://github.com/felixpatzelt/colorednoise
  9. https://pypi.org/project/maracas/ additive and convolutive noise
  10. https://github.com/cetic/tsimulus-cli and https://tsimulus.readthedocs.io/en/latest/ (the library underneath is in Scala though)
sverhoeven commented 3 years ago
  1. https://pypi.org/project/pypda/ generate synthetic blood pressure waveforms
  2. https://mne.tools/dev/auto_examples/index.html#data-simulation MEG, EEG analysis has simulation sub package
  3. https://github.com/ykang/gratis - GeneRAting TIme Series with diverse and controllable characteristics R package
  4. https://github.com/paulosalem/time-blender - A programmatic and compositional time series generator.
  5. https://github.com/sdv-dev/SDV - Synthetic Data Generation for tabular, relational and time series data.
  6. https://github.com/MarwanDebbiche/tsgen
  7. https://ts.gluon.ai/examples/synthetic_data_generation_tutorial/tutorial.html - tsgluon - Probabilistic Time Series Modeling
eriktks commented 3 years ago
  1. https://github.com/TimeSynth/TimeSynth
  2. https://github.com/proceduralia/pytorch-GAN-timeseries
  3. https://github.com/namebrandon/time-series-gen
vincentvanhees commented 3 years ago
  1. https://cran.r-project.org/web/packages/fakeR/index.html, (vignette, GitHub)
  2. https://cran.r-project.org/web/packages/simts/index.html (vignette, GitHub)
  3. https://cran.r-project.org/web/packages/smooth/ (vignette, GitHub)

and possibly more from https://cran.r-project.org/web/views/TimeSeries.html

jspaaks commented 3 years ago

In Environmental Science, apparently there exists a subset of time series generators called Weather Generators, e.g.

eriktks commented 3 years ago

When you examine these packages, you could try to answer these questions. Use the documentation, if available. Installing and running the software might take too much time.

  1. What type of time series can the software generate?
  2. Can it generate noise?
  3. Can the software export time series? If so in what format?
  4. Is the software a package or a stand-alone entity?

It is fine if each package is evaluated by one person. If you add your question answers to this issue, other people can pick other packages so that we check as many of them as possible.

eriktks commented 3 years ago

https://github.com/epodium/time_series_generator

  1. [x] types: box, cosine, exponential, gaussian, peak_exponential, triangle, wave
  2. [x] noise: yes (gaussian, random walk)
  3. [x] export: no
  4. [x] software shape: package (Python)
  5. [x] other: import format: json of yaml; skipped tests involving mcfly
eriktks commented 3 years ago

https://github.com/cetic/TSimulus

  1. [x] types: time-period based (daily, weekly, monthly), sinus, constant, stochastic, binary, composite, conditional, and more
  2. [x] noise: yes (gaussian)
  3. [x] export: no
  4. [x] software shape: package (Scala; cli interface available)
  5. [x] other: none
eriktks commented 3 years ago

https://github.com/lhz1029/fakeR

  1. [x] types: none (only adds noise to input time series)
  2. [x] noise: yes (random)
  3. [ ] export: ?
  4. [x] software shape: package (R)
  5. [x] other: none
eriktks commented 3 years ago

https://support.goldsim.com/hc/en-us/articles/115012797188-WGEN-Weather-Simulator

  1. [x] types: Markov chain
  2. [x] noise: no explicit noise addition
  3. [x] export: likely yes
  4. [x] software shape: package (Goldsim; also in Fortran)
  5. [x] other: none
sverhoeven commented 3 years ago

https://pypi.org/project/pypda/

  1. [x] types: TriangGaussian
  2. [ ] noise: no explicit noise addition
  3. [ ] export: no
  4. [x] software shape: package (Python)
  5. [x] other: composition using +
eriktks commented 3 years ago

https://github.com/namebrandon/time-series-gen

  1. [x] types: noise
  2. [x] noise: yes
  3. [ ] export: ?
  4. [x] software shape: package (Python; requires AWS)
  5. [x] other: none
eriktks commented 3 years ago

https://github.com/proceduralia/pytorch-GAN-timeseries

  1. [x] types: none, learns model from examples with GAN (neural network)
  2. [x] noise: no explicit noise addition
  3. [ ] export: ?
  4. [x] software shape: stand-alone (Python)
  5. [x] other: none
sverhoeven commented 3 years ago

https://github.com/mne-tools/mne-python.git

  1. [x] types: real data templates and Python function
  2. [x] noise: ECG, blink (EOG) noise, multivariate Gaussian
  3. [x] export: FIF file format from Neuromag
  4. [x] software shape: package (Python)
  5. [x] other: specialized for human neurophysiological data + sample data from https://osf.io/
eriktks commented 3 years ago

https://github.com/TimeSynth/TimeSynth

  1. [x] types: sinus, Gaussian, constant, exponential, quadratic, linear, nonlinear
  2. [x] noise: yes (white noise, red noise)
  3. [ ] export: ?
  4. [x] software shape: package (Python)
  5. [x] other: none
eriktks commented 3 years ago

https://github.com/fjxmlzn/DoppelGANger

  1. [x] types: none, learns model from examples with GAN (neural network)
  2. [x] noise: probably not
  3. [x] export: yes
  4. [x] software shape: stand-alone (Python)
  5. [x] other: seems like state-of-the-art for synthetic time series generation from examples
sverhoeven commented 3 years ago

https://github.com/paulosalem/time-blender - A programmatic and compositional time series generator.

  1. [x] types: from economic models, random/deterministic/coordination events
  2. [x] noise: by adding events
  3. [x] export: Whatever Pandas data frame can write
  4. [x] software shape: Package (Python)
  5. [x] other:
sverhoeven commented 3 years ago

https://github.com/sdv-dev/SDV - Synthetic Data Generation for tabular, relational and time series data.

  1. [x] types: synthetic version of fitted dataset using PAR model
  2. [x] noise: whatever is in model
  3. [x] export: Whatever Pandas data frame can write
  4. [x] software shape: Package (Python)
  5. [x] other: ts gen is small part of package
sverhoeven commented 3 years ago

https://github.com/MarwanDebbiche/tsgen

  1. [x] types: affine, constant, cosine, sine
  2. [x] noise: random normally distributed
  3. [x] export: Whatever Pandas data frame can write
  4. [x] software shape: Package (Python)
  5. [x] other:
eriktks commented 3 years ago

https://github.com/sdv-dev/DeepEcho

  1. [x] types: none, learns model from examples with probabilistic model
  2. [x] noise: no
  3. [x] export: possible
  4. [x] software shape: package (Python)
  5. [x] other: none
jspaaks commented 3 years ago

GRATIS GeneRAting TIme Series with diverse and controllable properties- arXiv https://arxiv.org/pdf/1903.02787.pdf

eriktks commented 3 years ago

https://github.com/ykang/gratis

  1. [x] types: (P)ACF (partial auto correlation function), STL, shift and others
  2. [x] noise: no
  3. [x] export: yes
  4. [x] software shape: package (R) and web app: https://ebsmonash.shinyapps.io/tsgeneration/
  5. [x] other: none
fdiblen commented 3 years ago

After checking the options listed in this issue, I came up with this short list:

The feature list in #26 helped me to decide.

eriktks commented 3 years ago

SUMMARY

The software examined in this issue can be divided in four types:

  1. general pure noise generators
  2. general rule-based generators
  3. general generators from models which were trained on example time series
  4. domain-specific generators

The state-of-the-art in this field seems to be GAN-based generation (Generative Adversarial Network), type 3, which involves building machine learning models from example time series, as for example used by DoppelGANger.

However, this is quite different from the approach in our time_series_generator (type 2: rule-based generation). Systems similar to ours are: TSimulus, TimeSynth, Time Blender, Tsgen, Gratis, Tsgluon and MNE Python

sverhoeven commented 3 years ago

https://ts.gluon.ai/examples/synthetic_data_generation_tutorial/tutorial.html - tsgluon - Probabilistic Time Series Modeling

  1. [x] types: Constant, SmoothSeasonality, Trend, Dilated, BinaryMarkovChain, Anomalies, Changepoints
  2. [x] noise: Uniform, Gaussian
  3. [x] export: none, in-memory dict
  4. [x] software shape: Python package
  5. [x] other: not cross channel + Synthetic Data Generation is part of bigger deep-learning framework
eriktks commented 3 years ago

Issue migrated to sequgen/sequgen#17