Skip to main content

WavqWise

WavqWise

Sense. Forecast. Alert.

Pluggable temporal intelligence. 37 models. 5 pipelines. Real-time streaming. Auto GPU.

PyPI License

Quick Start | 5 Pipelines | 37 Models | Real-Time | Weather | Dam Monitoring | Colab


What Makes WavqWise Different

Feature Nixtla Darts Prophet WavqWise
Batch forecasting Yes Yes Yes Yes
Real-time streaming No No No Yes
Incremental update (no retrain) No No No Yes
Anomaly detection No No No Yes
EEG / Signal processing No No No Yes
Trading indicators No No No Yes
Weather (GraphCast / Aurora) No No No Yes
Dam / Water level monitoring No No No Yes
Auto GPU / ONNX / TensorRT No No No Yes
Plugin any external model No No No Yes
CLI + PNG charts + CSV/JSON export No No No Yes

Quick Start

pip install wavqwise
from wavqwise import WavqPipeline

pipeline = WavqPipeline()
pipeline.load("sales.csv", target="revenue", time="date")
forecast = pipeline.forecast(horizon=30, model="arima")
forecast.plot()

Change "arima" to "xgboost" or "chronos" : same code. Model is a parameter, not an architecture decision.


5 Pipelines

1. WavqPipeline : Forecasting

from wavqwise import WavqPipeline

pipeline = WavqPipeline()
pipeline.load("data.csv", target="sales", time="date")
forecast = pipeline.forecast(horizon=30, model="ema")

# Incremental update (not retrain)
pipeline.update(new_data)
forecast = pipeline.forecast(horizon=30)

# Compare models
pipeline.compare_models(["arima", "ema", "xgboost"], horizon=14)

# Auto-select best
pipeline.forecast(model="auto")

# Ensemble
pipeline.forecast(model=["arima", "ets", "xgboost"])

2. AnomalyPipeline : Detection with Severity

from wavqwise import AnomalyPipeline

detector = AnomalyPipeline()
detector.load("sensor.csv", target="temperature", time="timestamp")
result = detector.detect(method="zscore")  # or "iqr", "isolation_forest"
print(result.summary())
# Anomalies: 93/10000 (0.9%) | Method: zscore

3. SignalPipeline : EEG & Biosignals

from wavqwise import SignalPipeline

sig = SignalPipeline()
sig.load("eeg.csv", channels=["Fp1", "Fp2", "C3", "C4"], sample_rate=256)
sig.filter(low=1, high=50, notch=50)
bands = sig.extract_bands(["delta", "theta", "alpha", "beta", "gamma"])
events = sig.detect_events(threshold=3.0)

4. TradingPipeline : Financial Analysis

from wavqwise.trading.indicators.momentum import RSIIndicator
from wavqwise.trading.indicators.trend import MACDIndicator
from wavqwise.trading.indicators.volatility import BollingerBandsIndicator

stock = RSIIndicator(14).compute(stock_data)
stock = MACDIndicator().compute(stock)
stock = BollingerBandsIndicator(20, 2).compute(stock)

pipeline = WavqPipeline()
pipeline.load(stock, target="Close", time="Date")
forecast = pipeline.forecast(horizon=30, model="ema")

5. WeatherPipeline : Weather Forecasting

from wavqwise import WeatherPipeline

weather = WeatherPipeline()
weather.load_city("Chennai", days=365)  # Real data from Open-Meteo
forecast = weather.forecast(target="temperature_2m_mean", horizon=14, model="ema")
weather.compare_models(horizon=14)

Real-Time Streaming

The feature no other forecasting library has:

pipeline = WavqPipeline()
pipeline.load(history, target="temperature", time="timestamp")

stream = pipeline.stream(
    model="ema",
    anomaly_method="zscore",
    on_anomaly=lambda e: send_alert(e),
    on_forecast=lambda f: update_dashboard(f),
)

# Push data as it arrives
stream.push({"timestamp": "2025-01-01 10:00", "temperature": 72.3})

# Or connect to live source
stream.connect_csv("live_sensor.csv", poll_interval=5)
stream.connect_callback(my_sensor_reader, interval=1.0)

print(stream.summary())
# Stream: 500 points | 3 anomalies | window=200 | model=ema | LIVE

Dam Water Level Monitoring

49 real dams across 13 countries. Filter by any country, state, or river.

from wavqwise.weather.dam_database import DamDB

# Tamil Nadu only
DamDB.filter(country="India", state="Tamil Nadu")
# Returns: Mettur, Vaigai, Bhavanisagar, Amaravathi, Sathanur,
#          Krishnagiri, Papanasam, Sholayar (8 dams)

# California only
DamDB.filter(country="USA", state="California")
# Returns: Oroville Dam, Shasta Dam

# All Indian dams
DamDB.filter(country="India")  # 22 dams across 10 states

# Search by river
DamDB.search("cauvery")  # Mettur Dam, KRS Dam

