# ![Open Quantum Design](https://raw.githubusercontent.com/OpenQuantumDesign/oqd-compiler-infrastructure/main/docs/img/oqd-logo-text.png)
<h2 align="center">
Program the world's first open-source, full-stack quantum computer.
</h2>
[![doc](https://img.shields.io/badge/documentation-lightblue)](https://docs.openquantumdesign.org/)
[![PyPI Version](https://img.shields.io/pypi/v/equilux)](https://pypi.org/project/equilux)
[![ci](https://github.com/OpenQuantumDesign/equilux/actions/workflows/deploy_docs.yaml/badge.svg)](https://github.com/OpenQuantumDesign/equilux/actions/workflows/deploy_docs.yaml)
![versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue)
[![black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
[![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg)](https://opensource.org/licenses/Apache-2.0)
## About
Open Quantum Design (OQD) is a non-profit foundation supporting the development of full-stack, open-source quantum computers.
OQD's current designs are based on laser-cooled trapped ion quantum computing hardware, including real-time control, backend and frontend software.
This documentation covers the software components of the OQD stack, including the core programming interfaces,
classical emulation backends, compiler infrastructure, and cloud server containers.
`equilux` is the top-level package to access the full OQD software suite in a single place.
## What's here
- [Quick Start](#quickstart) <br/>
- [Installation](#installation) <br/>
- [The Stack](#stack) <br/>
- [Software](#software) <br/>
- [Hardware](#hardware) <br/>
- [Documentation](#documentation) <br/>
## Quick start <a name="quickstart"></a>
## Installation <a name="installation"></a>
To install `equilux` and the suite Open Quantum Design software tools,
```bash
pip install equilux
```
Alternatively, the repository can be cloned and installed locally,
```bash
git clone https://github.com/OpenQuantumDesign/equilux
pip install .
```
## The stack <a name="stack"></a>
Open Quantum Design's quantum computing stack can be interfaced at different levels, including the digital, analog, and atomic layers.
```mermaid
block-beta
columns 3
block:Interface
columns 1
InterfaceTitle("<i><b>Interfaces</b><i/>")
InterfaceDigital["<b>Digital Interface</b>\nQuantum circuits with discrete gates"]
space
InterfaceAnalog["<b>Analog Interface</b>\n Continuous-time evolution with Hamiltonians"]
space
InterfaceAtomic["<b>Atomic Interface</b>\nLight-matter interactions between lasers and ions"]
space
end
block:IR
columns 1
IRTitle("<i><b>IRs</b><i/>")
IRDigital["Quantum circuit IR\nopenQASM, LLVM+QIR"]
space
IRAnalog["openQSIM"]
space
IRAtomic["openAPL"]
space
end
block:Emulator
columns 1
EmulatorsTitle("<i><b>Classical Emulators</b><i/>")
EmulatorDigital["Pennylane, Qiskit"]
space
EmulatorAnalog["QuTiP, QuantumOptics.jl"]
space
EmulatorAtomic["TrICal, QuantumIon.jl"]
space
end
space
block:RealTime
columns 1
RealTimeTitle("<i><b>Real-Time</b><i/>")
space
RTSoftware["ARTIQ, DAX, OQDAX"]
space
RTGateware["Sinara Real-Time Control"]
space
RTHardware["Lasers, Modulators, Photodetection, Ion Trap"]
space
RTApparatus["Trapped-Ion QPU (<sup>171</sup>Yt<sup>+</sup>, <sup>133</sup>Ba<sup>+</sup>)"]
space
end
space
InterfaceDigital --> IRDigital
InterfaceAnalog --> IRAnalog
InterfaceAtomic --> IRAtomic
IRDigital --> IRAnalog
IRAnalog --> IRAtomic
IRDigital --> EmulatorDigital
IRAnalog --> EmulatorAnalog
IRAtomic --> EmulatorAtomic
IRAtomic --> RealTimeTitle
RTSoftware --> RTGateware
RTGateware --> RTHardware
RTHardware --> RTApparatus
classDef title fill:#d6d4d4,stroke:#333,color:#333;
classDef digital fill:#E7E08B,stroke:#333,color:#333;
classDef analog fill:#E4E9B2,stroke:#333,color:#333;
classDef atomic fill:#D2E4C4,stroke:#333,color:#333;
classDef realtime fill:#B5CBB7,stroke:#333,color:#333;
classDef highlight fill:#f2bbbb,stroke:#333,color:#333,stroke-dasharray: 5 5;
class InterfaceTitle,IRTitle,EmulatorsTitle,RealTimeTitle title
class InterfaceDigital,IRDigital,EmulatorDigital digital
class InterfaceAnalog,IRAnalog,EmulatorAnalog analog
class InterfaceAtomic,IRAtomic,EmulatorAtomic atomic
class RTSoftware,RTGateware,RTHardware,RTApparatus realtime
```
### Software <a name="software"></a>
OQD's software stack components include Python interfaces at the digital, analog, and atomic layers,
classical emulators, compiler infrastructure, and cloud server components.
### Hardware <a name="hardware"></a>
Planned supported hardware backends include
the [Bloodstone](docs/hardware/devices.md) processor based on<sup>171</sup>Yb<sup>+</sup> ions
and the [Beryl](docs/hardware/devices.md) processor based on<sup>133</sup>Ba<sup>+</sup> ions.
## Getting started <a name="Getting Started"></a>
Below is a short example of how to use the analog interface to specify, serialize,
and simulate an analog quantum program - here, a single-qubit Rabi-flopping experiment.
```python
from oqd_core.interface.analog.operator import PauliZ, PauliX
from oqd_core.interface.analog.operation import AnalogCircuit, AnalogGate
from oqd_core.backend.metric import Expectation
from oqd_core.backend.task import Task, TaskArgsAnalog
from oqd_analog_emulator.qutip_backend import QutipBackend
X = PauliX()
Z = PauliZ()
Hx = AnalogGate(hamiltonian=X)
circuit = AnalogCircuit()
circuit.evolve(duration=10, gate=Hx)
circuit.measure()
args = TaskArgsAnalog(
n_shots=100,
fock_cutoff=4,
metrics={"Z": Expectation(operator=Z)},
dt=1e-3,
)
task = Task(program=circuit, args=args)
backend = QutipBackend()
results = backend.run(task=task)
```
## Documentation <a name="documentation"></a>
Documentation can be found at [docs.openquantumdesign.org](https://docs.openquantumdesign.org/en/latest/).
Raw data
{
"_id": null,
"home_page": null,
"name": "equilux",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "quantum, computing, analog, digitial, atomic, simulation, full-stack",
"author": null,
"author_email": null,
"download_url": null,
"platform": null,
"description": "# ![Open Quantum Design](https://raw.githubusercontent.com/OpenQuantumDesign/oqd-compiler-infrastructure/main/docs/img/oqd-logo-text.png)\n\n<h2 align=\"center\">\n Program the world's first open-source, full-stack quantum computer.\n</h2>\n\n[![doc](https://img.shields.io/badge/documentation-lightblue)](https://docs.openquantumdesign.org/)\n[![PyPI Version](https://img.shields.io/pypi/v/equilux)](https://pypi.org/project/equilux)\n[![ci](https://github.com/OpenQuantumDesign/equilux/actions/workflows/deploy_docs.yaml/badge.svg)](https://github.com/OpenQuantumDesign/equilux/actions/workflows/deploy_docs.yaml)\n![versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue)\n[![black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg)](https://opensource.org/licenses/Apache-2.0)\n\n## About\nOpen Quantum Design (OQD) is a non-profit foundation supporting the development of full-stack, open-source quantum computers.\nOQD's current designs are based on laser-cooled trapped ion quantum computing hardware, including real-time control, backend and frontend software.\nThis documentation covers the software components of the OQD stack, including the core programming interfaces,\nclassical emulation backends, compiler infrastructure, and cloud server containers.\n\n`equilux` is the top-level package to access the full OQD software suite in a single place.\n\n## What's here\n\n- [Quick Start](#quickstart) <br/>\n- [Installation](#installation) <br/>\n- [The Stack](#stack) <br/>\n- [Software](#software) <br/>\n- [Hardware](#hardware) <br/>\n- [Documentation](#documentation) <br/>\n\n## Quick start <a name=\"quickstart\"></a>\n\n## Installation <a name=\"installation\"></a>\nTo install `equilux` and the suite Open Quantum Design software tools, \n```bash\npip install equilux\n```\n\nAlternatively, the repository can be cloned and installed locally,\n```bash\ngit clone https://github.com/OpenQuantumDesign/equilux\npip install .\n```\n\n## The stack <a name=\"stack\"></a>\n\n\nOpen Quantum Design's quantum computing stack can be interfaced at different levels, including the digital, analog, and atomic layers.\n```mermaid\nblock-beta\n columns 3\n \n block:Interface\n columns 1\n InterfaceTitle(\"<i><b>Interfaces</b><i/>\")\n InterfaceDigital[\"<b>Digital Interface</b>\\nQuantum circuits with discrete gates\"] \n space\n InterfaceAnalog[\"<b>Analog Interface</b>\\n Continuous-time evolution with Hamiltonians\"] \n space\n InterfaceAtomic[\"<b>Atomic Interface</b>\\nLight-matter interactions between lasers and ions\"]\n space\n end\n \n block:IR\n columns 1\n IRTitle(\"<i><b>IRs</b><i/>\")\n IRDigital[\"Quantum circuit IR\\nopenQASM, LLVM+QIR\"] \n space\n IRAnalog[\"openQSIM\"]\n space\n IRAtomic[\"openAPL\"]\n space\n end\n \n block:Emulator\n columns 1\n EmulatorsTitle(\"<i><b>Classical Emulators</b><i/>\")\n \n EmulatorDigital[\"Pennylane, Qiskit\"] \n space\n EmulatorAnalog[\"QuTiP, QuantumOptics.jl\"]\n space\n EmulatorAtomic[\"TrICal, QuantumIon.jl\"]\n space\n end\n \n space\n block:RealTime\n columns 1\n RealTimeTitle(\"<i><b>Real-Time</b><i/>\")\n space\n RTSoftware[\"ARTIQ, DAX, OQDAX\"] \n space\n RTGateware[\"Sinara Real-Time Control\"]\n space\n RTHardware[\"Lasers, Modulators, Photodetection, Ion Trap\"]\n space\n RTApparatus[\"Trapped-Ion QPU (<sup>171</sup>Yt<sup>+</sup>, <sup>133</sup>Ba<sup>+</sup>)\"]\n space\n end\n space\n \n InterfaceDigital --> IRDigital\n InterfaceAnalog --> IRAnalog\n InterfaceAtomic --> IRAtomic\n \n IRDigital --> IRAnalog\n IRAnalog --> IRAtomic\n \n IRDigital --> EmulatorDigital\n IRAnalog --> EmulatorAnalog\n IRAtomic --> EmulatorAtomic\n \n IRAtomic --> RealTimeTitle\n \n RTSoftware --> RTGateware\n RTGateware --> RTHardware\n RTHardware --> RTApparatus\n \n classDef title fill:#d6d4d4,stroke:#333,color:#333;\n classDef digital fill:#E7E08B,stroke:#333,color:#333;\n classDef analog fill:#E4E9B2,stroke:#333,color:#333;\n classDef atomic fill:#D2E4C4,stroke:#333,color:#333;\n classDef realtime fill:#B5CBB7,stroke:#333,color:#333;\n\n classDef highlight fill:#f2bbbb,stroke:#333,color:#333,stroke-dasharray: 5 5;\n \n class InterfaceTitle,IRTitle,EmulatorsTitle,RealTimeTitle title\n class InterfaceDigital,IRDigital,EmulatorDigital digital\n class InterfaceAnalog,IRAnalog,EmulatorAnalog analog\n class InterfaceAtomic,IRAtomic,EmulatorAtomic atomic\n class RTSoftware,RTGateware,RTHardware,RTApparatus realtime\n```\n\n### Software <a name=\"software\"></a>\nOQD's software stack components include Python interfaces at the digital, analog, and atomic layers, \nclassical emulators, compiler infrastructure, and cloud server components. \n\n### Hardware <a name=\"hardware\"></a>\n\nPlanned supported hardware backends include \nthe [Bloodstone](docs/hardware/devices.md) processor based on<sup>171</sup>Yb<sup>+</sup> ions\nand the [Beryl](docs/hardware/devices.md) processor based on<sup>133</sup>Ba<sup>+</sup> ions.\n\n\n\n## Getting started <a name=\"Getting Started\"></a>\nBelow is a short example of how to use the analog interface to specify, serialize, \nand simulate an analog quantum program - here, a single-qubit Rabi-flopping experiment.\n\n```python\nfrom oqd_core.interface.analog.operator import PauliZ, PauliX\nfrom oqd_core.interface.analog.operation import AnalogCircuit, AnalogGate\nfrom oqd_core.backend.metric import Expectation\nfrom oqd_core.backend.task import Task, TaskArgsAnalog\nfrom oqd_analog_emulator.qutip_backend import QutipBackend\n\nX = PauliX()\nZ = PauliZ()\n\nHx = AnalogGate(hamiltonian=X)\n\ncircuit = AnalogCircuit()\ncircuit.evolve(duration=10, gate=Hx)\ncircuit.measure()\n\nargs = TaskArgsAnalog(\n n_shots=100,\n fock_cutoff=4,\n metrics={\"Z\": Expectation(operator=Z)},\n dt=1e-3,\n)\n\ntask = Task(program=circuit, args=args)\n\nbackend = QutipBackend()\nresults = backend.run(task=task)\n```\n\n## Documentation <a name=\"documentation\"></a>\nDocumentation can be found at [docs.openquantumdesign.org](https://docs.openquantumdesign.org/en/latest/).\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": null,
"version": "0.1.0",
"project_urls": {
"Documentation": "https://docs.openquantumdesign.org",
"Homepage": "https://github.com/OpenQuantumDesign/equilux",
"Issues": "https://github.com/OpenQuantumDesign/equilux/issues",
"Repository": "https://github.com/OpenQuantumDesign/equilux.git"
},
"split_keywords": [
"quantum",
" computing",
" analog",
" digitial",
" atomic",
" simulation",
" full-stack"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "fd99718166babd59aa947de9ed5984118e51c7a60a95bf408397cfacde474ad8",
"md5": "ea7b68e57af80febd5fa822d0ebfafc2",
"sha256": "bd347819691f3d3f00ab9718219cd6c1adfcda5bd4db5e8e510805deb7a38116"
},
"downloads": -1,
"filename": "equilux-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ea7b68e57af80febd5fa822d0ebfafc2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 8055,
"upload_time": "2024-11-12T18:38:00",
"upload_time_iso_8601": "2024-11-12T18:38:00.303523Z",
"url": "https://files.pythonhosted.org/packages/fd/99/718166babd59aa947de9ed5984118e51c7a60a95bf408397cfacde474ad8/equilux-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-12 18:38:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "OpenQuantumDesign",
"github_project": "equilux",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "equilux"
}