Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Acquirium

A Data-Metadata Framework for Water Treatment Plants

Acquirium is a framework for storing, managing, querying, and integrating data and metadata for water treatment systems. It combines knowledge graphs and time series data to support analysis, monitoring, and experimentation.

Installation

From PyPI:

pip install acquirium

Optional extras for specific drivers:

pip install "acquirium[mqtt]"       # MQTT ingestion driver
pip install "acquirium[xlsx]"       # Excel ingestion driver
pip install "acquirium[watertap]"   # WaterTAP simulation driver

Or with uv:

uv pip install acquirium

For development from a clone:

git clone https://github.com/DataDrivenCPS/acquirium.git
cd acquirium
uv sync

Quickstart

The easiest way to experiment with acquirium is through an example. We strongly recommend following the steps in the WaterTAP readme. WaterTAP is a simulation tool with an acquirium integration; following the steps there runs acquirium as if it were connected to a live plant, generating physically realistic data you can query and build applications on.

The server and its configured drivers start from one command:

acquirium server --config acquirium.toml

A sample acquirium.toml is included at the repository root. By default everything is stored on local disk (an embedded Oxigraph RDF store and a DuckDB file under data_dir); no external services are required. The first start builds the text-resolution indexes and can take 5-10 minutes; later starts reuse the cache. The server is intentionally one process because it owns the embedded graph store. materialization_workers bounds concurrent transformation execution through the server's in-process worker pool; incremental materialization supports both DuckDB and TimescaleDB backends.

Querying is a Python client:

from acquirium import Acquirium

acq = Acquirium(server_url="127.0.0.1", server_port=8000)
acq.query().entity("pump").measurement(quantity_kind="pressure").dataframe(shape="wide")

Documentation

The guides live in docs/, organized as tutorials, how-to guides, reference and explanation.

Start here — learning by doing, on the WaterTAP seawater-ro model:

tutorial covers
Getting started install, start a server, run a first query
Querying the Query verbs: entities, topology, measurements, filters, columns
Query cookbook domain questions, how to phrase them, the query
Working with data lazy fetching, shapes, units, taking a result apart
Your first driver authoring a CSV driver step by step

How-to guides — one task each: load a plant model, explore a model, debug a query, insert data, write an app, run the server, resolve text to URIs.

Reference — facts, no narrative: client API, drivers, apps, server configuration, HTTP API, glossary.

Explanation — why things are the way they are: the query model, values and units, why drivers, why apps use recomputed windows, the data stream lifecycle, text resolution, server internals, graph backend.

Docker stack (optional)

A compose.yaml is provided for an all-in-one local stack (Acquirium + TimescaleDB + Grafana):

make up                              # start
make up ACQUIRIUM_RECREATE=true      # wipe data + start
make down                            # stop

By default each Docker run resets the system. To preserve data across runs, set ACQUIRIUM_RECREATE=false in compose.yaml.

WaterTAP integration

The watertap extra installs the Python packages for the built-in WaterTAP driver, plus a one-time install of native solver extensions:

pip install "acquirium[watertap]"
idaes get-extensions                        # native IDAES/IPOPT solver binaries
# with uv: uv sync --extra watertap && uv run idaes get-extensions
acquirium server --config deployments/WATERTAP/scripts/acquirium.toml

The WaterTAP deployment readme covers the models, the data generator, and the example notebooks under notebooks/watertap/.

Text resolution

Free text anywhere in the API (class names, units, quantity kinds) is matched to ontology URIs by embedding similarity, using two indexes built from the bundled ontologies at server start. See the resolution guide.

Tests

uv run pytest tests/unit     # unit tests only (or: make unit-test)
make test                    # full suite (Docker required)

Status

Acquirium is under active development. Planned work is tracked in improvements.md. Bug reports and feature requests are welcome — please open an issue.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

acquirium-0.4.0a7.tar.gz (1.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

acquirium-0.4.0a7-py3-none-any.whl (1.1 MB view details)

Uploaded Python 3

File details

Details for the file acquirium-0.4.0a7.tar.gz.

File metadata

  • Download URL: acquirium-0.4.0a7.tar.gz
  • Upload date:
  • Size: 1.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for acquirium-0.4.0a7.tar.gz
Algorithm Hash digest
SHA256 7c69d473ddb5850ba68ef2c1adac80d0526b6e22eae4cc48a18500d420266493
MD5 f90767db06a5b56afb6dbc485b0305a1
BLAKE2b-256 b648284e5b082b89cff4629ad16618b7857ccab09104cef9892244c90ef4b036

See more details on using hashes here.

File details

Details for the file acquirium-0.4.0a7-py3-none-any.whl.

File metadata

  • Download URL: acquirium-0.4.0a7-py3-none-any.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for acquirium-0.4.0a7-py3-none-any.whl
Algorithm Hash digest
SHA256 f44a43a4b72bdcb8cf05c5f80daacae24ec3a15fd67b3acc224dffb3f8c69d74
MD5 73e33114fcf2612b4bb7f594ee1374e6
BLAKE2b-256 a1e45ecd5c0f8c00c2922a8aee735d0b8a742f8315c3a84a6106850b77b51203

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.0a7 This release

2 files

0.3.1

2 files

0.1.1

2 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