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

Uploaded Python 3

File details

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

File metadata

  • Download URL: acquirium-0.4.0a5.tar.gz
  • Upload date:
  • Size: 967.1 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.0a5.tar.gz
Algorithm Hash digest
SHA256 cee63fa74c031641ca7ae379ff3b099e3b1da1d676e9d75dd47f8d2147d9058b
MD5 58d2d16ef92c51f937294005f0fd697f
BLAKE2b-256 85b5f5df4b0cd01617d763edd5155723fcae1bcde85207345f0d7c649d64466a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: acquirium-0.4.0a5-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.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 7ea69f41d500212b228e79e9a1e990814bcc4b7e2d27db8b9cc87fc1b32302e7
MD5 e0e0455eb39a447e1f27777168fe85c8
BLAKE2b-256 4188080bc220992ce3b8cc38685033bbc273a58fe495f46903b3140674f04462

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

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