{"id":13473483,"url":"https://github.com/sintel-dev/Orion","last_synced_at":"2025-03-26T19:34:13.636Z","repository":{"id":38080856,"uuid":"142140875","full_name":"sintel-dev/Orion","owner":"sintel-dev","description":"A machine learning library for detecting anomalies in signals. ","archived":false,"fork":false,"pushed_at":"2024-10-29T14:15:24.000Z","size":35320,"stargazers_count":1042,"open_issues_count":43,"forks_count":162,"subscribers_count":31,"default_branch":"master","last_synced_at":"2024-10-29T15:11:21.463Z","etag":null,"topics":["anomaly-detection","benchmarking","data-science","deep-learning","generative-adversarial-network","machine-learning","orion","signals","time-series","unsupervised-learning"],"latest_commit_sha":null,"homepage":"https://sintel.dev/Orion/","language":"Python","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/sintel-dev.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-24T10:08:58.000Z","updated_at":"2024-10-29T14:04:06.000Z","dependencies_parsed_at":"2023-10-16T11:08:12.746Z","dependency_job_id":"faaf8f3c-b28e-49ee-9d25-e169f23c2454","html_url":"https://github.com/sintel-dev/Orion","commit_stats":{"total_commits":472,"total_committers":17,"mean_commits":"27.764705882352942","dds":0.5338983050847458,"last_synced_commit":"e0149ae4e44511e848b4fd8d2a8ae3c230bff444"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sintel-dev%2FOrion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sintel-dev%2FOrion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sintel-dev%2FOrion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sintel-dev%2FOrion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sintel-dev","download_url":"https://codeload.github.com/sintel-dev/Orion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245722836,"owners_count":20661833,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","benchmarking","data-science","deep-learning","generative-adversarial-network","machine-learning","orion","signals","time-series","unsupervised-learning"],"created_at":"2024-07-31T16:01:04.085Z","updated_at":"2025-03-26T19:34:13.617Z","avatar_url":"https://github.com/sintel-dev.png","language":"Python","funding_links":[],"categories":["Python","AI for *Ops","Anomaly Detection Software"],"sub_categories":["Observability \u0026 Monitoring with AI"],"readme":"\u003cp align=\"left\"\u003e\n\u003cimg width=15% src=\"https://dai.lids.mit.edu/wp-content/uploads/2018/06/Logo_DAI_highres.png\" alt=“DAI-Lab” /\u003e\n\u003ci\u003eAn open source project from Data to AI Lab at MIT.\u003c/i\u003e\n\u003c/p\u003e\n\n\u003cp align=\"left\"\u003e\n\u003cimg width=20% src=\"https://dai.lids.mit.edu/wp-content/uploads/2018/08/orion.png\" alt=“Orion” /\u003e\n\u003c/p\u003e\n\n[![Development Status](https://img.shields.io/badge/Development%20Status-2%20--%20Pre--Alpha-yellow)](https://pypi.org/search/?c=Development+Status+%3A%3A+2+-+Pre-Alpha)\n[![Python](https://img.shields.io/badge/Python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11-blue)](https://badge.fury.io/py/orion-ml) \n[![PyPi Shield](https://img.shields.io/pypi/v/orion-ml.svg)](https://pypi.python.org/pypi/orion-ml)\n[![Tests](https://github.com/sintel-dev/Orion/workflows/Run%20Tests/badge.svg)](https://github.com/sintel-dev/Orion/actions?query=workflow%3A%22Run+Tests%22+branch%3Amaster)\n[![Downloads](https://pepy.tech/badge/orion-ml)](https://pepy.tech/project/orion-ml)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/sintel-dev/Orion/master?filepath=tutorials)\n\n# Orion\n\nA machine learning library for unsupervised time series anomaly detection.\n\n| Important Links                               |                                                                      |\n| --------------------------------------------- | -------------------------------------------------------------------- |\n| :computer: **[Website]**                      | Check out the Sintel Website for more information about the project. |\n| :book: **[Documentation]**                    | Quickstarts, User and Development Guides, and API Reference.         |\n| :star: **[Tutorials]**                        | Checkout our notebooks                                               |\n| :octocat: **[Repository]**                    | The link to the Github Repository of this library.                   |\n| :scroll: **[License]**                        | The repository is published under the MIT License.                   |\n| [![][Slack Logo] **Community**][Community]    | Join our Slack Workspace for announcements and discussions.          |\n\n[Website]: https://sintel.dev/\n[Documentation]: https://sintel-dev.github.io/Orion\n[Tutorials]: https://github.com/sintel-dev/Orion/tree/master/tutorials\n[Repository]: https://github.com/sintel-dev/Orion\n[License]: https://github.com/sintel-dev/Orion/blob/master/LICENSE\n[Community]: https://join.slack.com/t/sintel-space/shared_invite/zt-q147oimb-4HcphcxPfDAM0O9_4PaUtw\n[Slack Logo]: https://github.com/sintel-dev/Orion/blob/master/docs/images/slack.png\n\n# Overview\n\nOrion is a machine learning library built for *unsupervised time series anomaly detection*. With a given time series data, we provide a number of “verified” ML pipelines (a.k.a Orion pipelines) that identify rare patterns and flag them for expert review.\n\nThe library makes use of a number of **automated machine learning** tools developed under [Data to AI Lab at MIT](https://dai.lids.mit.edu/).\n\nRead about using an Orion pipeline on NYC taxi dataset in a blog series:\n\n[Part 1: Learn about unsupervised time series anomaly detection](https://t.co/yIFVM1oRwQ?amp=1) | [Part 2: Learn how we use GANs to solving the problem? ](https://link.medium.com/cGsBD0Fevbb) | [Part 3: How does one evaluate anomaly detection pipelines?](https://link.medium.com/FqCrFXMevbb)\n:--------------------------------------:|:---------------------------------------------:|:--------------------------------------------:\n![](docs/images/tulog-part-1.png)       |  ![](docs/images/tulog-part-2.png)            | ![](docs/images/tulog-part-3.png)\n\n**Notebooks:** Discover *Orion* through colab by launching our [notebooks](https://drive.google.com/drive/folders/1FAcCEiE1JDsqaMjGcmiw5a5XuGh13c9Q?usp=sharing)!\n\n# Quickstart\n\n## Install with pip\n\nThe easiest and recommended way to install **Orion** is using [pip](https://pip.pypa.io/en/stable/):\n\n```bash\npip install orion-ml\n```\n\nThis will pull and install the latest stable release from [PyPi](https://pypi.org/).\n\n\nIn the following example we show how to use one of the **Orion Pipelines**.\n\n## Fit an Orion pipeline\n\nWe will load a demo data for this example:\n\n```python3\nfrom orion.data import load_signal\n\ntrain_data = load_signal('S-1-train')\ntrain_data.head()\n```\n\nwhich should show a signal with `timestamp` and `value`.\n```\n    timestamp     value\n0  1222819200 -0.366359\n1  1222840800 -0.394108\n2  1222862400  0.403625\n3  1222884000 -0.362759\n4  1222905600 -0.370746\n```\n\nIn this example we use `aer` pipeline and set some hyperparameters (in this case training epochs as 5).\n\n```python3\nfrom orion import Orion\n\nhyperparameters = {\n    'orion.primitives.aer.AER#1': {\n        'epochs': 5,\n        'verbose': True\n    }\n}\n\norion = Orion(\n    pipeline='aer',\n    hyperparameters=hyperparameters\n)\n\norion.fit(train_data)\n```\n\n## Detect anomalies using the fitted pipeline\nOnce it is fitted, we are ready to use it to detect anomalies in our incoming time series:\n\n```python3\nnew_data = load_signal('S-1-new')\nanomalies = orion.detect(new_data)\n```\n\u003e :warning: Depending on your system and the exact versions that you might have installed some *WARNINGS* may be printed. These can be safely ignored as they do not interfere with the proper behavior of the pipeline.\n\nThe output of the previous command will be a ``pandas.DataFrame`` containing a table of detected anomalies:\n\n```\n        start         end  severity\n0  1402012800  1403870400  0.122539\n```\n\n# Leaderboard\nIn every release, we run Orion benchmark. We maintain an up-to-date leaderboard with the current scoring of the verified pipelines according to the benchmarking procedure.\n\nWe run the benchmark on **12** datasets with their known grounth truth. We record the score of the pipelines on each datasets. To compute the leaderboard table, we showcase the number of wins each pipeline has over the ARIMA pipeline.\n\n| Pipeline                  |  Outperforms ARIMA |\n|---------------------------|--------------------|\n| AER                       |          12        |\n| TadGAN                    |          7         |\n| LSTM Dynamic Thresholding |          9         |\n| LSTM Autoencoder          |          7         |\n| Dense Autoencoder         |          7         |\n| VAE                       |          6         |\n| AnomalyTransformer        |          2         |\n| LNN                       |          7         |\n| Matrix Profile            |          5         |\n| UniTS                     |          6         |\n| TimesFM                   |          7         |\n| [GANF](https://arxiv.org/pdf/2202.07857.pdf)                                                  |          5         |\n| [Azure](https://azure.microsoft.com/en-us/products/cognitive-services/anomaly-detector/)      |          0         |\n\n\nYou can find the scores of each pipeline on every signal recorded in the [details Google Sheets document](https://docs.google.com/spreadsheets/d/1HaYDjY-BEXEObbi65fwG0om5d8kbRarhpK4mvOZVmqU/edit?usp=sharing). The summarized results can also be browsed in the following [summary Google Sheets document](https://docs.google.com/spreadsheets/d/1ZPUwYH8LhDovVeuJhKYGXYny7472HXVCzhX6D6PObmg/edit?usp=sharing).\n\n# Resources\n\nAdditional resources that might be of interest:\n* Learn about [benchmarking pipelines](BENCHMARK.md).\n* Read about [pipeline evaluation](orion/evaluation/README.md).\n* Find out more about [TadGAN](https://arxiv.org/pdf/2009.07769v3.pdf).\n\n# Citation\n\nIf you use **AER** for your research, please consider citing the following paper:\n\nLawrence Wong, Dongyu Liu, Laure Berti-Equille, Sarah Alnegheimish, Kalyan Veeramachaneni. [AER: Auto-Encoder with Regression for Time Series Anomaly Detection](https://arxiv.org/pdf/2212.13558.pdf).\n\n```\n@inproceedings{wong2022aer,\n  title={AER: Auto-Encoder with Regression for Time Series Anomaly Detection},\n  author={Wong, Lawrence and Liu, Dongyu and Berti-Equille, Laure and Alnegheimish, Sarah and Veeramachaneni, Kalyan},\n  booktitle={2022 IEEE International Conference on Big Data (IEEE BigData)},\n  pages={1152-1161},\n  doi={10.1109/BigData55660.2022.10020857},\n  organization={IEEE},\n  year={2022}\n}\n```\n\nIf you use **TadGAN** for your research, please consider citing the following paper:\n\nAlexander Geiger, Dongyu Liu, Sarah Alnegheimish, Alfredo Cuesta-Infante, Kalyan Veeramachaneni. [TadGAN - Time Series Anomaly Detection Using Generative Adversarial Networks](https://arxiv.org/pdf/2009.07769v3.pdf).\n\n```\n@inproceedings{geiger2020tadgan,\n  title={TadGAN: Time Series Anomaly Detection Using Generative Adversarial Networks},\n  author={Geiger, Alexander and Liu, Dongyu and Alnegheimish, Sarah and Cuesta-Infante, Alfredo and Veeramachaneni, Kalyan},\n  booktitle={2020 IEEE International Conference on Big Data (IEEE BigData)},\n  pages={33-43},\n  doi={10.1109/BigData50022.2020.9378139},\n  organization={IEEE},\n  year={2020}\n}\n```\n\nIf you use **Orion** which is part of the **Sintel** ecosystem for your research, please consider citing the following paper:\n\nSarah Alnegheimish, Dongyu Liu, Carles Sala, Laure Berti-Equille, Kalyan Veeramachaneni. [Sintel: A Machine Learning Framework to Extract Insights from Signals](https://dl.acm.org/doi/pdf/10.1145/3514221.3517910).\n```\n@inproceedings{alnegheimish2022sintel,\n  title={Sintel: A Machine Learning Framework to Extract Insights from Signals},\n  author={Alnegheimish, Sarah and Liu, Dongyu and Sala, Carles and Berti-Equille, Laure and Veeramachaneni, Kalyan},  \n  booktitle={Proceedings of the 2022 International Conference on Management of Data},\n  pages={1855–1865},\n  numpages={11},\n  publisher={Association for Computing Machinery},\n  doi={10.1145/3514221.3517910},\n  series={SIGMOD '22},\n  year={2022}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsintel-dev%2FOrion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsintel-dev%2FOrion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsintel-dev%2FOrion/lists"}