labscript-suite

Metapackage for the 𝘭𝘒𝘣𝘴𝘀𝘳π˜ͺ𝘱𝘡 𝘴𝘢π˜ͺ𝘡𝘦 experiment control and automation system

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

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • βœ“
    CITATION.cff file
    Found CITATION.cff file
  • βœ“
    codemeta.json file
    Found codemeta.json file
  • βœ“
    .zenodo.json file
    Found .zenodo.json file
  • βœ“
    DOI references
    Found 21 DOI reference(s) in README
  • βœ“
    Academic publication links
    Links to: arxiv.org
  • βœ“
    Committers with academic emails
    1 of 8 committers (12.5%) from academic institutions
  • β—‹
    Institutional organization owner
  • β—‹
    JOSS paper metadata
  • β—‹
    Scientific vocabulary similarity
    Low similarity (8.4%) to scientific vocabulary

Keywords

experiment-control labscript-suite quantum-eng quantum-science
Last synced: 6 months ago · JSON representation ·

Repository

Metapackage for the 𝘭𝘒𝘣𝘴𝘀𝘳π˜ͺ𝘱𝘡 𝘴𝘢π˜ͺ𝘡𝘦 experiment control and automation system

Basic Info
  • Host: GitHub
  • Owner: labscript-suite
  • License: bsd-2-clause
  • Language: Python
  • Default Branch: master
  • Homepage: http://labscriptsuite.org
  • Size: 1.62 MB
Statistics
  • Stars: 31
  • Watchers: 4
  • Forks: 41
  • Open Issues: 17
  • Releases: 0
Topics
experiment-control labscript-suite quantum-eng quantum-science
Created almost 6 years ago · Last pushed 11 months ago
Metadata Files
Readme License Citation

README.md

the labscript suite

the labscript suite  labscript the labscript suite  runmanager the labscript suite  blacs the labscript suite  lyse the labscript suite  runviewer

Experiment control and automation system

Actions Status Documentation Status License Python Version PyPI Conda Version Google Group DOI

The labscript suite is a powerful and extensible framework for experiment composition, control, execution, and analysis. Developed for quantum science and quantum engineering; deployable in laboratory and in-field devices. Also applicable to optics, microscopy, materials engineering, biophysics, and any application predicated on the repetition of parameterised, hardware-timed experiments.

This is a metapackage for the labscript suite. Formerly the labscript suite installer repository, prior to the packages being installable via PyPI and Anaconda Cloud.

Features:

  • Flexible and automated oversight of heterogeneous hardware.
  • The most mature and widely used open-source control system in quantum science.
  • Multiple analysis-based feedback modes.
  • Extensible plugin architecture (e.g. machine learning online optimisation).
  • Readily integrates with other software, including image acquisition, analysis, and even other control systems.
  • Compose experiments as human-readable Python code, leveraging modularity, revision control and re-use.
  • Dynamic visualisation of experiment composition and results.
  • Remote operation: different modules can run on physically separate hosts / single modules can be run on multiple hosts (including hardware supervisor, blacs).
  • Auto-generating user-interfaces.
  • High-level scripting: user-interface interaction can be programatically synthesised.

Table of contents

Installing the labscript suite

We're excited to announce that accompanying the recent migration to GitHub, labscript suite components are now distributed as Python packages on PyPI and Anaconda Cloud.

This makes it far easier to get started using the labscript suite, as you no longer require a Mercurial or Git installation (or any knowledge of version control software); components can be installed and upgraded using:

  • pip: the standard package manager common to all Python distributions; or
  • conda: a binary package and environment manager, part of the Anaconda Python distribution.

For further information, please see the documentation, which includes information about both regular and developer (editable) installations of the labscript suite.

Recent changes to the labscript suite

Upon migrating the code base to GitHub and publishing distributions on PyPI in AprilMay 2020, existing users should be aware of the following recent changes.

Profile directories

The labscript suite profile directory, containing application configurations, logs, and user-side code, is now located by default in the current user's home directory, e.g. for a local user named wkheisenberg this is:

  • C:\Users\wkheisenberg\labscript-suite on Windows.
  • ~/labscript-suite or /home/wkheisenberg/labscript-suite on Linux and Mac OS X.

A typical structure of the profile directory is:

~/labscript-suite/ app_saved_configs/ default_experiment/ labconfig/ logs/ userlib/ analysislib/ labscriptlib/ pythonlib/ user_devices/

This structure is created by calling the command labscript-profile-create in a terminal after installing labscript-utils (per the installation instructions).

Note: As of labscript-suite/labscript-utils#37 an editable installation can be located within the labscript-suite profile directory.

Secure communication

