{"id":50735199,"url":"https://github.com/TimeEval/TimeEval","last_synced_at":"2026-06-27T15:00:42.723Z","repository":{"id":43641680,"uuid":"436653339","full_name":"TimeEval/TimeEval","owner":"TimeEval","description":"Evaluation Tool for Anomaly Detection Algorithms on Time Series","archived":false,"fork":false,"pushed_at":"2026-04-27T11:24:22.000Z","size":26164,"stargazers_count":157,"open_issues_count":36,"forks_count":19,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-04-29T04:46:43.983Z","etag":null,"topics":["anomaly-detection","benchmark-framework","benchmarking","dask","dask-distributed","distributed","jupyter-notebooks","numpy","pandas","python3","time-series","time-series-analysis","time-series-anomaly-detection"],"latest_commit_sha":null,"homepage":"https://timeeval.readthedocs.io","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TimeEval.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-12-09T14:48:49.000Z","updated_at":"2026-04-22T04:53:45.000Z","dependencies_parsed_at":"2023-02-17T18:01:29.948Z","dependency_job_id":"f3bc4f20-de5f-4129-ab7e-f93c618b235c","html_url":"https://github.com/TimeEval/TimeEval","commit_stats":{"total_commits":782,"total_committers":10,"mean_commits":78.2,"dds":"0.42583120204603575","last_synced_commit":"c9cd80b3eef4bdb71c4f511ac744baf60b888099"},"previous_names":["timeeval/timeeval","hpi-information-systems/timeeval"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/TimeEval/TimeEval","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeEval%2FTimeEval","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeEval%2FTimeEval/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeEval%2FTimeEval/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeEval%2FTimeEval/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TimeEval","download_url":"https://codeload.github.com/TimeEval/TimeEval/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimeEval%2FTimeEval/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34857490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anomaly-detection","benchmark-framework","benchmarking","dask","dask-distributed","distributed","jupyter-notebooks","numpy","pandas","python3","time-series","time-series-analysis","time-series-anomaly-detection"],"created_at":"2026-06-10T13:00:22.926Z","updated_at":"2026-06-27T15:00:42.717Z","avatar_url":"https://github.com/TimeEval.png","language":"Jupyter Notebook","funding_links":[],"categories":["Benchmark Collections"],"sub_categories":["[TimeEval Dataset Collection](https://timeeval.github.io/evaluation-paper/notebooks/Datasets.html)"],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"100px\" src=\"https://github.com/TimeEval/TimeEval/raw/main/timeeval-icon.png\" alt=\"TimeEval logo\"/\u003e\n\u003ch1 align=\"center\"\u003eTimeEval\u003c/h1\u003e\n\u003cp\u003e\nEvaluation Tool for Anomaly Detection Algorithms on Time Series.\n\u003c/p\u003e\n\n[![CI](https://github.com/TimeEval/TimeEval/actions/workflows/build.yml/badge.svg)](https://github.com/TimeEval/TimeEval/actions/workflows/build.yml)\n[![Documentation Status](https://readthedocs.org/projects/timeeval/badge/?version=latest)](https://timeeval.readthedocs.io/en/latest/?badge=latest)\n[![codecov](https://codecov.io/gh/TimeEval/TimeEval/branch/main/graph/badge.svg?token=esrQJQmMQe)](https://codecov.io/gh/TimeEval/TimeEval)\n[![!black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![PyPI version](https://badge.fury.io/py/TimeEval.svg)](https://badge.fury.io/py/TimeEval)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n![python version 3.9|3.10|3.11|3.12](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)\n[![Downloads](https://pepy.tech/badge/timeeval)](https://pepy.tech/project/timeeval)\n\n\u003c/div\u003e\n\nSee [TimeEval Algorithms](https://github.com/TimeEval/TimeEval-algorithms) for algorithms that are compatible to this tool.\nThe algorithms in that repository are containerized and can be executed using the [`DockerAdapter`](./timeeval/adapters/docker.py) of TimeEval.\n\n\u003e If you use TimeEval, please consider [citing](#citation) our paper.\n\n📖 TimeEval's documentation is hosted at https://timeeval.readthedocs.io.\n\n## Features\n\n- Large integrated benchmark dataset collection with more than 700 datasets\n- Benchmark dataset interface to select datasets easily\n- Adapter architecture for algorithm integration\n  - **DockerAdapter**\n  - JarAdapter\n  - DistributedAdapter\n  - MultivarAdapter\n  - ... (add your own adapter)\n- Large collection of existing algorithm implementations (in [TimeEval Algorithms](https://github.com/TimeEval/TimeEval-algorithms) repository)\n- Automatic algorithm detection quality scoring using [AUC](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve)\n  (Area under the ROC curve, also _c-statistic_) or range-based metrics\n- Automatic timing of the algorithm execution (differentiates pre-, main-, and post-processing)\n- Distributed experiment execution\n- Output and logfile tracking for subsequent inspection\n\n## Installation\n\nTimeEval can be installed as a package or from source.\n\n\u003e :warning: **Attention!**\n\u003e\n\u003e Currently, TimeEval is tested **only on Linux and macOS** and relies on unixoid capabilities.\n\u003e On Windows, you can use TimeEval within [WSL](https://learn.microsoft.com/windows/wsl/install).\n\u003e If you want to use the provided detection algorithms, Docker is required.\n\n### Installation using `pip`\n\nBuilds of `TimeEval` are published to [PyPI](https://pypi.org/project/TimeEval/):\n\n#### Prerequisites\n\n- python \u003e= 3.9, \u003c 3.13\n\n  \u003e :warning: **Attention!**\n  \u003e\n  \u003e A dependency of TimeEval prevents us from supporting Python versions \u003e= 3.13:\n  \u003e `prts` is not updated and depends on `NumPy\u003c2.0.0`. However, there is no NumPy\n  \u003e version below `2.0.0` that supports `Python\u003e=3.13`.\n\n- pip \u003e= 20\n\n- Docker (for the anomaly detection algorithms)\n\n- (optional) `rsync` for distributed TimeEval\n\n#### Steps\n\nYou can use `pip` to install TimeEval from PyPI:\n\n```sh\npip install TimeEval\n```\n\n### Installation from source\n\n**tl;dr**\n\n```bash\ngit clone git@github.com:TimeEval/TimeEval.git\ncd timeeval/\nconda create -n timeeval python=3.9\nconda activate timeeval\npip install .\n```\n\n#### Prerequisites\n\nThe following tools are required to install TimeEval from source:\n\n- git\n- Python \u003e 3.9 and Pip (anaconda or miniconda is preferred)\n\n#### Steps\n\n1. Clone this repository using git and change into its root directory.\n\n2. Create a conda-environment and install all required dependencies:\n\n   ```sh\n   conda create -n timeeval python=3.9\n   conda activate timeeval\n   pip install .\n   ```\n\n3. If you want to make changes to TimeEval or run the tests, you need to install the development dependencies with: `pip install \".[ci]\"`.\n   The optional extra dependencies `\".[dev]\"` contains additional dependencies for the notebooks and scripts packaged with TimeEval.\n\n## Usage\n\nExample script:\n\n```python\nfrom pathlib import Path\nfrom typing import Dict, Any\n\nimport numpy as np\n\nfrom timeeval import TimeEval, DatasetManager, Algorithm, TrainingType, InputDimensionality\nfrom timeeval.adapters import FunctionAdapter\nfrom timeeval.algorithms import subsequence_if\nfrom timeeval.params import FixedParameters\n\n# Load dataset metadata\ndm = DatasetManager(Path(\"tests/example_data\"), create_if_missing=False)\n\n\n# Define algorithm\ndef my_algorithm(data: np.ndarray, args: Dict[str, Any]) -\u003e np.ndarray:\n    score_value = args.get(\"score_value\", 0)\n    return np.full_like(data, fill_value=score_value)\n\n\n# Select datasets and algorithms\ndatasets = dm.select()\ndatasets = datasets[-1:]\n# Add algorithms to evaluate...\nalgorithms = [\n    Algorithm(\n        name=\"MyAlgorithm\",\n        main=FunctionAdapter(my_algorithm),\n        data_as_file=False,\n        training_type=TrainingType.UNSUPERVISED,\n        input_dimensionality=InputDimensionality.UNIVARIATE,\n        param_config=FixedParameters({\"score_value\": 1.})\n    ),\n    subsequence_if(params=FixedParameters({\"n_trees\": 50}))\n]\ntimeeval = TimeEval(dm, datasets, algorithms)\n\n# execute evaluation\ntimeeval.run()\n# retrieve results\nprint(timeeval.get_results())\n```\n\n## Citation\n\nIf you use TimeEval in your project or research, please cite our demonstration paper:\n\n\u003e Phillip Wenig, Sebastian Schmidl, and Thorsten Papenbrock.\n\u003e TimeEval: A Benchmarking Toolkit for Time Series Anomaly Detection Algorithms. PVLDB, 15(12): 3678 - 3681, 2022.\n\u003e doi:[10.14778/3554821.3554873](https://doi.org/10.14778/3554821.3554873)\n\n```bibtex\n@article{WenigEtAl2022TimeEval,\n  title = {TimeEval: {{A}} Benchmarking Toolkit for Time Series Anomaly Detection Algorithms},\n  author = {Wenig, Phillip and Schmidl, Sebastian and Papenbrock, Thorsten},\n  date = {2022},\n  journaltitle = {Proceedings of the {{VLDB Endowment}} ({{PVLDB}})},\n  volume = {15},\n  number = {12},\n  pages = {3678--3681},\n  doi = {10.14778/3554821.3554873}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTimeEval%2FTimeEval","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTimeEval%2FTimeEval","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTimeEval%2FTimeEval/lists"}