Instruments

Instruments are the most important part of our experiments. Unfortunately, essentially every manufacturer and driver library has a different way of configuring, communicating with, reading from, and writing to instruments.

Also, most instrument drivers are synchronous, but the natural way of thinking about experiments is asynchronous (this is something LabView did correctly).

DAQuiri deals with these issues by letting you specify where to find controls/meaurements and settings on your instruments and wrapping them.

This seems like extra work but it’s straightforward and it provides many benefits.

Completely uniform access to axes

DAQuiri has only one API for axes, so if you swap out physical hardware none of your scan-level code has to change, just the location of the control on the physical instrument. The DAQuiri Axis API is also very simple with essentially two asynchronous functions: read and write.

Automated logging

DAQuiri can be configured to log all reads and writes to axes for you.

Coordinate transforms and logical axes

Because of the consistent API surrounding the wrapped axes, and because internally DAQuiri knows what kind of data every axis and setting corresponds to, you can easily create higher level descriptions of the degrees-of-freedom in your experiment with logical axes.

These logical axes can be used on the same footing as the physical axes that they abstract, and make the process of scripting your experiments simpler and less error prone.

Front panel generation

Finally, one of the largest advantages is that having wrapped a driver in axes and properties, DAQuiri will handle building UI “front panels” for you. This lets you write to axes separately from your experimental protocol, visualize measurements, and configure your instruments before the experiment.