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.

Querying is a Python client:

from acquirium import Acquirium

acq = Acquirium(server_url="localhost", 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, run the server, resolve text to URIs.

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

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

App documentation is pending the app infrastructure rework.

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.0a4.tar.gz (965.9 kB 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.0a4-py3-none-any.whl (1.0 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: acquirium-0.4.0a4.tar.gz
  • Upload date:
  • Size: 965.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","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.0a4.tar.gz
Algorithm Hash digest
SHA256 23cd1aa87729c9c858ba5999acc64dda48bf8e79df69a7c9b460ec509f4c788e
MD5 cac06e00de648f690da254c0ded5b1de
BLAKE2b-256 9f49a50b09d2d8cfedebbe0035c6f556af140738067f272b38c0c0d4f827032a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: acquirium-0.4.0a4-py3-none-any.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","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.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 899c156bd44ddea83350d0e48f1f0fcd8efd37b80cae0ceac342af01cf07a335
MD5 78ed16e31b1d1918f518056c6f8bfa7f
BLAKE2b-256 1480cad05943c648c4d7c37b9aa2325da1ec45d8b88242ce3ade803aff8ec0a1

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.0a4 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