vli In general I have a similiar setup to what connorgoham describes in their post. Grouping of parameters is most easily done with the group
parameter (as they said as well):
self.setattr_argument(
"trap_attenuation", NumberValue(
default = 7*dB,
min = 0*dB,
max = +31.5*dB,
step = 1*dB, unit = "dB",
ndecimals = 4
), group = "Trap RF drive", tooltip = "Attenuation trap"
)
self.setattr_argument(
"trap_frequency", NumberValue(
default = 13.642*MHz,
min = 0*MHz,
max = +20*MHz,
step = 0.001*MHz, unit = "MHz",
ndecimals = 8
), group = "Trap RF drive", tooltip = "Trap RF frequency"
)
self.setattr_argument(
"trap_phase", NumberValue(
default = 0,
min = 0,
max = 360,
step = 0.01, unit = "",
ndecimals = 8
), group = "Trap RF drive", tooltip = "Phase trap RF"
)
For reusing sequences, I also use HasEnvironment
subclasses, e.g. for a bit more comfortable access to the Urukul or Zotino controllers. I do not use a GUI to rearrange the methods of these subclasses or anything like that, it is all done in code by writing separate experiments. I am also not aware of any established GUI that supports this.
As for a snapshot of the GUI, it is just the artiq_dashboard
supplied by ARTIQ itself, so it is not that interesting. What I will add is, that you can put python files in subfolders in the repository
main folder and these will then be represented in the Dashboard explorer as well. This makes it easy to group experiments by their purpose (e.g. Ion Loading, Set Laser Parameters, ...)
If you have any other questions, just go ahead and ask, but I think it would help if you have a specific example in mind, that is representative for something you want to accomplish and you can then also share some of the code/work you have done so far. That makes it easier to discuss advantages and disadvantages of certain approaches.