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

Uploaded Python 3

File details

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

File metadata

  • Download URL: acquirium-0.4.0a3.tar.gz
  • Upload date:
  • Size: 965.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","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.0a3.tar.gz
Algorithm Hash digest
SHA256 71edb9da70a2df4ad9524990345d494d3c13835f3cb391843361b04b20654459
MD5 fe5be570a6c6215da152db960ce0ef7b
BLAKE2b-256 3b1119e54fefaf03f6db61db63a742f881313302e75b31b165696d136c3e42ed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: acquirium-0.4.0a3-py3-none-any.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","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.0a3-py3-none-any.whl
Algorithm Hash digest
SHA256 43647494ae1ecf924c7ff1ae51dc031cb2d079ed463573d693504c3d418aa6ee
MD5 74a0dab4893240874be9fc644c50f2d7
BLAKE2b-256 fccde4838fd330b2b6b1b996373db2f73e05d01446cd7d24416c37d855ded75f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

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