https://github.com/timeeval/gutentag
GutenTAG is an extensible tool to generate time series datasets with and without anomalies; integrated with TimeEval.
https://github.com/timeeval/gutentag
anomaly-detection dataset-generation datasets multivariate-timeseries time-series time-series-anomaly-detection univariate-timeseries
Last synced: 5 months ago
JSON representation
GutenTAG is an extensible tool to generate time series datasets with and without anomalies; integrated with TimeEval.
- Host: GitHub
- URL: https://github.com/timeeval/gutentag
- Owner: TimeEval
- License: mit
- Created: 2021-12-09T14:17:26.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-12-23T15:13:57.000Z (5 months ago)
- Last Synced: 2025-12-25T05:14:21.836Z (5 months ago)
- Topics: anomaly-detection, dataset-generation, datasets, multivariate-timeseries, time-series, time-series-anomaly-detection, univariate-timeseries
- Language: Python
- Homepage:
- Size: 1.75 MB
- Stars: 92
- Watchers: 8
- Forks: 15
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
A good Timeseries Anomaly Generator.
[](https://github.com/TimeEval/gutentag/actions/workflows/build.yml)
[](https://codecov.io/gh/TimeEval/gutentag)
[](https://github.com/psf/black)
[](https://badge.fury.io/py/timeeval-gutenTAG)
[](https://opensource.org/licenses/MIT)

[](https://pepy.tech/project/timeeval-gutentag)
GutenTAG is an extensible tool to generate time series datasets with and without anomalies.
A GutenTAG time series consists of a single (univariate) or multiple (multivariate) channels containing a base oscillation with different anomalies at different positions and of different kinds.
[](./doc/introduction/base-oscillations.md)
[](./doc/introduction/anomaly-types.md)
[](./doc/advanced-features.md)
[](./doc/usage.md)
## tl;dr
1. Install GutenTAG from [PyPI](https://pypi.org/project/timeeval-gutenTAG/):
```sh
pip install timeeval-gutenTAG
```
GutenTAG supports Python 3.9, 3.10, 3.11, 3.12, and 3.13; all other [requirements](./requirements.txt) are installed with the pip-call above.
2. Create a generation configuration file [`example-config.yaml`](./generation_configs/example-config.yaml) with the instructions to generate a single time series with two anomalies:
A _pattern_ anomaly in the middle and an _amplitude_ anomaly at the end of the series.
You can use the following content:
```yaml
timeseries:
- name: demo
length: 1000
base-oscillations:
- kind: sine
frequency: 4.0
amplitude: 1.0
variance: 0.05
anomalies:
- position: middle
length: 50
kinds:
- kind: pattern
sinusoid_k: 10.0
- position: end
length: 10
kinds:
- kind: amplitude
amplitude_factor: 1.5
```
3. Execute GutenTAG with a seed and let it plot the time series:
```bash
gutenTAG --config-yaml example-config.yaml --seed 11 --no-save --plot
```
You should see the following time series:

## Documentation
GutenTAG's documentation can be found [here](doc/index.md).
## Citation
If you use GutenTAG in your project or research, please cite our demonstration paper:
> Phillip Wenig, Sebastian Schmidl, and Thorsten Papenbrock.
> TimeEval: A Benchmarking Toolkit for Time Series Anomaly Detection Algorithms. PVLDB, 15(12): 3678 - 3681, 2022.
> doi:[10.14778/3554821.3554873](https://doi.org/10.14778/3554821.3554873)
```bibtex
@article{WenigEtAl2022TimeEval,
title = {TimeEval: {{A}} Benchmarking Toolkit for Time Series Anomaly Detection Algorithms},
author = {Wenig, Phillip and Schmidl, Sebastian and Papenbrock, Thorsten},
date = {2022},
journaltitle = {Proceedings of the {{VLDB Endowment}} ({{PVLDB}})},
volume = {15},
number = {12},
pages = {3678 -- 3681},
doi = {10.14778/3554821.3554873}
}
```
## Contributing
We welcome contributions to GutenTAG.
If you have spotted an issue with GutenTAG or if you want to enhance it, please open an issue first.
See [Contributing](CONTRIBUTING.md) for details.