Giter Site home page Giter Site logo

ndscan's Introduction

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 beta-grade software. While the system has been carefully architected and the library is in active use within the Ion Trap Quantum Computing Group, large parts of the implementation are still best considered a minimum viable product. If you cannot work out how a particular use case would be addressed using the library, please do get in touch: Many common lab scenarios will already be accommodated by the current design, but perhaps the necessary interfaces were not publicly exposed to keep the library easy to learn and flexible in terms of implementation during initial development. Other tasks might require extensions to the library, but detailed design ideas for them might already exist.

Quickstart guide

To get started with ndscan, first prepare a Python 3.8+ environment with ARTIQ as usual (Nix, Conda or some form of virtualenv is recommended). As of ARTIQ 7 (m-labs/artiq@dd928fc), the upstream ARTIQ version can be used without additional changes; for ARTIQ 6, see dnadlinger/artiq@release-6-ndscan for a few required patches.

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 ARTIQ 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/rabi_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.)

To avoid all the scan results continuously accumulating in the dataset database, run the janitor process:

(artiq) $ ndscan_dataset_janitor

ndscan_dataset_janitor tracks when experiments finish and cleans up the generated datasets after a few minutes of delay. It should typically be started alongside artiq_master.

Developer notes

Please refer to the documentation for more details, in particular the coding conventions and design retrospective sections.

conda/ contains a very rudimentary Conda package definition for ease of integration with a legacy continuous integration pipeline used in the Oxford Ion Trap Quantum Computing group. The package has a number of issues (e.g. missing dependencies), and won't ever be published on a public channel, as the ARTIQ community is moving away from Conda.

Contact

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 [email protected].

ndscan's People

Contributors

dnadlinger avatar cjbe avatar pmldrmota avatar lochsh avatar mbirtwell avatar hartytp avatar vmsch avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.