Home¶
Overview¶
startorch
is a Python library to generate synthetic time-series.
As the name suggest, startorch
relies mostly on PyTorch to generate the time series and to control
the randomness.
startorch
is built to be modular, flexible and extensible.
For example, it is easy to combine multiple core sequence generator to generate complex sequences.
The user is responsible to define the recipe to generate the time series.
Below show some generated sequences by startorch
where the values are sampled from different
distribution.
uniform | log-uniform |
sine wave | Wiener process |
Motivation¶
Collecting datasets to train Machine Learning models can be time consuming.
Another alternative is to use synthetic datasets.
startorch
provides modules to easily generate synthetic time series.
The user is responsible to define the recipe to generate the time series.
The following example shows how to generate a sequence where the values are sampled from a Normal
distribution.
from startorch.sequence import RandNormal
generator = RandNormal(mean=0.0, std=1.0)
batch = generator.generate(seq_len=128, batch_size=4)
It is possible to combine multiple generators to build a more complex generator. The example below shows how to build a generator that sums multiple the output of three sine wave generators.
from startorch.sequence import (
Add,
Arange,
Constant,
RandLogUniform,
RandUniform,
SineWave,
)
generator = Add(
(
SineWave(
value=Arange(),
frequency=Constant(RandLogUniform(low=0.01, high=0.1)),
phase=Constant(RandUniform(low=-1.0, high=1.0)),
amplitude=Constant(RandLogUniform(low=0.1, high=1.0)),
),
SineWave(
value=Arange(),
frequency=Constant(RandLogUniform(low=0.01, high=0.1)),
phase=Constant(RandUniform(low=-1.0, high=1.0)),
amplitude=Constant(RandLogUniform(low=0.1, high=1.0)),
),
SineWave(
value=Arange(),
frequency=Constant(RandLogUniform(low=0.01, high=0.1)),
phase=Constant(RandUniform(low=-1.0, high=1.0)),
amplitude=Constant(RandLogUniform(low=0.1, high=1.0)),
),
)
)
batch = generator.generate(seq_len=128, batch_size=4)
API stability¶
While startorch
is in development stage, no API is guaranteed to be stable from one
release to the next. In fact, it is very likely that the API will change multiple times before a
stable 1.0.0 release. In practice, this means that upgrading startorch
to a new version will
possibly break any code that was using the old version of startorch
.
License¶
startorch
is licensed under BSD 3-Clause "New" or "Revised" license available
in LICENSE file.