ndscan – N-dimensional scans for ARTIQ
ndscan extends the ARTIQ real-time
laboratory control system with the concept of fragments – building blocks that
accept parameters and produce result data – and tools for productively working
with experiments consisting of many such parts. In particular,
users to easily override parameters from anywhere in the system on the fly, and
to acquire data by iterating over (“scanning”) any number of them at a time.
See the documentation for more information.
ndscan is pre-alpha software. While the system has been carefully
architected and the library is in active use within the
Ion Trap Quantum Computing Group,
the current implementation is very much a minimum viable product in spirit
and mostly lacks documentation and tests.
To get started with
ndscan, first prepare a Python 3.5+ environment with
ARTIQ as usual (Conda or some form of virtualenv is recommended). While the
intention is for ndscan to be a pure add-on to ARTIQ, some required patches
have not made their way into the official (m-labs) upstream repository yet.
For now, use the
branch; if you are an external user, you can find the necessary commits at
Once your environment is set up, install this package. For example, to use ndscan directly from the Git checkout:
(artiq) $ python setup.py develop
If you haven't already, also install the oitg package.
You are then ready to run the sample experiments. Start the ARITQ master process as usual
(artiq) $ artiq_master
and launch the dashboard with the ndscan plugin loaded
(artiq) $ artiq_dashboard -p ndscan.dashboard_plugin
Now, navigate to the
examples/flop.py file in the experiment explorer, and
you should be able to play around with the scan interface. (Applets are created
automatically; you might want to set the CCB mode to "Create and enable/disable
applets" in the applets dock.)
Format all code using YAPF, and make sure
flake8 ndscanpasses. Configuration files for both are included, and are picked up automatically. It is just not worth spending time to obsess or argue about formatting details.
Unit tests are run using
python -m unittest -v discover test.
condacontains a very rudimentary Conda package definition for integration with the continuous integration pipeline internal to the Ion Trap Quantum Computing group. The package is not currently published on a public Conda channel, and likely won't ever be.