What is labrad - syue99/Lab_control GitHub Wiki

Introduction

LabRAD is a server/client based experimental control that allows asynchronous programming for complicated experiments requiring automation of physical devices that can block system resources. LabRAD is advantageous as it is one of the very old systems developed with a lot of potential devices compatible in the system (although many needs to be trimmed as the version control of LabRAD is pretty bad). Its server/client modular structure and asynchronous features also makes it very flexible. For example, users can run LabRAD with arbitrary module combinations. Unused modules will not cause errors if you don't run them. Also as LabRAD only uses single thread (unless some modules called multithread functions), it rarely has strange seg-fault. This makes it a very user friendly system to start with. Also, this makes its structure flat (often there are only 2-3 layers from UI to infra) in a way that it is easier to debug compared to those systems who have 5-6 layers.

Labrad Structure An example setup from Prof. Haefner's lab. You can see it's really flexible. You can run any servers from any computers that drive any instruments.

Labrad_RSG Honestly Labrad's UI isn't pretty. Pyqt5 is not that fancy compare to other commercial platform such as Labber

Our Wiki

We will give an introduction to its server/client structures and talk about the all the servers and clients programed used by our current Dev version of the LabRAD here at NYU. We will also talk about the layers required to run an experiment, data-pipelines and how to improve the future labrad. For a quick outline of what asynchronous programming is and how it works with clients and servers read this excerpt from the krondo twisted tutorial. (Although it is not required, twisted will automatically queue your jobs asynchronously).

Although LabRAD (written in Scala now) is the backbone of this control it is primarily used in conjunction with a Python API called pylabrad. This allows Python to interface with the LabRAD manager which in turn manages servers and client communication either locally or over ethernet. Additionally the twisted python package is used to allow asynchronous programming in python. One can keep an eye or even report on the issues sections of the Pylabrad if you believe you have met some infra-related bugs but honestly I have never met one so far.

Back to Main Wiki