Skip to content
@yaq-project

yaq

A modular and extensible instrument control framework.

Our logo

👋 Hello, and welcome to the GitHub home of the yaq project.

yaq---Yet Another acQuisition

We are building a modular and extensible instrument control framework on top of Apache Avro RPC. In human terms, this means we have designed a simple user-friendly interface to control scientific hardware (motors, sensors, etc) from Python. We already support lots of hardware, and more is being added all the time.

The yaq project has no official orchestration support. We don't have "smart" tools to define experimental scans and record data. Our only goal is to build an excelent interface for addressing hardware. Let yaq solve the annoying part (hardware interface support) while you focus on the fun part (your unique experiment). Write a simple script to try an interesting experiment. Use Jupyter to interact with your hardware. Use an existing project focused on orchestration e.g. Bluesky. Develop your own one-off application, e.g. Pressure Monitoring Reactor.

# minimal 2D scan---from scratch
import time
import yaqc
motor1 = yaqc.Client(port=38000)
motor2 = yaqc.Client(port=38001)
sensor = yaqc.Client(port=38002)
data = []
for m1 in range(-10, 10, 1):
    for m2 in range(0, 300, 5):
        motor1.set_position(m1)
        motor2.set_position(m2)
        for c in [motor1, motor2]:
            while c.busy():
                time.sleep(0.001)
        sensor.measure()
        while sensor.busy():
            time.sleep(0.001)
        reading = dict()
        reading["timestamp"] = time.time()
        reading["motor1"] = motor1.get_position()
        reading["motor2"] = motor2.get_position()
        reading.update(sensor.get_measured())
        data.append(reading)

Come join us!

Our website: https://yaq.fyi/

Chat room: https://matrix.to/#/#yaq:matrix.org

Community call: https://hackmd.io/team/yaq

Email listserve: https://groups.google.com/a/g-groups.wisc.edu/g/yaq

Publication: https://doi.org/10.1063/5.0135255

Pinned Loading

  1. yaq-fyi Public

    Main website for yaq documentation.

    HTML 4 6

  2. yeps Public

    yaq enhancement proposals

    HTML 2 2

  3. yaq-python Public

    Repository for yaq core python packages.

    Python 7 5

  4. yaqd-cookiecutter-python Public

    Cookiecutter template for making new yaq daemons using Python.

    Python 1 3

  5. yaq-traits Public

    Tooling for working with yaq traits.

    Python 2 3

  6. yaqd-control Public

    Command line tools for inspecting and controlling yaq daemons.

    Python 2 3

Repositories

Showing 10 of 61 repositories
  • yaqd-pololu Public

    Daemons for pololu motor controllers

    Python 0 LGPL-3.0 0 0 0 Updated Apr 17, 2025
  • yaqd-newport Public
    Python 2 LGPL-3.0 0 3 0 Updated Apr 10, 2025
  • Python 0 LGPL-3.0 1 0 1 Updated Apr 10, 2025
  • yaqd-zaber Public

    yaq daemons for Zaber Technologies products

    Python 0 LGPL-3.0 2 1 1 Updated Mar 3, 2025
  • yaqd-watchdog Public

    yaq daemons to set up "watchdog timer" rules

    Python 0 LGPL-3.0 1 3 2 Updated Mar 3, 2025
  • yaqd-vimbax Public

    Camera Daemons using the Vimba X API.

    Python 0 LGPL-3.0 0 0 1 Updated Mar 3, 2025
  • yaqd-vici Public

    yaq support for VICI hardware

    Python 0 LGPL-3.0 2 0 1 Updated Mar 3, 2025
  • yaqd-ti Public
    Python 0 LGPL-3.0 2 1 1 Updated Mar 3, 2025
  • yaqd-thorlabs Public
    Python 1 LGPL-3.0 3 4 7 Updated Mar 3, 2025
  • Python 0 LGPL-3.0 1 1 1 Updated Mar 3, 2025

Top languages

Loading…

Most used topics

Loading…