Skip to main content

PyAcquisition

pyacquisition is a powerful Python package designed to simplify the process of recording scientific data and controlling laboratory instruments. It abstracts away the complexities of instrument communication, task scheduling (both concurrent and sequential), data recording, and logging, allowing you to focus on the science. Whether you're managing a single instrument or orchestrating a complex experimental workflow, pyacquisition provides a framework that simplifies the process dramatically.

Check out the installation and getting started pages to get going.

Objectives

Be an 'all-python' solution for interfacing with instruments and automating experimental procedures. Python has become the first choice of many for data analysis and scripting. We don't want to have to learn a second language just for interfacing with hardware or generating a GUI. You need only use python (and possibly a .toml config file).

Be up and running in minutes, not hours. pyacquisition is designed to be simple and 'batteries-included'. We want to absolutely minimize your development time in all major use-cases.

Be 'one-size-fits-most'. There will inevitably be cases that are not well suited to the workflow offered by pyacquisition, but it is hoped that we can help in the majority of instances. We've tried to design for maximum flexibility whilst keeping the API reasonably simple.

Forget the GUI. User interfaces are difficult and time consuming. Writing a robust GUI in Qt may well take longer than writing the rest of your experiment and analysis code combined. pyacquisition generates the entire UI programmatically.

Offer minimal barrier to entry for those who are not advanced python users. Whilst it will be helpful to understand the basics of object oriented and asynchronous programming, getting going with pyacquisition is as simple as composing a .toml configuration file and running a two-line script. Adding custom functionality can mostly be accomplished by following some worked examples in most cases.

A Short Example

A short configuration file interfacing with a Stanford Research Instruments SR 830 lock-in amplifier:

[experiment]
root_path = "C://data"

[data]
path = "my_data_folder"

[instruments]
clock = {instrument = "Clock"}
lockin = {instrument = "SR_830", adapter = "pyvisa", resource = "GPIB0:7:INSTR"}

[measurements]
time = {instrument = "clock", method = "timestamp_ms"}
voltage = {instrument = "lockin", method = "get_x"}

A short script running the experiment from the configuration file:

from pyacquisition import Experiment

my_experiment = Experiment.from_config('my_configuration_file.toml')
my_experiment.run()

Metadata

Release files for pyacquisition 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyacquisition 0.3.0
File Size Uploaded
pyacquisition-0.3.0.tar.gz 1.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyacquisition 0.3.0
File Interpreter ABI Platform
pyacquisition-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.2 MB

Release files / pyacquisition-0.3.0.tar.gz

Download URL pyacquisition-0.3.0.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
bb42123ee7babb6b4d617de7198ef12c94a57c08db7172e4ad4e00e3e74372e5
BLAKE2b-256 checksum
How to use checksums
733e834b8c1b082264ed2474bf80c7c3e173d6267a707925660c8cc3cabcee30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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}

Release files / pyacquisition-0.3.0-py3-none-any.whl

Download URL pyacquisition-0.3.0-py3-none-any.whl
Size 338.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4319168ff5d7390d37faf8b8ce7063bd81969cff092692c689a5a273ce4f626
BLAKE2b-256 checksum
How to use checksums
f9714844aadf9136454f908ca074d2f1c9b203726a28a90dd122e633c09474c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","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}

Release history Release notifications | RSS feed

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release 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