├── .github
├── ISSUE_TEMPLATE.md
├── PULL_REQUEST_TEMPLATE.md
└── workflows
│ ├── check_mkdocs_build.yml
│ └── deploy_docs.yaml
├── .gitignore
├── .gitmodules
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── NOTICE
├── README.md
├── docs
├── CNAME
├── about.md
├── figures
│ └── stack_diagram.png
├── get-started.md
├── hardware
│ ├── about-oqd.md
│ ├── devices.md
│ ├── img
│ │ ├── beryl-trap.png
│ │ ├── bloodstone-trap.png
│ │ ├── bloodstone-trap1.png
│ │ └── bloodstone-trap2.png
│ └── modules.md
├── img
│ ├── logo-equilux-blackmedium.png
│ ├── oqd-icon.png
│ ├── oqd-logo-black.png
│ └── oqd-logo-white.png
├── index.md
├── stylesheets
│ ├── admonition_template.css
│ ├── admonitions.css
│ ├── brand.css
│ └── headers.css
└── tutorials
│ ├── index.md
│ ├── ising.md
│ └── rabi-flopping.md
├── examples
├── adiabatic_linear.ipynb
├── adiabatic_sigmoid.ipynb
├── bell_state.ipynb
├── ghz_state.ipynb
├── ising_model.ipynb
├── one_qubit_rabi_flopping.ipynb
├── qaoa.ipynb
└── quantum_scars.ipynb
├── mkdocs.yaml
├── pyproject.toml
├── pytest.ini
└── uv.lock
/.github/ISSUE_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | * **I'm submitting a ...**
2 | - [ ] bug report
3 | - [ ] feature request
4 |
5 |
6 | * **What is the current behavior?**
7 |
8 |
9 |
10 | * **If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem**
11 |
12 |
13 |
14 | * **What is the expected behavior?**
15 |
16 |
17 |
18 | * **What is the motivation / use case for changing the behavior?**
19 |
20 |
21 |
22 | * **Please tell us about your environment:**
23 |
24 | - Version:
25 | - Platform:
26 | - Subsystem:
27 |
28 |
29 | * **Other information** (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, gitter, etc)
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | * **Please check if the PR fulfills these requirements**
2 | - [ ] The commit message follows our guidelines
3 | - [ ] Tests for the changes have been added (for bug fixes / features)
4 | - [ ] Docs have been added / updated (for bug fixes / features)
5 |
6 |
7 | * **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...)
8 |
9 |
10 |
11 | * **What is the current behavior?** (You can also link to an open issue here)
12 |
13 |
14 |
15 | * **What is the new behavior (if this is a feature change)?**
16 |
17 |
18 |
19 | * **Does this PR introduce a breaking change?** (What changes might users need to make in their application due to this PR?)
20 |
21 |
22 |
23 | * **Other information**:
24 |
--------------------------------------------------------------------------------
/.github/workflows/check_mkdocs_build.yml:
--------------------------------------------------------------------------------
1 | name: Check Mkdocs Build
2 |
3 | on:
4 | pull_request:
5 | branches: ["main"]
6 |
7 | permissions:
8 | contents: read
9 |
10 | jobs:
11 | check_mkdocs_build:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout repo
15 | uses: actions/checkout@v4
16 |
17 | - name: Configure Git credentials
18 | run: |
19 | git config user.name github-actions[bot]
20 | git config user.email 41898282+github-actions[bot]@users.noreply.github.com
21 |
22 | - name: Install uv and set the python version
23 | uses: astral-sh/setup-uv@v5
24 | with:
25 | enable-cache: true
26 |
27 | - name: Retrieve Git submodules
28 | run: git submodule update --init --recursive && git submodule update --recursive --remote
29 |
30 | - name: Copy examples into docs folder
31 | run: cp -r examples/ docs/examples/
32 |
33 | - name: Install repo
34 | run: uv sync --extra docs
35 |
36 | - name: Build docs
37 | run: uv run mkdocs build
38 |
--------------------------------------------------------------------------------
/.github/workflows/deploy_docs.yaml:
--------------------------------------------------------------------------------
1 | name: Deploy Mkdocs Documentation
2 |
3 | on:
4 | push:
5 | branches: ["main"]
6 |
7 | permissions:
8 | contents: write
9 |
10 | jobs:
11 | deploy_docs:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Checkout repo
15 | uses: actions/checkout@v4
16 |
17 | - name: Configure Git Credentials
18 | run: |
19 | git config user.name github-actions[bot]
20 | git config user.email 41898282+github-actions[bot]@users.noreply.github.com
21 |
22 | - name: Install uv and set the python version
23 | uses: astral-sh/setup-uv@v5
24 | with:
25 | enable-cache: true
26 |
27 | - name: Retrieve Git submodules
28 | run: git submodule update --init --recursive && git submodule update --recursive --remote
29 |
30 | - name: Copy examples into docs folder
31 | run: cp -r examples/ docs/examples/
32 |
33 | - name: Install repo
34 | run: uv sync --extra docs
35 |
36 | - name: Build docs
37 | run: uv run mkdocs gh-deploy --force
38 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | share/python-wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 | MANIFEST
28 |
29 | # PyInstaller
30 | # Usually these files are written by a python script from a template
31 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
32 | *.manifest
33 | *.spec
34 |
35 | # Installer logs
36 | pip-log.txt
37 | pip-delete-this-directory.txt
38 |
39 | # Unit test / coverage reports
40 | htmlcov/
41 | .tox/
42 | .nox/
43 | .coverage
44 | .coverage.*
45 | .cache
46 | nosetests.xml
47 | coverage.xml
48 | *.cover
49 | *.py,cover
50 | .hypothesis/
51 | .pytest_cache/
52 | cover/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | .pybuilder/
76 | target/
77 |
78 | # Jupyter Notebook
79 | .ipynb_checkpoints
80 |
81 | # IPython
82 | profile_default/
83 | ipython_config.py
84 |
85 | # pyenv
86 | # For a library or package, you might want to ignore these files since the code is
87 | # intended to run in multiple environments; otherwise, check them in:
88 | # .python-version
89 |
90 | # pipenv
91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
94 | # install all needed dependencies.
95 | #Pipfile.lock
96 |
97 | # poetry
98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99 | # This is especially recommended for binary packages to ensure reproducibility, and is more
100 | # commonly ignored for libraries.
101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102 | #poetry.lock
103 |
104 | # pdm
105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106 | #pdm.lock
107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108 | # in version control.
109 | # https://pdm.fming.dev/#use-with-ide
110 | .pdm.toml
111 |
112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113 | __pypackages__/
114 |
115 | # Celery stuff
116 | celerybeat-schedule
117 | celerybeat.pid
118 |
119 | # SageMath parsed files
120 | *.sage.py
121 |
122 | # Environments
123 | .env
124 | .venv
125 | env/
126 | venv/
127 | ENV/
128 | env.bak/
129 | venv.bak/
130 |
131 | # Spyder project settings
132 | .spyderproject
133 | .spyproject
134 |
135 | # Rope project settings
136 | .ropeproject
137 |
138 | # mkdocs documentation
139 | /site
140 |
141 | # mypy
142 | .mypy_cache/
143 | .dmypy.json
144 | dmypy.json
145 |
146 | # Pyre type checker
147 | .pyre/
148 |
149 | # pytype static type analyzer
150 | .pytype/
151 |
152 | # Cython debug symbols
153 | cython_debug/
154 |
155 | # PyCharm
156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158 | # and can be added to the global gitignore or merged into this file. For a more nuclear
159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160 | .idea/
161 | gen/
162 |
163 | *.code-workspace
164 | .DS_Store
165 |
166 | ########################################################################################
167 |
168 | *.sublime-*
169 |
170 |
171 | /docs/src/notebooks/*
172 | .scratch/
173 | _scripts/
174 | .vscode/
175 |
176 | # ignore copied examples files when building docs
177 | docs/examples/
178 | tests/test.bat
179 | *.zip
180 | .pre-commit-config.yaml
181 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "oqd-core"]
2 | path = oqd-core
3 | url = https://github.com/OpenQuantumDesign/oqd-core
4 | [submodule "oqd-cloud"]
5 | path = oqd-cloud
6 | url = https://github.com/OpenQuantumDesign/oqd-cloud
7 | [submodule "oqd-analog-emulator"]
8 | path = oqd-analog-emulator
9 | url = https://github.com/OpenQuantumDesign/oqd-analog-emulator
10 | [submodule "oqd-compiler-infrastructure"]
11 | path = oqd-compiler-infrastructure
12 | url = https://github.com/OpenQuantumDesign/oqd-compiler-infrastructure
13 | [submodule "oqd-trical"]
14 | path = oqd-trical
15 | url = https://github.com/OpenQuantumDesign/oqd-trical
16 | [submodule "oqd-dataschema"]
17 | path = oqd-dataschema
18 | url = https://github.com/OpenQuantumDesign/oqd-dataschema
19 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | We as members, contributors, and leaders pledge to make participation in our
6 | community a harassment-free experience for everyone, regardless of age, body
7 | size, visible or invisible disability, ethnicity, sex characteristics, gender
8 | identity and expression, level of experience, education, socio-economic status,
9 | nationality, personal appearance, race, caste, color, religion, or sexual identity
10 | and orientation.
11 |
12 | We pledge to act and interact in ways that contribute to an open, welcoming,
13 | diverse, inclusive, and healthy community.
14 |
15 | ## Our Standards
16 |
17 | Examples of behavior that contributes to a positive environment for our
18 | community include:
19 |
20 | * Demonstrating empathy and kindness toward other people
21 | * Being respectful of differing opinions, viewpoints, and experiences
22 | * Giving and gracefully accepting constructive feedback
23 | * Accepting responsibility and apologizing to those affected by our mistakes,
24 | and learning from the experience
25 | * Focusing on what is best not just for us as individuals, but for the
26 | overall community
27 |
28 | Examples of unacceptable behavior include:
29 |
30 | * The use of sexualized language or imagery, and sexual attention or
31 | advances of any kind
32 | * Trolling, insulting or derogatory comments, and personal or political attacks
33 | * Public or private harassment
34 | * Publishing others' private information, such as a physical or email
35 | address, without their explicit permission
36 | * Other conduct which could reasonably be considered inappropriate in a
37 | professional setting
38 |
39 | ## Enforcement Responsibilities
40 |
41 | Community leaders are responsible for clarifying and enforcing our standards of
42 | acceptable behavior and will take appropriate and fair corrective action in
43 | response to any behavior that they deem inappropriate, threatening, offensive,
44 | or harmful.
45 |
46 | Community leaders have the right and responsibility to remove, edit, or reject
47 | comments, commits, code, wiki edits, issues, and other contributions that are
48 | not aligned to this Code of Conduct, and will communicate reasons for moderation
49 | decisions when appropriate.
50 |
51 | ## Scope
52 |
53 | This Code of Conduct applies within all community spaces, and also applies when
54 | an individual is officially representing the community in public spaces.
55 | Examples of representing our community include using an official email address,
56 | posting via an official social media account, or acting as an appointed
57 | representative at an online or offline event.
58 |
59 | ## Enforcement
60 |
61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
62 | reported to the community leaders responsible for enforcement at
63 | *conduct@ethicalsource.dev*.
64 | All complaints will be reviewed and investigated promptly and fairly.
65 |
66 | All community leaders are obligated to respect the privacy and security of the
67 | reporter of any incident.
68 |
69 | ## Enforcement Guidelines
70 |
71 | Community leaders will follow these Community Impact Guidelines in determining
72 | the consequences for any action they deem in violation of this Code of Conduct:
73 |
74 | ### 1. Correction
75 |
76 | **Community Impact**: Use of inappropriate language or other behavior deemed
77 | unprofessional or unwelcome in the community.
78 |
79 | **Consequence**: A private, written warning from community leaders, providing
80 | clarity around the nature of the violation and an explanation of why the
81 | behavior was inappropriate. A public apology may be requested.
82 |
83 | ### 2. Warning
84 |
85 | **Community Impact**: A violation through a single incident or series
86 | of actions.
87 |
88 | **Consequence**: A warning with consequences for continued behavior. No
89 | interaction with the people involved, including unsolicited interaction with
90 | those enforcing the Code of Conduct, for a specified period of time. This
91 | includes avoiding interactions in community spaces as well as external channels
92 | like social media. Violating these terms may lead to a temporary or
93 | permanent ban.
94 |
95 | ### 3. Temporary Ban
96 |
97 | **Community Impact**: A serious violation of community standards, including
98 | sustained inappropriate behavior.
99 |
100 | **Consequence**: A temporary ban from any sort of interaction or public
101 | communication with the community for a specified period of time. No public or
102 | private interaction with the people involved, including unsolicited interaction
103 | with those enforcing the Code of Conduct, is allowed during this period.
104 | Violating these terms may lead to a permanent ban.
105 |
106 | ### 4. Permanent Ban
107 |
108 | **Community Impact**: Demonstrating a pattern of violation of community
109 | standards, including sustained inappropriate behavior, harassment of an
110 | individual, or aggression toward or disparagement of classes of individuals.
111 |
112 | **Consequence**: A permanent ban from any sort of public interaction within
113 | the community.
114 |
115 | ## Attribution
116 |
117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118 | version 2.1, available at
119 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120 |
121 | Community Impact Guidelines were inspired by
122 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123 |
124 | For answers to common questions about this code of conduct, see the FAQ at
125 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available
126 | at [https://www.contributor-covenant.org/translations][translations].
127 |
128 | [homepage]: https://www.contributor-covenant.org
129 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130 | [Mozilla CoC]: https://github.com/mozilla/diversity
131 | [FAQ]: https://www.contributor-covenant.org/faq
132 | [translations]: https://www.contributor-covenant.org/translations
133 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenQuantumDesign/equilux/2db5571765d3c62fc8842280d89d40bdc6f0b61a/CONTRIBUTING.md
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright 2024 Open Quantum Design
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/NOTICE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenQuantumDesign/equilux/2db5571765d3c62fc8842280d89d40bdc6f0b61a/NOTICE
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 
2 |
3 |
4 | Program the world's first open-source, full-stack quantum computer.
5 |
6 |
7 | [](https://docs.openquantumdesign.org/)
8 | [](https://pypi.org/project/equilux)
9 | [](https://github.com/OpenQuantumDesign/equilux/actions/workflows/deploy_docs.yaml)
10 | 
11 | [](https://github.com/ambv/black)
12 | [](https://opensource.org/licenses/Apache-2.0)
13 |
14 | ## About
15 | Open Quantum Design (OQD) is a non-profit foundation supporting the development of full-stack, open-source quantum computers.
16 | OQD's current designs are based on laser-cooled trapped ion quantum computing hardware, including real-time control, backend and frontend software.
17 | This documentation covers the software components of the OQD stack, including the core programming interfaces,
18 | classical emulation backends, compiler infrastructure, and cloud server containers.
19 |
20 | `equilux` is the top-level package to access the full OQD software suite in a single place.
21 |
22 | ## What's here
23 |
24 | - [Quick Start](#quickstart)
25 | - [Installation](#installation)
26 | - [The Stack](#stack)
27 | - [Software](#software)
28 | - [Hardware](#hardware)
29 | - [Documentation](#documentation)
30 |
31 | ## Quick start
32 |
33 | ## Installation
34 | To install `equilux` and the suite Open Quantum Design software tools,
35 | ```bash
36 | pip install equilux
37 | ```
38 |
39 | Alternatively, the repository can be cloned and installed locally,
40 | ```bash
41 | git clone https://github.com/OpenQuantumDesign/equilux
42 | pip install .
43 | ```
44 |
45 | ## The stack
46 |
47 |
48 | Open Quantum Design's quantum computing stack can be interfaced at different levels, including the digital, analog, and atomic layers.
49 | ```mermaid
50 | block-beta
51 | columns 3
52 |
53 | block:Interface
54 | columns 1
55 | InterfaceTitle("Interfaces")
56 | InterfaceDigital["Digital Interface\nQuantum circuits with discrete gates"]
57 | space
58 | InterfaceAnalog["Analog Interface\n Continuous-time evolution with Hamiltonians"]
59 | space
60 | InterfaceAtomic["Atomic Interface\nLight-matter interactions between lasers and ions"]
61 | space
62 | end
63 |
64 | block:IR
65 | columns 1
66 | IRTitle("IRs")
67 | IRDigital["Quantum circuit IR\nopenQASM, LLVM+QIR"]
68 | space
69 | IRAnalog["openQSIM"]
70 | space
71 | IRAtomic["openAPL"]
72 | space
73 | end
74 |
75 | block:Emulator
76 | columns 1
77 | EmulatorsTitle("Classical Emulators")
78 |
79 | EmulatorDigital["Pennylane, Qiskit"]
80 | space
81 | EmulatorAnalog["QuTiP, QuantumOptics.jl"]
82 | space
83 | EmulatorAtomic["TrICal, QuantumIon.jl"]
84 | space
85 | end
86 |
87 | space
88 | block:RealTime
89 | columns 1
90 | RealTimeTitle("Real-Time")
91 | space
92 | RTSoftware["ARTIQ, DAX, OQDAX"]
93 | space
94 | RTGateware["Sinara Real-Time Control"]
95 | space
96 | RTHardware["Lasers, Modulators, Photodetection, Ion Trap"]
97 | space
98 | RTApparatus["Trapped-Ion QPU (171Yb+, 133Ba+)"]
99 | space
100 | end
101 | space
102 |
103 | InterfaceDigital --> IRDigital
104 | InterfaceAnalog --> IRAnalog
105 | InterfaceAtomic --> IRAtomic
106 |
107 | IRDigital --> IRAnalog
108 | IRAnalog --> IRAtomic
109 |
110 | IRDigital --> EmulatorDigital
111 | IRAnalog --> EmulatorAnalog
112 | IRAtomic --> EmulatorAtomic
113 |
114 | IRAtomic --> RealTimeTitle
115 |
116 | RTSoftware --> RTGateware
117 | RTGateware --> RTHardware
118 | RTHardware --> RTApparatus
119 |
120 | classDef title fill:#23627D,stroke:#141414,color:#FFFFFF;
121 | classDef digital fill:#c3e1ee,stroke:#141414,color:#141414;
122 | classDef analog fill:#afd7e9,stroke:#141414,color:#141414;
123 | classDef atomic fill:#9ccee3,stroke:#141414,color:#141414;
124 | classDef realtime fill:#88c4dd,stroke:#141414,color:#141414;
125 |
126 | classDef highlight fill:#F19D19,stroke:#141414,color:#141414,stroke-dasharray: 5 5;
127 | classDef normal fill:#fcebcf,stroke:#141414,color:#141414;
128 |
129 | class InterfaceTitle,IRTitle,EmulatorsTitle,RealTimeTitle title
130 | class InterfaceDigital,IRDigital,EmulatorDigital digital
131 | class InterfaceAnalog,IRAnalog,EmulatorAnalog analog
132 | class InterfaceAtomic,IRAtomic,EmulatorAtomic atomic
133 | class RTSoftware,RTGateware,RTHardware,RTApparatus realtime
134 |
135 |
136 | class Emulator normal
137 | class IR normal
138 | class RealTime normal
139 | class Interface normal
140 | ```
141 |
142 | ### Software
143 | OQD's software stack components include Python interfaces at the digital, analog, and atomic layers,
144 | classical emulators, compiler infrastructure, and cloud server components.
145 |
146 | ### Hardware
147 |
148 | Planned supported hardware backends include
149 | the [Bloodstone](docs/hardware/devices.md) processor based on171Yb+ ions
150 | and the [Beryl](docs/hardware/devices.md) processor based on133Ba+ ions.
151 |
152 |
153 |
154 | ## Getting started
155 | Below is a short example of how to use the analog interface to specify, serialize,
156 | and simulate an analog quantum program - here, a single-qubit Rabi-flopping experiment.
157 |
158 | ```python
159 | from oqd_core.interface.analog.operator import PauliZ, PauliX
160 | from oqd_core.interface.analog.operation import AnalogCircuit, AnalogGate
161 | from oqd_core.backend.metric import Expectation
162 | from oqd_core.backend.task import Task, TaskArgsAnalog
163 | from oqd_analog_emulator.qutip_backend import QutipBackend
164 |
165 | X = PauliX()
166 | Z = PauliZ()
167 |
168 | Hx = AnalogGate(hamiltonian=X)
169 |
170 | circuit = AnalogCircuit()
171 | circuit.evolve(duration=10, gate=Hx)
172 | circuit.measure()
173 |
174 | args = TaskArgsAnalog(
175 | n_shots=100,
176 | fock_cutoff=4,
177 | metrics={"Z": Expectation(operator=Z)},
178 | dt=1e-3,
179 | )
180 |
181 | task = Task(program=circuit, args=args)
182 |
183 | backend = QutipBackend()
184 | results = backend.run(task=task)
185 | ```
186 |
187 | ## Documentation
188 | Documentation can be found at [docs.openquantumdesign.org](https://docs.openquantumdesign.org/en/latest/).
189 |
--------------------------------------------------------------------------------
/docs/CNAME:
--------------------------------------------------------------------------------
1 | docs.openquantumdesign.org
--------------------------------------------------------------------------------
/docs/about.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | Open Quantum Design (OQD) is a non-profit organization. Our mission is to develop full-stack open-source quantum computer designs by fostering a collaborative community of diverse contributors from academia, industry, and government.
4 | OQD's current designs are based on laser-cooled trapped ion quantum computing hardware and software.
5 | The OQD intellectual property was developed by University of Waterloo Professors Crystal Senko, Rajibul Islam and Roger Melko, with physicists, engineers, and computer scientists working at the [Institute for Quantum Computing](https://uwaterloo.ca/institute-for-quantum-computing/) and the [Perimeter Institute Quantum Intelligence Lab](https://perimeterinstitute.ca/perimeter-institute-quantum-intelligence-lab-piquil).
6 |
7 | OQD’s technology features novel and scalable approaches for the trapping, control, and read-out of ions. This includes a unique blade trap design, agile optical scheme for low crosstalk addressing of the ions, high-fidelity and all-to-all gate connectivity, and native support for mid-circuit measurements.
8 |
9 | All components of the stack will be open under an Apache 2.0 or similar license - from hardware designs and the middleware control stack, to the top level programming interfaces. OQD’s vision is to be a global leader in open quantum technology, driving breakthroughs that revolutionize science, industry, and society, in order to improve the quality of life for future generations.
10 |
11 | ## Why Open?
12 |
13 | Open-source is more accessible and a proven environment for innovation. By sharing resources, knowledge, and designs, a global community of participants from diverse backgrounds can contribute to and accelerate the development of quantum technologies. OQD is building a collaborative community for technology co-creation, in order to democratize and accelerate the benefits of quantum computing technologies for all. Our purpose is to harness the potential of open quantum technology for the betterment of society, ensuring equitable access to its benefits, to foster an environment for innovation, and nurture the quantum workforce of the future.
14 |
15 |
16 | ## OQD’s open-source approach:
17 |
18 | * Provides transparency and accessibility to software and hardware
19 | * Deepens connections between academia, industry, and government through a collaborative sandbox with clear rules of engagement
20 | * Builds trust through collective decision-making to the benefit of the ecosystem and technology
21 | * Fosters collaboration on the hardest technical challenges
22 | * Increases cost-efficiency through collaboration and standards development
23 | * Attracts and mobilizes IP into the quantum ecosystem
24 | * Fuels outreach and education to train the next generation of scientists and entrepreneurs
25 |
26 |
27 | [Join the OQD community.](https://openquantumdesign.org/#c4433dc0-643c-4539-b1ca-ec2bc1a04868)
28 |
--------------------------------------------------------------------------------
/docs/figures/stack_diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenQuantumDesign/equilux/2db5571765d3c62fc8842280d89d40bdc6f0b61a/docs/figures/stack_diagram.png
--------------------------------------------------------------------------------
/docs/get-started.md:
--------------------------------------------------------------------------------
1 | ## Installation
2 | To install,
3 | ```bash
4 | pip install git+https://github.com/OpenQuantumDesign/equilux.git
5 | ```
6 |
7 | Or clone the repository locally and install with:
8 |
9 | ```bash
10 | git clone https://github.com/OpenQuantumDesign/equilux
11 | pip install .
12 | ```
13 |
14 | ## Documentation
15 |
16 | Documentation is implemented with [MkDocs](https://www.mkdocs.org/) and can be read from the [docs](https://github.com/OpenQuantumDesign/midstack/tree/main/docs) folder.
17 |
18 | To install the dependencies for documentation, run:
19 |
20 | ```
21 | pip install -e ".[docs]"
22 | ```
23 |
24 | To deploy the documentation server locally:
25 |
26 | ```
27 | cp -r examples/ docs/examples/
28 | mkdocs serve
29 | ```
30 |
--------------------------------------------------------------------------------
/docs/hardware/about-oqd.md:
--------------------------------------------------------------------------------
1 | ## Components of a Trapped Ion Quantum Computer
2 |
3 | * **Vacuum chamber:** ultra-high vacuum environment isolates the ions from the environment.
4 | * **Trapping electrodes:** uses electromagnetic potentials to trap ions within an area of the chamber.
5 | * **Lasers:** an array of lasers at different wavelengths and powers initialize, manipulate, and measure the ions in the trap.
6 | * **Optical elements:** many optical components around the lasers control the beams’ frequency, polarization, phase, and intensity.
7 | * **Control electronics:** real-time control electronics orchestrate all of the components, utilizing field programmable gate array (FPGA) cards and radiofrequency components.
8 | * **User interface:** software lets users access and run the quantum computer in order to test ideas, run algorithms, and develop use-cases.
9 |
10 | ## What's unique about OQD's quantum computer?
11 |
12 | * All-to-all connectivity of qubits, high fidelity operations, and long-coherence times.
13 | * Agile and ultra-low crosstalk addressing of ions via a novel optical addressing scheme.
14 | * Ion trap and control systems that are designed from the ground up for mid-circuit measurements.
15 | * Modular real-time control hardware, building on top of the Sinara open-hardware ecosystem.
16 | * Reusable and extensible control software, aimed at replicating control elements across different trapped ion systems.
17 | * Ability to program the computers at multiple levels of abstraction, depending on users’ needs and expertise. This includes defining and running quantum programs as digital circuits, analog circuits, and atomic protocols.
18 | * Suite of state-of-the-art classical emulator backends for testing, prototyping, and validating quantum programs.
19 |
20 | ## References
21 |
22 | 1. Maslov, D., Nam, Y. & Kim, J. An Outlook for Quantum Computing [Point of View]. Proc. IEEE 107, 5–10 (2019).
23 | 2. Pogorelov, I. et al. Compact Ion-Trap Quantum Computing Demonstrator. PRX Quantum 2, 020343 (2021).
24 | 3. Blatt, R. & Wineland, D. Entangled states of trapped atomic ions. Nature 453, 1008–1015 (2008).
25 | 4. Shammah, N. et al. Open Hardware in Quantum Technology. Preprint at [https://doi.org/10.48550/arXiv.2309.17233](https://doi.org/10.48550/arXiv.2309.17233) (2023).
26 |
--------------------------------------------------------------------------------
/docs/hardware/devices.md:
--------------------------------------------------------------------------------
1 | #
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Open Quantum Design: Quantum Processor Hardware
11 |
12 |
13 |
14 |
15 | ## What's Here
16 | The heart of Open Quantum Design's mission and vision is to build open-source, full-stack
17 | quantum computers. The second generation of trapped-ion devices, coined [Bloodstone](#bloodstone) and [Beryl](#beryl),
18 | are currently under construction and testing. Designs, including electrical, photonic, and mechanical,
19 | will be opened sourced for community use and contribution.
20 | The real-time control stack builds on top of the open-hardware [Sinara](#sinara) ecosystem,
21 | including [ARTIQ](#artiq) and [DAX](#dax)
22 |
23 |
24 | ```mermaid
25 | block-beta
26 | columns 3
27 |
28 | block:Interface
29 | columns 1
30 | InterfaceTitle("Interfaces")
31 | InterfaceDigital["Digital Interface\nQuantum circuits with discrete gates"]
32 | space
33 | InterfaceAnalog["Analog Interface\n Continuous-time evolution with Hamiltonians"]
34 | space
35 | InterfaceAtomic["Atomic Interface\nLight-matter interactions between lasers and ions"]
36 | space
37 | end
38 |
39 | block:IR
40 | columns 1
41 | IRTitle("IRs")
42 | IRDigital["Quantum circuit IR\nopenQASM, LLVM+QIR"]
43 | space
44 | IRAnalog["openQSIM"]
45 | space
46 | IRAtomic["openAPL"]
47 | space
48 | end
49 |
50 | block:Emulator
51 | columns 1
52 | EmulatorsTitle("Classical Emulators")
53 |
54 | EmulatorDigital["Pennylane, Qiskit"]
55 | space
56 | EmulatorAnalog["QuTiP, QuantumOptics.jl"]
57 | space
58 | EmulatorAtomic["TrICal, QuantumIon.jl"]
59 | space
60 | end
61 |
62 | space
63 | block:RealTime
64 | columns 1
65 | RealTimeTitle("Real-Time")
66 | space
67 | RTSoftware["ARTIQ, DAX, OQDAX"]
68 | space
69 | RTGateware["Sinara Real-Time Control"]
70 | space
71 | RTHardware["Lasers, Modulators, Photodetection, Ion Trap"]
72 | space
73 | RTApparatus["Trapped-Ion QPU (171Yb+, 133Ba+)"]
74 | space
75 | end
76 | space
77 |
78 | InterfaceDigital --> IRDigital
79 | InterfaceAnalog --> IRAnalog
80 | InterfaceAtomic --> IRAtomic
81 |
82 | IRDigital --> IRAnalog
83 | IRAnalog --> IRAtomic
84 |
85 | IRDigital --> EmulatorDigital
86 | IRAnalog --> EmulatorAnalog
87 | IRAtomic --> EmulatorAtomic
88 |
89 | IRAtomic --> RealTimeTitle
90 |
91 | RTSoftware --> RTGateware
92 | RTGateware --> RTHardware
93 | RTHardware --> RTApparatus
94 |
95 | classDef title fill:#23627D,stroke:#141414,color:#FFFFFF;
96 | classDef digital fill:#c3e1ee,stroke:#141414,color:#141414;
97 | classDef analog fill:#afd7e9,stroke:#141414,color:#141414;
98 | classDef atomic fill:#9ccee3,stroke:#141414,color:#141414;
99 | classDef realtime fill:#88c4dd,stroke:#141414,color:#141414;
100 |
101 | classDef highlight fill:#F19D19,stroke:#141414,color:#141414,stroke-dasharray: 5 5;
102 | classDef normal fill:#fcebcf,stroke:#141414,color:#141414;
103 |
104 | class InterfaceTitle,IRTitle,EmulatorsTitle,RealTimeTitle title
105 | class InterfaceDigital,IRDigital,EmulatorDigital digital
106 | class InterfaceAnalog,IRAnalog,EmulatorAnalog analog
107 | class InterfaceAtomic,IRAtomic,EmulatorAtomic atomic
108 | class RTSoftware,RTGateware,RTHardware,RTApparatus realtime
109 |
110 | class RealTime highlight
111 | class Emulator normal
112 | class IR normal
113 | class Interface normal
114 | ```
115 |
116 |
117 | ### Bloodstone
118 | * Ion species: 171Yb+
119 | * Target number of qubits: 30 – 50
120 | * Trap architecture: Segmented Blade Trap
121 | * SPAM individual addressing: DMD
122 | * Coherent individual addressing with: Double-pass AOM + AOD
123 |
124 | {: style="width:300px"}
125 | {: style="width:300px"}
126 |
127 | ### Beryl
128 | * Ion species: 133Ba+, 137Ba+, 138Ba+
129 | * Target number of qubits: 16
130 | * Trap architecture: [Sandia National Laboratories Phoenix Trap (HOA 2.0 platform)](https://arxiv.org/abs/2009.02398)
131 | * SPAM individual addressing: AOMs
132 | * Coherent individual addressing: Laser written waveguide + AOMs
133 |
134 | {: style="width:600px"}
135 |
136 | ## Real-time Control System
137 | The OQD stack builds on the [Sinara](https://m-labs.hk/experiment-control/sinara-core/) and [ARTIQ](https://m-labs.hk/artiq/) ecosystems for real-time control.
138 |
139 | ### Sinara
140 | [Sinara](https://sinara-hw.github.io/) is an open-source hardware ecosystem originally designed for use in quantum physics experiments running the ARTIQ control software.
141 | The hardware is also suitable for a broad range of laboratory and test & measurement applications.
142 | It is licensed under CERN OHL v1.2.
143 |
144 |
145 | ### ARTIQ (Advanced Real-Time Infrastructure for Quantum)
146 | [The Advanced Real-Time Infrastructure for Quantum physics framework](https://github.com/m-labs/artiq) is a software framework developed by M-Labs that provides Python bindings to the Sinara real-time signal generation and detection apparatus at the core of the electrical apparatus.
147 | ARTIQ functions by exposing control of the individual channels of custom-specified Sinara hardware in the Python programming language.
148 | The system maintains an internal clock and timeline.
149 | Events specified programmatically by the user are applied to the timeline and sent to the Sinara hardware with a series of queues.
150 | The Sinara hardware then executes the instructions with nanosecond precision on a series of FPGAs.
151 |
152 | ### DAX (Duke ARTIQ Extensions)
153 | [The Duke ARTIQ Extensions (DAX)](https://gitlab.com/duke-artiq/dax) are additional tools and capabilities drawn from traditional software design principles for the ARTIQ framework.
154 | ARTIQ allows low-level access to individual channels on the Sinara hardware.
155 | DAX provides a framework for grouping channels into logical modules representing appropriate experimental apparatus abstractions and services that use those modules to perform regular, repeatable tasks.
156 |
--------------------------------------------------------------------------------
/docs/hardware/img/beryl-trap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenQuantumDesign/equilux/2db5571765d3c62fc8842280d89d40bdc6f0b61a/docs/hardware/img/beryl-trap.png
--------------------------------------------------------------------------------
/docs/hardware/img/bloodstone-trap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenQuantumDesign/equilux/2db5571765d3c62fc8842280d89d40bdc6f0b61a/docs/hardware/img/bloodstone-trap.png
--------------------------------------------------------------------------------
/docs/hardware/img/bloodstone-trap1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenQuantumDesign/equilux/2db5571765d3c62fc8842280d89d40bdc6f0b61a/docs/hardware/img/bloodstone-trap1.png
--------------------------------------------------------------------------------
/docs/hardware/img/bloodstone-trap2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OpenQuantumDesign/equilux/2db5571765d3c62fc8842280d89d40bdc6f0b61a/docs/hardware/img/bloodstone-trap2.png
--------------------------------------------------------------------------------
/docs/hardware/modules.md:
--------------------------------------------------------------------------------
1 | # OQD Hardware Modules
2 |
3 |