# Big dams worldwide
DamDB.filter(min_capacity=1000)  # 14 mega dams

# All countries
DamDB.list_countries()
# Australia, Brazil, China, Egypt, Ethiopia, Ghana,
# India, Italy, Japan, Switzerland, Turkey, USA, Zimbabwe

Flood Early Warning

pipeline = WavqPipeline()
pipeline.load(dam_data, target="water_level_ft", time="date")
forecast = pipeline.forecast(horizon=30, model="ema")

# Real-time flood monitoring
stream = pipeline.stream(
    model="ema",
    anomaly_method="zscore",
    on_anomaly=lambda e: flood_alert(e),
)
stream.push(new_sensor_reading)

Weather Forecasting

5 open-source weather foundation models (all free, all run locally):

Model By GitHub
GraphCast Google DeepMind google-deepmind/graphcast
GenCast Google DeepMind google-deepmind/gencast
Aurora Microsoft microsoft/aurora
Pangu-Weather Huawei 198808xc/Pangu-Weather
FourCastNet NVIDIA NVlabs/FourCastNet

Real weather data via Open-Meteo API (free, no key, 20+ cities built-in):

from wavqwise import WeatherPipeline

weather = WeatherPipeline()
weather.load_city("Tokyo", days=365)
forecast = weather.forecast(target="temperature_2m_mean", horizon=30, model="ema")

# Weather indicators: heat index, wind chill, dew point, thermal comfort
# Multi-city comparison supported

Output Formats

Four output modes : no HTML dependency required:

from wavqwise.visualization.renderer import ResultRenderer, CLIPrinter, DataExporter

# PNG charts (matplotlib)
ResultRenderer.forecast_chart(history, forecast, target, time_col,
    source="India-WRIS", save_path="forecast.png")
ResultRenderer.dam_network_chart(dams, save_path="network.png")
ResultRenderer.anomaly_chart(data, save_path="anomalies.png")
ResultRenderer.comparison_chart(comparison, save_path="comparison.png")

# CLI tables (terminal)
CLIPrinter.table(["Dam", "Level", "Status"], rows)
CLIPrinter.dam_status("Mettur Dam", level=92, capacity=120)
CLIPrinter.forecast_summary(result)

# CSV / JSON export with source metadata
DataExporter.to_csv(data, "output.csv", source="india-wris.nrsc.gov.in")
DataExporter.to_json(data, "output.json", source="USGS")

# HTML interactive (optional, via folium)
from wavqwise.visualization.map_viz import WeatherMap
wmap = WeatherMap()
wmap.add_dam_marker("Mettur Dam", 11.79, 77.80, water_level=92, capacity=120)
wmap.save("dashboard.html")

Plugin Any External Model

# Way 1: Register your own class (needs fit + predict)
WavqPipeline.register("my_model", MyModelClass)
pipeline.forecast(model="my_model")

# Way 2: Wrap any sklearn model
from wavqwise.core.adapter import ModelAdapter
adapter = ModelAdapter.from_sklearn(GradientBoostingRegressor())
pipeline.forecast(model=adapter)

# Way 3: Adapters for popular PyPI libraries
from wavqwise.adapters import NixtlaAdapter, DartsAdapter, ProphetAdapter
pipeline.forecast(model=NixtlaAdapter("AutoARIMA"))
pipeline.forecast(model=DartsAdapter("NBEATSModel"))
pipeline.forecast(model=ProphetAdapter())

Auto GPU / ONNX / TensorRT

Auto-detected on startup. No configuration needed.

pipeline = WavqPipeline()
print(pipeline.runtime_info())

Priority: TensorRT → ONNX GPU → CUDA → MPS (Apple) → ONNX CPU → CPU

from wavqwise.runtime import ONNXExporter, ONNXPredictor

exporter = ONNXExporter()
exporter.export_sklearn(model, "model.onnx", n_features=13)
exporter.optimize_for_tensorrt("model.onnx")  # FP16

predictor = ONNXPredictor("model.onnx")  # Auto GPU
result = predictor.predict(input_array)
print(predictor.benchmark(input_array))

37 Pluggable Models

Category Models
Traditional (11) MA, EMA, ARIMA, SARIMA, ETS, Holt-Winters, Theta, CES, Croston, Naive, Seasonal Naive
ML (7) XGBoost, LightGBM, CatBoost, Random Forest, Ridge, Lasso, ElasticNet
Neural (3) NeuralProphet, N-BEATS, TFT
Foundation (5) Chronos, TimesFM, Lag-Llama, Moirai, HuggingFace Hub
Cloud (3) TimeGPT, Ollama, OpenAI
Weather (5) GraphCast, GenCast, Aurora, Pangu-Weather, FourCastNet
Custom Any class with fit() + predict() via WavqPipeline.register()

Real Data Sources (All Free, No API Key)