Interprocess communication between components of the labscript suite is based on the ZeroMQ (ZMQ) messaging protocol. We have supported secure interprocess communication via encrypted ZMQ messaging since February 2019 (labscript-utils 2.11.0).

As of labscript-utils 2.16.0, encryted interprocess communication will be the default. If you haven't already, this means you'll need to create a new shared secret (or pre-shared key) as follows:

  1. Run python -m zprocess.makesecret from the labconfig directory.

  2. Specify the path of the resulting shared_secret in your labconfig. For example:

    ini [security] shared_secret = %(labscript_suite)s/labconfig/zpsecret-09f6dfa0.key

  3. Copy the same pre-shared key to all computers running the labscript suite that need to communicate with each other, repeating step 2 for each of them.

Treat this file like a password; it allows anyone on the same network access to labscript suite programs.

If you are on a trusted network and don't want to use secure communication, you may instead set:

ini [security] allow_insecure = True

Notes:

  • Steps 1 and 2 are executed automatically as part of the labscript-profile-create command. However, for multiple hosts, step 3 above must still be followed to ensure the same public-key is used by all hosts running labscript suite programs.

  • There is an outstanding issue with the ZMQ Python bindings on Windows (zeromq/pyzmq#1148), whereby encryption is significantly slower for Python distributions other than Anaconda. Until this issue is resolved, we recommend that Windows users on an untrusted network use the Anaconda Python distribution (and install pyzmq using conda install pyzmq).

Application shortcuts

Operating-system menu shortcuts, correct taskbar behaviour, and environment activation for the Python GUI applications (blacs, lyse, runmanager, and runviewer) is now handled by a standalone Python package desktop-app (per installation instructions above). This currently supports Windows and Linux (Mac OS X support is forthcoming).

Source code structure (developer installation)

Existing users who move to a developer (editable) installation, please note the following structural changes to the labscript suite source code:

  • Each package has a top-level folder containing setup.py and setup.cfg used to build a distribution from source. The functional code base now resides in a subfolder corresponding to the name of the Python module, e.g. an editable installation might contain folders:

    <path-to-your-labscript-installation>/ blacs/ blacs/ labscript/ labscript/ labscript-devices/ labscript_devices/ labscript-utils/ labscript_utils/ lyse/ lyse/ runmanager/ runmanager/ runviewer/ runviewer/

  • Package names (shared by repositories and top-level folders) are now hyphenated, e.g. labscript-devices and labscript-utils.

  • Module names remain underscored, e.g. labscriptdevices and labscriptutils.

  • The mixing of hyphen and underscores is inelegant but conventional.

  • All references to blacs are now lowercase.

  • As installation no longer requires a separate package, the repository formerly named installer has been renamed to labscript-suite, and is a metapackage for the labscript suite (installing it via pip/conda installs the suite).

Versioning (developer installation)

Aside from the maintenance branches documented here, versions of the labscript suite packages are introspected at run-time using either the importlib.metadata library (regular installations) or setuptools_scm (developer installations). Thus any changes to an editable install will be traceable by local version numbers, e.g. editing the released version of a package with version 2.4.0 will result in 2.4.0dev1+gc28fe94, for example. This will help us diagnose issues users have with their editable installations.

BitBucket archive

In AprilMay 2020 the labscript suite code base was migrated from BitBucket to GitHub. All commit history and issues was preserved, however some repository metadata (such as pull request discussions) could not be migrated directly. As such, we have created an archived copy of everything that was on BitBucket. This includes:

  • Issues (as they appear on BitBucket);
  • Pull requests discussions;
  • Commit comments for every labscript suite repository; and
  • Every public fork (as of 1st February, 2020).

This archive can be found at bitbucket-archive.labscriptsuite.org (this page can take some time to load for the first time). Copies of every public fork of our repositories are at github.com/labscript-suite-bitbucket-archive. As this is an archive, we will not be transferring ownership of these repositories back to their original owners. However, should you wish to continue development on one of those repositories you can fork it into your own account through the GitHub web interface. Should you have uncommitted changes (or changes made after 1st February, 2020) that you wish to have archived, please contact us to discuss the best approach to including these. Please note that we are not recommending continuing development in such forks long term, due to the changes in package structure outlined above.

Further information about migrating your own customisations of the labscript suite can be found here.

Contributing to the labscript suite

We are very grateful for all the contributions users have made in the past decade to make the labscript suite the most widely used open-source experiment control and automation system in quantum science. These include development, suggestions, and feedback, and we look forward to this continuing on GitHub.

Issue tracking

The issue tracking on GitHub is very similar to BitBucket, with the added advantage that you can add inter-repository issue references, e.g. referring to labscript-suite/runmanager#68 in any issue or pull request will link to the corresponding issue. We have imported all issues from the BitBucket repositories into the GitHub repositories. This import is not perfect (as each comment is now posted by Phil Starkey) but the comments have been modified to contain the original author attribution. We have also updated all links to files, pull requests, issues, and commits so that they point to the equivalent GitHub location and/or the archived copy of the data (as discussed above).

Please use the issue tracker of the relevant GitHub repository for:

  • Reporting bugs (when something doesn't work or works in a way you didn't expect);
  • Suggesting enhancements: new features or requests;
  • Issues relating to installation, performance, or documentation.

For advice on how to use the existing functionality of the labscript suite, please use our mailing list.

Request for developers

We would like to reaffirm our invitation for users to directly contribute toward developing the labscript suite. We have established a separate discussion forum on Zulip for discussing development direction and design. If you are interested in being a part of these discussions, and/or testing and merging pull requests, please reach out to us.

Further guidance on contributingincluding the branching model we use, and the procedure for issuing pull requestscan be found in the documentation.

Citing the labscript suite

If you use the labscript suite to control your experiment or perform analysis, please cite one or more of the following publications:

P. T. Starkey, A software framework for control and automation of precisely timed experiments. PhD thesis, Monash University (2019). ```bibtex @phdthesis{starkey_phd_2019, title = {State-dependent forces in cold quantum gases}, author = {Starkey, P. T.}, year = {2019}, url = {https://doi.org/10.26180/5d1db8ffe29ef}, doi = {10.26180/5d1db8ffe29ef}, school = {Monash University}, } ```
C. J. Billington, State-dependent forces in cold quantum gases. PhD thesis, Monash University (2018). ```bibtex @phdthesis{billington_phd_2018, title = {State-dependent forces in cold quantum gases}, author = {Billington, C. J.}, year = {2018}, url = {https://doi.org/10.26180/5bd68acaf0696}, doi = {10.26180/5bd68acaf0696}, school = {Monash University}, } ```
A scripted control system for autonomous hardware-timed experiments, Review of Scientific Instruments 84, 085111 (2013). arXiv:1303.0080. ```bibtex @article{labscript_2013, author = {Starkey, P. T. and Billington, C. J. and Johnstone, S. P. and Jasperse, M. and Helmerson, K. and Turner, L. D. and Anderson, R. P.}, title = {A scripted control system for autonomous hardware-timed experiments}, journal = {Review of Scientific Instruments}, volume = {84}, number = {8}, pages = {085111}, year = {2013}, doi = {10.1063/1.4817213}, url = {https://doi.org/10.1063/1.4817213}, eprint = {https://doi.org/10.1063/1.4817213} } ```

Owner

  • Name: the labscript suite
  • Login: labscript-suite
  • Kind: organization
  • Email: labscriptsuite@gmail.com

The 𝘭𝘒𝘣𝘴𝘀𝘳π˜ͺ𝘱𝘡 𝘴𝘢π˜ͺ𝘡𝘦 is a powerful and extensible framework for experiment composition, control, execution, and analysis

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use the labscript suite to control your experiment or perform analysis, please cite the article from preferred-citation and the software itself."
title: The labscript suite
authors:
  - name: "The labscript-suite development team"
abstract: "A powerful and extensible framework for experiment composition, control, execution, and analysis that implements repeated, parameterised, hardware-time experiments."
keywords:
  - research
  - "experiment composition"
  - "experiment control"
  - "experiment analysis"
  - "quantum science"
  - "quantum engineering"
  - hardware-timed
license: BSD-2-Clause
repository-code: "https://github.com/labscript-suite"
url: "https://docs.labscriptsuite.org/en/latest/"

references:
- type: software
  authors:
    - family-names: Billington
      given-names: Chris J.
  title: zprocess
  repository-code: "https://github.com/chrisjbillington/zprocess"
- type: software
  authors:
    - family-names: Starkey
      given-names: Philip
    - family-names: Billington
      given-names: Chris J.
  title: qtutils
  repository-code: "https://github.com/philipstarkey/qtutils"
  url: "https://qtutils.readthedocs.io/en/stable/"
- type: software
  authors:
   - family-names: Billington
     given-names: Chris J.
  title: spinapi
  repository-code: "https://github.com/chrisjbillington/spinapi/"
- type: software
  authors:
   - family-names: CladΓ©
     given-names: Pierre
  title: PyDAQmx
  repository-code: "https://github.com/clade/PyDAQmx"
  url: "https://pythonhosted.org/PyDAQmx/"
- type: software
  authors:
   - family-names: Johnson
     given-names: Peter
   - family-names: Billington
     given-names: Chris J.
  title: pynivision
  repository-code: "https://github.com/chrisjbillington/pynivision"
- type: phdthesis
  authors:
    - family-names: Billington
      given-names: Chris J.
  title: "State-dependent forces in cold quantum gases"
  school: "Monash University"
  year: 2018
  doi: 10.26180/5bd68acaf0696
  scope: "Chapter 4 provides an excellent, detailed overview of the labscript-suite"
- type: phdthesis
  authors:
    - family-names: Starkey
      given-names: Philip
  title: "A software framework for control and automation of precisely timed experiments"
  school: "Monash University"
  year: 2019
  doi: 10.26180/5d1db8ffe29ef
  scope: "This provides an in-depth description of the labscript-suite, circa 2019"

preferred-citation:
  type: article
  title: A scripted control system for autonomous hardware-timed experiments
  authors:
    - family-names: Starkey
      given-names: Philip T.
    - family-names: Billington
      given-names: Christopher J.
      orcid: "https://orcid.org/0000-0002-8067-6400"
    - family-names: Johnstone
      given-names: Shaun P.
      orcid: "https://orcid.org/0000-0002-4704-9552"
    - family-names: Jasperse
      given-names: M.
    - family-names: Helmerson
      given-names: K.
    - family-names: Turner
      given-names: Lincoln D.
    - family-names: Anderson
      given-names: Russell P.
      orcid: "https://orcid.org/0000-0002-4495-7926"
  doi: "10.1063/1.4817213"
  journal: "Review of Scientific Instruments"
  month: 8
  year: 2013
  start: 085111 # page number
  issue: 84

GitHub Events

Total
  • Issues event: 5
  • Watch event: 6
  • Issue comment event: 5
  • Push event: 2
  • Pull request review comment event: 2
  • Pull request review event: 4
  • Pull request event: 5
  • Fork event: 10
Last Year
  • Issues event: 5
  • Watch event: 6
  • Issue comment event: 5
  • Push event: 2
  • Pull request review comment event: 2
  • Pull request review event: 4
  • Pull request event: 5
  • Fork event: 10

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 199
  • Total Committers: 8
  • Avg Commits per committer: 24.875
  • Development Distribution Score (DDS): 0.558
Top Committers
Name Email Commits
Chris Billington c****n@g****m 88
Russell Anderson 5****n@u****m 46
David Meyer d****m@u****m 22
philipstarkey p****y@u****m 20
David Meyer d****r@g****m 17
Shaun Johnstone s****e@m****u 4
RbChip d****l@l****t 1
johannesschabbauer 7****r@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 62
  • Total pull requests: 35
  • Average time to close issues: over 1 year
  • Average time to close pull requests: about 2 months
  • Total issue authors: 9
  • Total pull request authors: 8
  • Average comments per issue: 2.52
  • Average comments per pull request: 1.83
  • Merged pull requests: 33
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 5
  • Pull requests: 5
  • Average time to close issues: 7 months
  • Average time to close pull requests: 20 days
  • Issue authors: 3
  • Pull request authors: 3
  • Average comments per issue: 0.6
  • Average comments per pull request: 0.8
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • philipstarkey (39)
  • dihm (13)
  • chrisjbillington (3)
  • dsbarker (1)
  • Jezz3 (1)
  • ispielma (1)
  • manuelmorgado (1)
  • Json-To-String (1)
  • haroonsaeed262 (1)
Pull Request Authors
  • dihm (22)
  • rpanderson (7)
  • chrisjbillington (4)
  • philipstarkey (4)
  • Jezz3 (2)
  • rogding (2)
  • vvybclock (1)
  • johannesschabbauer (1)
Top Labels
Issue Labels
minor (20) bug (19) enhancement (11) major (11) documentation (8) task (6) proposal (5) critical (2) trivial (1)
Pull Request Labels
documentation (16) bug (1) minor (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 128 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 9
  • Total maintainers: 4
pypi.org: labscript-suite

Meta-package for the labscript suite experiment control and automation system

  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 128 Last month
Rankings
Forks count: 7.6%
Dependent packages count: 10.1%
Stargazers count: 13.2%
Average: 15.0%
Dependent repos count: 21.5%
Downloads: 22.9%
Last synced: 6 months ago

Dependencies

.github/workflows/release.yml actions
  • RalfG/python-wheels-manylinux-build v0.4.2 composite
  • actions/checkout v3 composite
  • actions/create-release latest composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • actions/upload-release-asset v1 composite
  • conda-incubator/setup-miniconda 1a875d105ac03256664b54c882c8c374ce617ef6 composite
  • conda-incubator/setup-miniconda v2 composite
  • maxim-lobanov/setup-xcode v1 composite
  • pypa/gh-action-pypi-publish release/v1 composite
  • pypa/gh-action-pypi-publish master composite
pyproject.toml pypi
setup.py pypi