Skip to content
N-dimensional scans for ARTIQ
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs docs: Copy over Sphinx repr() -> str() monkey patch from ARTIQ proper Oct 11, 2019
examples examples: Ensure non-negative Rabi frequency/duration Aug 19, 2019
.bulldozer.yml CI: Try automatically rebasing to-be-auto-merged branches Aug 17, 2019

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, ndscan allows 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.

Quickstart guide

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 ion-trap/master branch; if you are an external user, you can find the necessary commits at dnadlinger/artiq@ndscan.

Once your environment is set up, install this package. For example, to use ndscan directly from the Git checkout:

(artiq) $ python 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/ 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.)

Developer notes

  • Format all code using YAPF, and make sure flake8 ndscan passes. 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.

  • conda contains 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.


If you are using ndscan (or it seems potentially interesting to you), feedback would be very much appreciated, either using the GitHub issue tracker or via email at

You can’t perform that action at this time.