Skip to main content

Tools to query Archiver Appliance and export data

Project description

Client for EPICS Archive Appliance

Utilities for interacting with an EPICS Archiver Appliance server.

With the exception of aaget --how plot ... PV name strings are passed through verbatim, and may include AA binning operators. See the Processing of data section for a list.

For fidelity, data is retrieved in the binary protobuf encoding native to AA.

Intended to supplant https://github.com/epicsdeb/carchivetools

Building

Dependencies from the python ecosystem (eg. pip)

  • python >= 3.7
  • aiohttp >= 3.7.0 (and perhaps earlier)
  • numpy >= 1.7
  • Cython >= 0.20
  • setuptools >= 40.9.0
  • h5py (optional)

Dependencies from outside the python ecosystem (eg. rpm, deb, etc.)

  • Working C++11 toolchain
  • protobuf compiler, protobuf-lite library, and headers for >= 3.0
    • These compiler and library versions must match
apt-get install protobuf-compiler libprotobuf-dev

yum install protobuf-compiler libprotobuf-devel

dnf install protobuf-compiler libprotobuf-devel

brew install protobuf

(Getting protobuf on windows is difficult... See for an example using vcpkg.)

Build and install with pip

virtualenv aa
. aa/bin/activate
pip install -U pip
pip install Cython
./setup.py sdist
pip install dist/aaclient-*.tar.gz
aaget -h

Alternately, for in-place usage (eg. evaluation or troubleshooting).

./setup.py build_ext -i
python -m aaclient.cmd.get -h

In either case a configuration file is required.

cp aaclient.conf.example aaclient.conf
# edit aaclient.conf and fill in at least "host="

Command Line Interface

This package provides several CLI tools for interacting with an Archiver Appliance server.

See the example configuration file.

aagrep Searching for PVs

Running aagrep without arguments will attempt to print a full list of PV names being archived. Otherwise query patterns (wildcard or regexp) will be applied. If multiple patterns are provided, the output will be all PV names which matched any pattern.

$ aagrep RH
CO2:RH-I

aaget Printing data

Query data from a set of PV names for a certain time range and print the results.

$ aaget --start='-1 h' --end=now CO2:RH-I
01-30 07:50:11.958813 CO2:RH-I 45.10040283203125
01-30 08:13:04.816086 CO2:RH-I 44.56939697265625
01-30 08:40:41.527406 CO2:RH-I 44.06585693359375

aah5 Extract to HDF5 file

Queries like aaget, with results written to a HDF5 file instead of being printed to screen.

$ aah5 --start='-1 h' --end=now out.h5 CO2:RH-I
INFO:__main__:'CO2:RH-I' : (3, 1)
$ h5ls -r out.h5 
/                        Group
/CO2:RH-I                Group
/CO2:RH-I/meta           Dataset {3/Inf}
/CO2:RH-I/value          Dataset {3/Inf, 1/Inf}

Alternate entry points.

  • aaget -> python -m aaclient.cmd.get
  • aagrep -> python -m aaclient.cmd.grep
  • aah5 -> python -m aaclient.cmd.h5

API

The API behind the CLI executables is (primarily) asyncio based.

import asyncio
from aaclient import getArchive

async def demo():
    A= await getArchive()
    with A:
        V,M = await A.raw('CO2:CO2-I', T0='-12 h')
        print(V.shape, M.shape)

asyncio.run(demo())

The entry point for API usage is aaclient.getArchive(), which returns an object inheriting from aaclient.IArchive.

Streaming

The aaclient.IArchive.raw_iter() method allows for incremental retrieval of arbitrarily large data for long time range. Async. iteration will yield samples in batches.

Blocking API

A blocking (threaded) API is also provided as a convenience for interactive usage.

from matplotlib.pyplot import *
from aaclient.threading import getArchive
A=getArchive()

# Request ~1000 points of "caplotbinning" data
# suitable for quick/efficient visualization of a
# long time range
V,M = A.plot('CO2:CO2-I', T0='-7 d', count=1000)

