Hey everyone,

at Institute of Science and Technology Austria we have developed Quantrol, a user interface that has a table like structure, allows variable definition, use of mathematical expressions, 1D multivariable scan and many more. It was developed for our system, has some minor inconveniences regarding the logger being not fully representative and was done by me, a person who is a physicist by education. It starts the artiq server, generates python like experimental descriptions and schedules them.

We are willing to make it public, as we believe most of the times our GUI would suffice the requirements of quantum experiments as a standalone program. Although we would like seek an advice and help from more experienced professionals to have a look at how I did it and discuss about how to make it easily adjustable to any architecture (by looking at the device_db.py and changing the GUI structure accordingly). I feel that the most of the hard work is already done and I also believe that the existance of such a GUI will help the community.

Here are some of the snapshots of the GUI:


Please let me know if you would be interested in being involved.

    5 days later

    Thanks for posting about this. I'm glad you found the abstraction between the stock GUI (artiq_dashboard) and the backend (artiq_master) to be extensible. Sebastien did a really nice job at many levels of keeping ARTIQ subsystems compartmentalized. I think there are several AMO groups that will appreciate your GUI. I gather it's similar to the approach used in LabScript (Chris Billington).

    https://github.com/labscript-suite/labscript-suite

    The best way to get feedback is to post a link to your github. I'll forward this post to colleagues at JQI and ARL in Maryland who use LabScript.

    • vli replied to this.

      jbqubit Thanks for your reply. The control GUI is simply built in PyQt5. When the program is initialized it starts the artiq session and helps scheduling experiments in a parrallel manner without stopping the program itself. User can describe the experimental sequence by addind time edges and modifying digital, analog, DDS chanels. After clicking "run experiment" button it generates the python like description of the experiment and then sends it to the scheduler to run it. It does not allow to use prepare, analyze of the experiment. However, those can be hard coded on top of the generated py file.

      I am defending my PhD thesis today and will need to add some explanations on the GitHub as I was working on it alone. After that I will post the link here.

      I have about 2 months left in the group before I leave and I would be happy to discuss the implementation details and how it can be easily modified to be used on any other Sinara based system. Currently it is hard coded for our system, but I see a relatively easy tweak one can do to use the device_db.py to build the GUI accordingly.

      @vli, nice work, and good luck with your PhD thesis defence! May I ask why you used PyQt5 instead of some web frameworks, e.g., React with Tailwind?

      • vli replied to this.
        4 days later

        bodokaiser Hi, I used PyQt5 as this was the first thing that poped out when I searched for GUI with python. I was not even aware of other options and I needed to make it work fast.

        18 days later

        vli
        This is a great project, good luck with your PhD debate and look forward to your launch

        5 days later

        I have added a very straightforward adaptation for using Quantrol with MSYS2 Clang64. Checkout the readme of the repository. I am pretty sure there is a better way of doing it, but my time as a Physicist is almost over.