This repository contains augurs
, a time series toolkit built in Rust.
It aims to provide some useful primitives for working with time series,
as well as the main functionality: heavily optimized models for forecasting,
outlier detection, clustering, seasonality detection, changepoint detection
and more. Most algorithms are based on existing R or Python implementations.
As well as the core Rust library, augurs will provide bindings to other languages such as Python and Javascript (via WASM).
Status: please note that this repository is very much in progress. APIs are subject to change, and functionality may not be fully implemented.
Name | Purpose | Status |
---|---|---|
augurs |
Wrapper crate exposing functionality of all main crates behind feature flags | alpha |
augurs-changepoint |
Changepoint detection for time series | alpha |
augurs-clustering |
Time series clustering algorithms | beta |
augurs-core |
Common structs and traits | alpha - API is flexible right now |
augurs-dtw |
Dynamic Time Warping (DTW) | beta |
augurs-ets |
Automatic exponential smoothing models | alpha - non-seasonal models working and tested against statsforecast |
augurs-mstl |
Multiple Seasonal Trend Decomposition using LOESS (MSTL) | beta - working and tested against R |
augurs-outlier |
Outlier detection for time series | alpha |
augurs-prophet |
The Prophet time series forecasting algorithm | alpha |
augurs-seasons |
Seasonality detection using periodograms | alpha - working and tested against Python in limited scenarios |
augurs-testing |
Testing data and, eventually, evaluation harness for implementations | alpha - just data right now |
js/* |
WASM bindings to augurs | alpha |
pyaugurs |
Python bindings to augurs | alpha |
This project uses just
as a command runner; this will need to be installed separately.
See the justfile
for more information.
Some of the tasks require bacon
, which will also need to be installed separately.
Releases are made using release-plz
: a PR should be automatically created for each release, and merging will perform the release and publish automatically.
The first exception to the release-plz
flow is the augurs
Python library, which is only released when a new tag beginning with pyaugurs
is pushed. This must be done manually for now (ideally soon after the release-plz
PR is merged).
E.g.:
git tag pyaugurs-v0.3.0 -m "Release pyaugurs v0.3.0"
git push --tags
The augurs
npm library must also be published manually. This can be done using just publish-augurs-js
; note you'll need to login with npm first.
npm login
# Log in online, etc...
just publish-augurs-js
Dual-licensed to be compatible with the Rust project.
Licensed under the Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0>
or the MIT license <http://opensource.org/licenses/MIT>
, at your option.