oqd-analog-emulator


Nameoqd-analog-emulator JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2024-11-12 18:37:18
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseApache 2.0
keywords quantum computing analog simulation emulation
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ![Open Quantum Design](https://raw.githubusercontent.com/OpenQuantumDesign/oqd-compiler-infrastructure/main/docs/img/oqd-logo-text.png)

<h2 align="center">
    Open Quantum Design: Analog Emulator
</h2>

[![doc](https://img.shields.io/badge/documentation-lightblue)](https://docs.openquantumdesign.org/open-quantum-design-analog-emulator)
[![PyPI Version](https://img.shields.io/pypi/v/oqd-analog-emulator)](https://pypi.org/project/oqd-analog-emulator)
[![CI](https://github.com/OpenQuantumDesign/oqd-analog-emulator/actions/workflows/pytest.yml/badge.svg)](https://github.com/OpenQuantumDesign/oqd-analog-emulator/actions/workflows/pytest.yml)
![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)



## What's here

- [Quick Start](#quickstart) <br/>
- [Installation](#installation) <br/>

## Installation <a name="installation"></a>

To install,
```bash
pip install oqd-analog-emulator
```
or
```bash
pip install git+https://github.com/OpenQuantumDesign/oqd-analog-emulator.git
```

To clone the repository locally for development:

```bash
git clone https://github.com/OpenQuantumDesign/oqd-analog-emulator.git
pip install .
```

This OQD repository depends on the [`oqd-core`](https://github.com/OpenQuantumDesign/oqd-core.git)
and [`oqd-compiler-infrastructure`](https://github.com/OpenQuantumDesign/oqd-compiler-infrastructure.git) packages, which should be installed with all other dependencies. 
If needed, these can be manually installed via,
```bash
pip install oqd-compiler-infrastructure
pip install oqd-core
```

## Getting Started <a name="Getting Started"></a>

For example, to simulate a simple Rabi flopping experiment:

```python
import matplotlib.pyplot as plt

from oqd_core.interface.analog.operator import *
from oqd_core.interface.analog.operation import *
from oqd_core.backend.metric import *
from oqd_core.backend.task import Task, TaskArgsAnalog
from oqd_analog_emulator.qutip_backend import QutipBackend

X = PauliX()
Z = PauliZ()

circuit = AnalogCircuit()
circuit.evolve(duration=10, gate=AnalogGate(hamiltonian=X))

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)

plt.plot(results.times, results.metrics["Z"], label=f"$\\langle Z \\rangle$")
```

### Where in the stack
```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
   
   class EmulatorAnalog highlight
```
The stack components highlighted in red are contained in this repository.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "oqd-analog-emulator",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "quantum, computing, analog, simulation, emulation",
    "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    Open Quantum Design: Analog Emulator\n</h2>\n\n[![doc](https://img.shields.io/badge/documentation-lightblue)](https://docs.openquantumdesign.org/open-quantum-design-analog-emulator)\n[![PyPI Version](https://img.shields.io/pypi/v/oqd-analog-emulator)](https://pypi.org/project/oqd-analog-emulator)\n[![CI](https://github.com/OpenQuantumDesign/oqd-analog-emulator/actions/workflows/pytest.yml/badge.svg)](https://github.com/OpenQuantumDesign/oqd-analog-emulator/actions/workflows/pytest.yml)\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\n\n## What's here\n\n- [Quick Start](#quickstart) <br/>\n- [Installation](#installation) <br/>\n\n## Installation <a name=\"installation\"></a>\n\nTo install,\n```bash\npip install oqd-analog-emulator\n```\nor\n```bash\npip install git+https://github.com/OpenQuantumDesign/oqd-analog-emulator.git\n```\n\nTo clone the repository locally for development:\n\n```bash\ngit clone https://github.com/OpenQuantumDesign/oqd-analog-emulator.git\npip install .\n```\n\nThis OQD repository depends on the [`oqd-core`](https://github.com/OpenQuantumDesign/oqd-core.git)\nand [`oqd-compiler-infrastructure`](https://github.com/OpenQuantumDesign/oqd-compiler-infrastructure.git) packages, which should be installed with all other dependencies. \nIf needed, these can be manually installed via,\n```bash\npip install oqd-compiler-infrastructure\npip install oqd-core\n```\n\n## Getting Started <a name=\"Getting Started\"></a>\n\nFor example, to simulate a simple Rabi flopping experiment:\n\n```python\nimport matplotlib.pyplot as plt\n\nfrom oqd_core.interface.analog.operator import *\nfrom oqd_core.interface.analog.operation import *\nfrom oqd_core.backend.metric import *\nfrom oqd_core.backend.task import Task, TaskArgsAnalog\nfrom oqd_analog_emulator.qutip_backend import QutipBackend\n\nX = PauliX()\nZ = PauliZ()\n\ncircuit = AnalogCircuit()\ncircuit.evolve(duration=10, gate=AnalogGate(hamiltonian=X))\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\nplt.plot(results.times, results.metrics[\"Z\"], label=f\"$\\\\langle Z \\\\rangle$\")\n```\n\n### Where in the stack\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   class EmulatorAnalog highlight\n```\nThe stack components highlighted in red are contained in this repository.\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": null,
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/OpenQuantumDesign/oqd-analog-emulator",
        "Issues": "https://github.com/OpenQuantumDesign/oqd-analog-emulator/issues",
        "Repository": "https://github.com/OpenQuantumDesign/oqd-analog-emulator.git"
    },
    "split_keywords": [
        "quantum",
        " computing",
        " analog",
        " simulation",
        " emulation"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "725dad96965bab03244a555bb9e7d17b9e237113a295d5f3927061e777083ce5",
                "md5": "68461ad59b3abf5d8d1c67a94c5a9845",
                "sha256": "59b3016c979542954a7c0ed7f1be79c76f56af64b1f18901d6eb1616e918bf4c"
            },
            "downloads": -1,
            "filename": "oqd_analog_emulator-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "68461ad59b3abf5d8d1c67a94c5a9845",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 15026,
            "upload_time": "2024-11-12T18:37:18",
            "upload_time_iso_8601": "2024-11-12T18:37:18.711064Z",
            "url": "https://files.pythonhosted.org/packages/72/5d/ad96965bab03244a555bb9e7d17b9e237113a295d5f3927061e777083ce5/oqd_analog_emulator-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-12 18:37:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "OpenQuantumDesign",
    "github_project": "oqd-analog-emulator",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "oqd-analog-emulator"
}
        
Elapsed time: 0.41434s