From c19e898cf9c1f4c71bc65b3123dfae2daf4cf716 Mon Sep 17 00:00:00 2001 From: Ben Sully Date: Mon, 23 Dec 2024 15:00:57 +0000 Subject: [PATCH] docs: add README for JS package (#221) --- js/README.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ js/justfile | 4 ++++ 2 files changed, 67 insertions(+) create mode 100644 js/README.md diff --git a/js/README.md b/js/README.md new file mode 100644 index 00000000..c96f4b22 --- /dev/null +++ b/js/README.md @@ -0,0 +1,63 @@ +# augurs + +[![npm](https://img.shields.io/npm/v/@bsull/augurs)](https://www.npmjs.com/package/@bsull/augurs) +[![npm](https://img.shields.io/npm/dm/@bsull/augurs)](https://www.npmjs.com/package/@bsull/augurs) +[![npm](https://img.shields.io/npm/l/@bsull/augurs)](https://www.npmjs.com/package/@bsull/augurs) + +JavaScript bindings for the augurs time series framework. + +## Installation + +Add this package to your project with: + +```bash +npm install @bsull/augurs +``` + +## Usage + +Full usage docs are still to come, but here's a quick example: + +```js +import initProphet, { Prophet } from '@bsull/augurs/prophet'; +import initTransforms, { Pipeline, Transform } from '@bsull/augurs/transforms'; +// Note: you'll need this extra package if you want to use the Prophet model. +import { optimizer } from '@bsull/augurs-prophet-wasmstan'; + +// Initialize the WASM components before using any augurs functions. +await Promise.all([initProphet(), initTransforms()]); + +// Create a pipeline which will apply a Yeo-Johnson transform and a standard scaler. +const pipeline = new Pipeline([ + new Transform('yeoJohnson'), + new Transform('standardScaler'), +]); + +// Create a Prophet model with the WASM-based optimizer. +const prophet = new Prophet({ optimizer }); + +const ds = [1704067200, 1704871384, 1705675569, 1706479753, 1707283938, 1708088123, +const y = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0]; + +// Fit the pipeline to the data. +const yTransformed = pipeline.fitTransform(y); + +// Fit the Prophet model to the transformed data. +prophet.fit({ ds, y: yTransformed }); + +// Make in-sample predictions and back-transform them. +const preds = prophet.predict(); +const yhat = { + point: pipeline.inverseTransform(preds.yhat.point), + intervals: { + lower: pipeline.inverseTransform(preds.yhat.lower), + upper: pipeline.inverseTransform(preds.yhat.upper), + }, +}; +``` + +See the [documentation](https://docs.augu.rs/js/getting-started/quick-start) for more information. + +## License + +This project is dual-licensed under the [Apache 2.0](LICENSE-APACHE) and [MIT](LICENSE-MIT) licenses. diff --git a/js/justfile b/js/justfile index fdef6e5f..c3ac794a 100644 --- a/js/justfile +++ b/js/justfile @@ -10,6 +10,7 @@ build: \ (build-inner "seasons") \ (build-inner "transforms") just fix-package-json + just copy-readme build-inner target args='': cd augurs-{{target}}-js && \ @@ -31,6 +32,9 @@ fix-package-json: jq < augurs/package.json ". | .version = \"$VERSION\"" > augurs/package.json.tmp mv augurs/package.json.tmp augurs/package.json +copy-readme: + cp README.md augurs/README.md + test: cd testpkg && \ npm ci && \