Source URL Coverage
Open-Meteo api.open-meteo.com Global weather, 80+ years history
India-WRIS india-wris.nrsc.gov.in 5000+ Indian dams
CWC India cwc.gov.in 91 major reservoirs
USGS waterservices.usgs.gov 1.5M+ US water sites
Global Dam Watch globaldamwatch.org 7000+ reservoirs worldwide
MNE (EEG) mne.tools Clinical EEG datasets
Yahoo Finance via yfinance Global stock data

Demos (11 scripts)

Demo What it does Run
Forecasting Sales forecast + model comparison + incremental python demos/demo_forecasting.py
Anomaly Detection Sensor anomaly (Z-Score + IQR + severity) python demos/demo_anomaly_detection.py
EEG Real Data MNE clinical EEG classification python demos/demo_eeg_real_data.py
EEG Classification 3-class mental state classification python demos/demo_eeg_classification.py
EEG Analysis Band power extraction + event detection python demos/demo_eeg_analysis.py
Trading Real Data AAPL with RSI/MACD/Bollinger/Stochastic python demos/demo_trading_real_data.py
Trading Forecast Stock price forecast + signals python demos/demo_trading_forecast.py
Weather Forecast Temperature/rain/wind for any city python demos/demo_weather_forecast.py
Dam Monitoring Tamil Nadu dams, flood alerts, streaming python demos/demo_dam_monitoring.py
Dam World 49 dams, 13 countries, PNG + CLI + CSV output python demos/demo_dam_world.py
Real-Time Stream Live sensor monitoring with anomaly alerts python demos/demo_realtime_streaming.py

Colab Notebooks (6 notebooks)

Notebook Data Open
Weather Forecast Open-Meteo real weather Colab
Dam Monitoring 49 dams, 13 countries Colab
EEG Real Data MNE clinical EEG Colab
EEG Classification Mental state classification Colab
Trading Real Data yfinance AAPL/TSLA/MSFT Colab
Trading Forecast Stock analysis + indicators Colab

CLI

wavqwise forecast --input data.csv --target sales --model arima --horizon 30
wavqwise detect --input sensor.csv --target temp --method zscore
wavqwise models

Install

pip install wavqwise                    # Core
pip install wavqwise[traditional]       # + ARIMA, SARIMA, ETS
pip install wavqwise[ml]               # + XGBoost, LightGBM
pip install wavqwise[neural]           # + NeuralProphet, N-BEATS
pip install wavqwise[foundation]       # + Chronos, TimesFM
pip install wavqwise[signals]          # + EEG (MNE)
pip install wavqwise[trading]          # + yfinance, indicators
pip install wavqwise[database]         # + PostgreSQL, MongoDB, InfluxDB
pip install wavqwise[onnx-gpu]         # + ONNX Runtime GPU
pip install wavqwise[tensorrt]         # + TensorRT
pip install wavqwise[all]              # Everything

Docker

cd docker
docker-compose up -d
# WavqWise:    demos run automatically
# Jupyter:     localhost:8888
# TimescaleDB: localhost:5432
# Grafana:     localhost:3000

Testing (59 tests)

make smoke        # 22 smoke tests (does it run?)
make sanity       # 20 sanity tests (is output correct?)
make ab           # 5 A/B comparison tests (which model wins?)
make integration  # 7 integration tests (full pipeline flows)
make test         # All 59 tests

Architecture

WavqWise


Ecosystem

Library Domain Tagline PyPI
SightRAG Vision See. Search. Retrieve. PyPI
Sonarwise Audio Hear. Search. Retrieve. PyPI
Docqwise Documents Read. Extract. Retrieve. PyPI
WavqWise Temporal Sense. Forecast. Alert. PyPI
Adaptive Intelligence Orchestration Learn. Remember. Adapt. PyPI
LLMEvalKit Evaluation Evaluate. Score. Improve. PyPI

License

Apache 2.0 License

Author

Venkatkumar Rajan

Metadata

Release files for wavqwise 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wavqwise 0.1.5
File Size Uploaded
wavqwise-0.1.5.tar.gz 67.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wavqwise 0.1.5
File Interpreter ABI Platform
wavqwise-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 154.7 kB

Release files / wavqwise-0.1.5.tar.gz

Download URL wavqwise-0.1.5.tar.gz
Size 67.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a1f855500f62e5f109aa489f3e32a7ca4aedd7d93fc3702e6fb81224025d448f
BLAKE2b-256 checksum
How to use checksums
1dcf559be2cf1def09bce77b2ce05bd4fa623ddefa22c6a17dfcf1f463d07e66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.0

Release files / wavqwise-0.1.5-py3-none-any.whl

Download URL wavqwise-0.1.5-py3-none-any.whl
Size 86.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
13d4727dc184c484be8629e28fe6e4ab1155db1443a6194aeecc945e41994ff6
BLAKE2b-256 checksum
How to use checksums
fc6390542fb22b249b297817209b4cea04934e535985377ce1762c28dd3336ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.0

Release history Release notifications | RSS feed

0.1.6

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page