yaq is by no means the first project to attempt to simplify scientific instrumental software design. The very name yaq (yet another acquisition) acknowledges this. The further sections of this page attempt to highlight similar projects that we are aware of. We attempt to briefly compare each project to yaq.
We choose to continue yaq development because we believe that yaq provides a uniquely elegant and flexible solution to instrumental software development. Our introduction to yaq page does a good job highlighting yaq's core design principles. Briefly, these principles include:
Bluesky is a data collection framework which aims to abstract away the task of collecting scientific data and metadata. The Bluesky Framework itself is purely focused on experimental control and data streaming, so it's truly orthogonal to yaq. Bluesky is part of a larger set of projects which include Ophyd, an object oriented hardware abstraction layer in Python. Ophyd has similar goals to yaq, although without the modular client/daemon design.
The project ophyd-yaq aims to provide a bridge to consume yaq daemons within Ophyd and Bluesky.
EPICS is a set of software tools and applications which provide a software infrastructure for use in building distributed control systems to operate devices such as Particle Accelerators, Large Experiments and major Telescopes. EPICS is in many ways very similar to yaq. The complex interface that EPICS defines, while impressive, is likely too challenging for implementation by the "everyday scientist". yaq tries to differentiate itself with it's much simpler interface.
Exopy is a all-in-one data acquisition software solution. It attempts to provide a graphical interface to a variety of hardware. In contrast, yaq attempts only to provide a unified interface to a set of daemons. Exopy has built in support for a variety of existing hardware.
Instrbuilder is a unified interface for the control of electrical instruments in Python. It attempts to support any instrument that uses ASCII textual string communication (such as SCPI). In contrast, yaq is completely agnostic to the hardware interface. Instrbuilder is meant to be run locally within a singular Python process. Instrbuilder does plug in to Bluesky.
Instrumental provides high level Python drivers for a variety of lab hardware. It's meant to be run locally within a singular Python process.
Latnz provides a consistent hardware interface within Python. It's meant to be run locally within a singular Python process. From what we can tell, Lantz may be abandoned.
Micro-Manager is a really cool project which focuses on being a comprehensive solution for driving microscopes. Like yaq, they focus on consistent hardware interfaces: they define classes of hardware which have the same C++ interface. The Software for Microscopy Workshop White Paper is a good read for anyone interested in the future of the project.
PyMeasure makes scientific measurements easy to set up and run. The package contains a repository of instrument classes and a system for running experiment procedures, which provides graphical interfaces for graphing live data and managing queues of experiments. Both parts of the package are independent, and when combined provide all the necessary requirements for advanced measurements with only limited coding.
The Python Microscopy Environment is an open-source package providing image acquisition and data analysis functionality for a number of microscopy applications, but with a particular emphasis on single molecule localisation microscopy.```suggestion:-0+0 The PYthon Microscopy Environment is an open-source package providing image acquisition and data analysis functionality for a number of microscopy applications, but with a particular emphasis on single molecule localisation microscopy. It has a much narrower focus than yaq.
Qcodes is a Python-based data acquisition framework developed by the Copenhagen / Delft / Sydney / Microsoft quantum computing consortium. They have an impressive list of supported hardware.
Qudi is a general, modular, multi-operating system suite written in Python 3 for controlling laboratory experiments. It provides a structured environment by separating functionality into hardware abstraction, experiment logic and user interface layers.
A Python platform for controlling custom laboratory experiments and visualizing scientific data.
This is a repository of code developed in the Zhuang lab and the Babcock lab for the acquisition of STORM movies. It is an all-in-one Python3 / PyQt5 application.
built 2020-08-18 17:11:11 CC0: no copyright