Skip to main content

Rydberg Sensor Interactive Quantum Physics Module

Project description

rydiqule

The Rydberg Interactive Quantum module is a modeling library designed to simulate the response of Rydberg atoms to arbitrary input RF waveforms. It also functions as a general master equation solver based on the semi-classical density matrix method.

PyPI Python Version License Docs

Please cite as

B. N Miller, D. H. Meyer, T. Virtanen, C. M O'Brien, and K. C. Cox, RydIQule: A Graph-based paradigm for modeling Rydberg and atomic sensors, Computer Physics Communications, 294, 108952 (2024) https://doi.org/10.1016/j.cpc.2023.108952

Installation

Installation is done via pip or conda. See below for detailed instructions.

In all cases, it is highly recommended to install rydiqule in a virtual environment.

Conda installation (recommended)

Installation via conda is recommended for rydiqule. It handles dependency installation as well as a virtual environment to ensure packages do not conflict with other usages on the same system. Finally, the numpy provided by anaconda has been compiled against optimized BLAS/LAPACK implementations, which results in much better performance in rydiqule itself.

Assuming you have not already created a separate environment for RydIQule (recommended), run the following to create a new environment:

(base) ~/> conda create -n rydiqule python=3.11
(base) ~/> conda activate rydiqule

RydIQule currently requires python >3.8. For a new installation, it is recommended to use the newest supported python.

Now install via rydiqule's anaconda channel. This channel provides rydiqule as well as its dependencies that are not available in the default anaconda channel. If one of these dependencies is outdated, please raise an issue with the vendoring repository.

(rydiqule) ~/> conda install -c rydiqule rydiqule

If you would like to install rydiqule in editable mode to locally modify its source, this must be done using pip. Follow the above to install rydiqule and its dependencies, then run the following to uninstall rydiqule as provided by conda and install the editable local repository.

(rydiqule) ~/> conda remove rydiqule --force
# following must be run from root of local repository
(rydiqule) ~/> pip install -e .

Note that editable installations require git. This can be provided by a system-wide installation or via conda in the virtual environment (conda install git).

While rydiqule is a pure python package (ie it is platform independent), its core dependency ARC is not. If a pre-built package of ARC is not available for your platform in our anaconda channel, you will need to install ARC via pip to build it locally before installing rydiqule. To see what architectures are supported, please see the vendoring repository.

Pure pip installation

To install normally, run:

pip install rydiqule

This command will use pip to install all necessary dependencies.

To install in an editable way (which allows edits of the source code), run the following from the root directory of the cloned repository:

pip install -e .

Editable installation requires git to be installed.

Confirm installation

Proper installation can be confirmed by executing the following commands in a python terminal.

>>> import rydiqule as rq
>>> rq.about()

        Rydiqule
    ================

Rydiqule Version:     1.1.0
Installation Path:    ~\Miniconda3\envs\rydiqule\lib\site-packages\rydiqule

      Dependencies
    ================

NumPy Version:        1.24.3
SciPy Version:        1.10.1
Matplotlib Version:   3.7.1
ARC Version:          3.3.0
Python Version:       3.9.16
Python Install Path:  ~\Miniconda3\envs\rydiqule
Platform Info:        Windows (AMD64)
CPU Count:            12
Total System Memory:  128 GB

Updating an existing installation

Upgrading an existing installation is simple. Simply run the appropriate upgrade command for the installation method used.

For conda installations, run the following command to upgrade rydiqule

conda upgrade rydiqule

For pip, you can use the installation command to upgrade. Optionally, include the update flag to greedily update dependencies as well.

pip install -U rydiqule

This command will also install any new dependencies that are required.

If using an editable install, simply replacing the files in the same directory is sufficient. Though it is recommended to also run the appropriate pip update command as well to capture updated dependencies.

pip install -U -e .

Dependencies

This package requires installation of the excellent ARC package, which is used to get Rydberg atomic properties. It also requires other standard computation dependenices, such as numpy, scipy, matplotlib, etc. These dependencies will be automatically installed if not already present.

Rydiqule's performance does depend on these depedencies. In particular, numpy can be compiled with a variety of backends that implements BLAS and LAPACK routines that can have different performance for different computer architectures. When using Windows, it is recommended to install numpy from conda, which is built against the IntelMKL and has generally shown the best performance for Intel-based PCs.

Optional timesolver backend dependencies include the numbakit-ode and CyRK packages. Both are available via pip or our anaconda channel. They can be installed automatically via the optional extras specification for the pip command.

pip install rydiqule[backends]

For conda installations, these dependencies must be installed manually.

conda install -c rydiqule CyRK numbakit-ode

Documentation

Documentation is available online at readthedocs. PDF or EPUB formats of the documentation can be downloaded from the online documentation.

Examples

Example jupyter notebooks that demonstrate RydIQule can be found in the examples subdirectory. Printouts of these notebooks are available in the documentation as well.

Support

Creation of this software was supported in part by the Defense Advanced Research Projects Agency (DARPA) Quantum Apertures program, DEVCOM Army Research Laboratory, and the Quantum Technology Center at the University of Maryland.

Disclaimer

The views, opinions and/or findings expressed are those of the authors and should not be interpreted as representing the official views or policies of the Department of Defense or the U.S. Government.

Contact

The github repository is for code distribution only. While we monitor it, we will not directly respond to issues or pull requests posted to it. If you would like a response from the developers, please e-mail david.h.meyer3.civ@army.mil or kevin.c.cox29.civ@army.mil

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rydiqule-1.2.2.tar.gz (93.7 kB view details)

Uploaded Source

Built Distribution

rydiqule-1.2.2-py3-none-any.whl (87.0 kB view details)

Uploaded Python 3

File details

Details for the file rydiqule-1.2.2.tar.gz.

File metadata

  • Download URL: rydiqule-1.2.2.tar.gz
  • Upload date:
  • Size: 93.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for rydiqule-1.2.2.tar.gz
Algorithm Hash digest
SHA256 a07d55ee9155fdb91e459f789ba32b871d6fc7202218d5c5797c912d557f061b
MD5 b8cf963382d999007528c588c3869e52
BLAKE2b-256 3e4bacb21e42bf63737dec706a7873409e057c02bdb960066493b682180ec159

See more details on using hashes here.

File details

Details for the file rydiqule-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: rydiqule-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 87.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for rydiqule-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5c3eacd65fa31df26b42be08867d7302289f28f3e9f6b4cee7361e3935c23af4
MD5 b412672585e553093458118094522997
BLAKE2b-256 77a2797fa5567d8715989d1bc88619697be80ff637b1cb70f828e34de9273cca

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page