figure()
plot_date(M.time_mpl, V[:,0], '-')
grid(True)

# Request complete (raw) data for a (shorter)
# time range
figure()
V,M = A.raw('CO2:CO2-I', T0='-12 h')
plot_date(M.time_mpl, V[:,0], '-')
grid(True)

show()

Project details


Download files

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

Source Distribution

aaclient-0.0.5.tar.gz (146.5 kB view details)

Uploaded Source

Built Distributions

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

aaclient-0.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (269.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

aaclient-0.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (269.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

aaclient-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (270.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

aaclient-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (269.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

aaclient-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (270.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

aaclient-0.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (269.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

aaclient-0.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (271.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file aaclient-0.0.5.tar.gz.

File metadata

  • Download URL: aaclient-0.0.5.tar.gz
  • Upload date:
  • Size: 146.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for aaclient-0.0.5.tar.gz
Algorithm Hash digest
SHA256 db5d50de677dd7fffb7686593a4aa3a11ef3fdba20c16bf9314a086fb2e05421
MD5 ff79234bab09330d7931cc8eeea066fe
BLAKE2b-256 6ea4c2cffc81d79a2650febe70b6343d54e6caa94abe23f0169608d5c35c0107

See more details on using hashes here.

File details

Details for the file aaclient-0.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aaclient-0.0.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 695412f44f9956d32cf64786c6985d06c20d8ce9f67f02e37c4216e0679ba238
MD5 72eb3b9a8419cbf80a40944bb9a72925
BLAKE2b-256 10a1b1da96a49cc2a4a4a352860c47de1d95d2b718f46742ab125a7278d38841

See more details on using hashes here.

File details

Details for the file aaclient-0.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aaclient-0.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e9459f5c5d33079efdf0ab1d2044141835719f46cfe1994aa4fa69faefb89a11
MD5 cd0dfef2d02fe2c18f36bc8b77bccb64
BLAKE2b-256 b9f5fb13f0de0d134e0b207691dadb8b174ae361118256156b6b57862a0aa226

See more details on using hashes here.

File details

Details for the file aaclient-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aaclient-0.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 46e549ca096ed3656b737fadab67342d5ac89421883df449c9e7ee19815a65b3
MD5 e14786bc0e3802f63670776f6e3f88be
BLAKE2b-256 eec1b46c85485da6051e87b9e469bc490b186c23846806d70ec4edc21ff87659

See more details on using hashes here.

File details

Details for the file aaclient-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aaclient-0.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9cebab09d4b358f91e9276341d17c792497fef8047d1f46952eff544faf47d8f
MD5 e46f1c65f53380d24e2cde3afdf1ebc4
BLAKE2b-256 1a97cf83a58dd9cbbe58673f9b9440941f15e58b60c7b1fdb5a76c8f8aa4d9ea

See more details on using hashes here.

File details

Details for the file aaclient-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aaclient-0.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d0255b4b6ff819153122d8cd8c4716a1dbd25a2d365095c3dc32d4a72c91623d
MD5 f6811f8990a1b0921283a6145c309c1a
BLAKE2b-256 71d30f0329aac7d9eaaf461a210d75e4114c54f5538a2e0da18002e36cdf0a1c

See more details on using hashes here.

File details

Details for the file aaclient-0.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aaclient-0.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ddc6980c09266c6096418623f14da1ca621f89123101004d959ff8b5004fc8ba
MD5 b1c9218b4e8373a0062bae3e6ff623ac
BLAKE2b-256 d1c3df0592796ca433b14027d72b515d6ff2f6e3207241b45de282b872fa5d05

See more details on using hashes here.

File details

Details for the file aaclient-0.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aaclient-0.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cbcbdb955ac0fbe46ad820dca3e17c46e28432718c654b511f4c9a23f9efcf82
MD5 55a02975030b7f0a7b7f165aa424b55c
BLAKE2b-256 2b7993bc6959278144b03746fe51d22eaf2fec8c89aadbccad9aafb64e3330a1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page