Skip to content

Commit 5b192a4

Browse files
committed
use qiskit-ionq for ionq integration
1 parent 018e2c2 commit 5b192a4

File tree

6 files changed

+531
-40
lines changed

6 files changed

+531
-40
lines changed

demo.ipynb

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 1,
6+
"metadata": {
7+
"vscode": {
8+
"languageId": "shellscript"
9+
}
10+
},
11+
"outputs": [
12+
{
13+
"name": "stdout",
14+
"output_type": "stream",
15+
"text": [
16+
"Processing /Users/churchill/GitHub/qutip-qip\n",
17+
" Installing build dependencies ... \u001b[?25ldone\n",
18+
"\u001b[?25h Getting requirements to build wheel ... \u001b[?25ldone\n",
19+
"\u001b[?25h Preparing metadata (pyproject.toml) ... \u001b[?25ldone\n",
20+
"\u001b[?25hCollecting numpy>=1.16.6 (from qutip-qip==0.4.0.dev0+018e2c2)\n",
21+
" Using cached numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl.metadata (114 kB)\n",
22+
"Collecting scipy>=1.0 (from qutip-qip==0.4.0.dev0+018e2c2)\n",
23+
" Using cached scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl.metadata (165 kB)\n",
24+
"Collecting qutip>=4.6 (from qutip-qip==0.4.0.dev0+018e2c2)\n",
25+
" Using cached qutip-4.7.5-cp311-cp311-macosx_14_0_arm64.whl\n",
26+
"Collecting packaging (from qutip-qip==0.4.0.dev0+018e2c2)\n",
27+
" Using cached packaging-24.0-py3-none-any.whl.metadata (3.2 kB)\n",
28+
"Using cached numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl (14.0 MB)\n",
29+
"Using cached scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl (31.4 MB)\n",
30+
"Using cached packaging-24.0-py3-none-any.whl (53 kB)\n",
31+
"Building wheels for collected packages: qutip-qip\n",
32+
" Building wheel for qutip-qip (pyproject.toml) ... \u001b[?25ldone\n",
33+
"\u001b[?25h Created wheel for qutip-qip: filename=qutip_qip-0.4.0.dev0+018e2c2-py3-none-any.whl size=132405 sha256=69a59382c932aa9ef961feebec61e472c2f88fc44936bdbdb0fce496e32dc52a\n",
34+
" Stored in directory: /Users/churchill/Library/Caches/pip/wheels/9a/16/a2/f9c88fc86676e21805aa95320fa839b4e72041d5d251271ac3\n",
35+
"Successfully built qutip-qip\n",
36+
"Installing collected packages: packaging, numpy, scipy, qutip, qutip-qip\n",
37+
" Attempting uninstall: packaging\n",
38+
" Found existing installation: packaging 24.0\n",
39+
" Uninstalling packaging-24.0:\n",
40+
" Successfully uninstalled packaging-24.0\n",
41+
" Attempting uninstall: numpy\n",
42+
" Found existing installation: numpy 1.26.4\n",
43+
" Uninstalling numpy-1.26.4:\n",
44+
" Successfully uninstalled numpy-1.26.4\n",
45+
" Attempting uninstall: scipy\n",
46+
" Found existing installation: scipy 1.12.0\n",
47+
" Uninstalling scipy-1.12.0:\n",
48+
" Successfully uninstalled scipy-1.12.0\n",
49+
" Attempting uninstall: qutip\n",
50+
" Found existing installation: qutip 4.7.5\n",
51+
" Uninstalling qutip-4.7.5:\n",
52+
" Successfully uninstalled qutip-4.7.5\n",
53+
" Attempting uninstall: qutip-qip\n",
54+
" Found existing installation: qutip-qip 0.4.0.dev0+018e2c2\n",
55+
" Uninstalling qutip-qip-0.4.0.dev0+018e2c2:\n",
56+
" Successfully uninstalled qutip-qip-0.4.0.dev0+018e2c2\n",
57+
"Successfully installed numpy-1.26.4 packaging-24.0 qutip-4.7.5 qutip-qip-0.4.0.dev0+018e2c2 scipy-1.12.0\n",
58+
"Requirement already satisfied: qiskit in ./venv/lib/python3.11/site-packages (1.0.2)\n",
59+
"Requirement already satisfied: qiskit-ionq in ./venv/lib/python3.11/site-packages (0.5.0)\n",
60+
"Requirement already satisfied: matplotlib in ./venv/lib/python3.11/site-packages (3.8.3)\n",
61+
"Requirement already satisfied: rustworkx>=0.14.0 in ./venv/lib/python3.11/site-packages (from qiskit) (0.14.2)\n",
62+
"Requirement already satisfied: numpy<2,>=1.17 in ./venv/lib/python3.11/site-packages (from qiskit) (1.26.4)\n",
63+
"Requirement already satisfied: scipy>=1.5 in ./venv/lib/python3.11/site-packages (from qiskit) (1.12.0)\n",
64+
"Requirement already satisfied: sympy>=1.3 in ./venv/lib/python3.11/site-packages (from qiskit) (1.12)\n",
65+
"Requirement already satisfied: dill>=0.3 in ./venv/lib/python3.11/site-packages (from qiskit) (0.3.8)\n",
66+
"Requirement already satisfied: python-dateutil>=2.8.0 in ./venv/lib/python3.11/site-packages (from qiskit) (2.9.0.post0)\n",
67+
"Requirement already satisfied: stevedore>=3.0.0 in ./venv/lib/python3.11/site-packages (from qiskit) (5.2.0)\n",
68+
"Requirement already satisfied: typing-extensions in ./venv/lib/python3.11/site-packages (from qiskit) (4.10.0)\n",
69+
"Requirement already satisfied: symengine>=0.11 in ./venv/lib/python3.11/site-packages (from qiskit) (0.11.0)\n",
70+
"Requirement already satisfied: decorator>=5.1.0 in ./venv/lib/python3.11/site-packages (from qiskit-ionq) (5.1.1)\n",
71+
"Requirement already satisfied: requests>=2.24.0 in ./venv/lib/python3.11/site-packages (from qiskit-ionq) (2.31.0)\n",
72+
"Requirement already satisfied: retry>=0.9.0 in ./venv/lib/python3.11/site-packages (from qiskit-ionq) (0.9.2)\n",
73+
"Requirement already satisfied: importlib-metadata>=4.11.4 in ./venv/lib/python3.11/site-packages (from qiskit-ionq) (7.0.2)\n",
74+
"Requirement already satisfied: contourpy>=1.0.1 in ./venv/lib/python3.11/site-packages (from matplotlib) (1.2.0)\n",
75+
"Requirement already satisfied: cycler>=0.10 in ./venv/lib/python3.11/site-packages (from matplotlib) (0.12.1)\n",
76+
"Requirement already satisfied: fonttools>=4.22.0 in ./venv/lib/python3.11/site-packages (from matplotlib) (4.50.0)\n",
77+
"Requirement already satisfied: kiwisolver>=1.3.1 in ./venv/lib/python3.11/site-packages (from matplotlib) (1.4.5)\n",
78+
"Requirement already satisfied: packaging>=20.0 in ./venv/lib/python3.11/site-packages (from matplotlib) (24.0)\n",
79+
"Requirement already satisfied: pillow>=8 in ./venv/lib/python3.11/site-packages (from matplotlib) (10.2.0)\n",
80+
"Requirement already satisfied: pyparsing>=2.3.1 in ./venv/lib/python3.11/site-packages (from matplotlib) (3.1.2)\n",
81+
"Requirement already satisfied: zipp>=0.5 in ./venv/lib/python3.11/site-packages (from importlib-metadata>=4.11.4->qiskit-ionq) (3.18.1)\n",
82+
"Requirement already satisfied: six>=1.5 in ./venv/lib/python3.11/site-packages (from python-dateutil>=2.8.0->qiskit) (1.16.0)\n",
83+
"Requirement already satisfied: charset-normalizer<4,>=2 in ./venv/lib/python3.11/site-packages (from requests>=2.24.0->qiskit-ionq) (3.3.2)\n",
84+
"Requirement already satisfied: idna<4,>=2.5 in ./venv/lib/python3.11/site-packages (from requests>=2.24.0->qiskit-ionq) (3.6)\n",
85+
"Requirement already satisfied: urllib3<3,>=1.21.1 in ./venv/lib/python3.11/site-packages (from requests>=2.24.0->qiskit-ionq) (2.2.1)\n",
86+
"Requirement already satisfied: certifi>=2017.4.17 in ./venv/lib/python3.11/site-packages (from requests>=2.24.0->qiskit-ionq) (2024.2.2)\n",
87+
"Requirement already satisfied: py<2.0.0,>=1.4.26 in ./venv/lib/python3.11/site-packages (from retry>=0.9.0->qiskit-ionq) (1.11.0)\n",
88+
"Requirement already satisfied: pbr!=2.1.0,>=2.0.0 in ./venv/lib/python3.11/site-packages (from stevedore>=3.0.0->qiskit) (6.0.0)\n",
89+
"Requirement already satisfied: mpmath>=0.19 in ./venv/lib/python3.11/site-packages (from sympy>=1.3->qiskit) (1.3.0)\n"
90+
]
91+
}
92+
],
93+
"source": [
94+
"# pip install the current directory, overwriting any existing installation\n",
95+
"!pip install --upgrade --force-reinstall . && pip install qiskit qiskit-ionq matplotlib"
96+
]
97+
},
98+
{
99+
"cell_type": "markdown",
100+
"metadata": {},
101+
"source": [
102+
"## Qiskit Integration"
103+
]
104+
},
105+
{
106+
"cell_type": "code",
107+
"execution_count": 2,
108+
"metadata": {},
109+
"outputs": [
110+
{
111+
"data": {
112+
"text/plain": [
113+
"<qiskit.circuit.instructionset.InstructionSet at 0x12104c4c0>"
114+
]
115+
},
116+
"execution_count": 2,
117+
"metadata": {},
118+
"output_type": "execute_result"
119+
}
120+
],
121+
"source": [
122+
"from qiskit import QuantumCircuit\n",
123+
"\n",
124+
"circ = QuantumCircuit(2,2)\n",
125+
"circ.h(0)\n",
126+
"circ.h(1)\n",
127+
"circ.measure(0,0)\n",
128+
"circ.measure(1,1)"
129+
]
130+
},
131+
{
132+
"cell_type": "raw",
133+
"metadata": {},
134+
"source": [
135+
"from qutip_qip.qiskit import QiskitCircuitSimulator\n",
136+
"backend = QiskitCircuitSimulator()\n",
137+
"job = backend.run(circ)\n",
138+
"result = job.result()"
139+
]
140+
},
141+
{
142+
"cell_type": "raw",
143+
"metadata": {},
144+
"source": [
145+
"from qiskit.visualization import plot_histogram\n",
146+
"plot_histogram(result.get_counts())"
147+
]
148+
},
149+
{
150+
"cell_type": "markdown",
151+
"metadata": {},
152+
"source": [
153+
"## IonQ Integration using Qiskit"
154+
]
155+
},
156+
{
157+
"cell_type": "code",
158+
"execution_count": 3,
159+
"metadata": {},
160+
"outputs": [],
161+
"source": [
162+
"from qutip_qip.ionq import Provider, IonQSimulator\n",
163+
"provider = Provider()\n",
164+
"backend = IonQSimulator(provider=provider)\n",
165+
"job = backend.run(circ)\n",
166+
"result = job.result()"
167+
]
168+
},
169+
{
170+
"cell_type": "code",
171+
"execution_count": 5,
172+
"metadata": {},
173+
"outputs": [
174+
{
175+
"data": {
176+
"text/plain": [
177+
"{'00': 232, '01': 267, '10': 258, '11': 267}"
178+
]
179+
},
180+
"execution_count": 5,
181+
"metadata": {},
182+
"output_type": "execute_result"
183+
}
184+
],
185+
"source": [
186+
"result.get_counts()"
187+
]
188+
},
189+
{
190+
"cell_type": "code",
191+
"execution_count": null,
192+
"metadata": {},
193+
"outputs": [],
194+
"source": []
195+
}
196+
],
197+
"metadata": {
198+
"kernelspec": {
199+
"display_name": "venv",
200+
"language": "python",
201+
"name": "python3"
202+
},
203+
"language_info": {
204+
"codemirror_mode": {
205+
"name": "ipython",
206+
"version": 3
207+
},
208+
"file_extension": ".py",
209+
"mimetype": "text/x-python",
210+
"name": "python",
211+
"nbconvert_exporter": "python",
212+
"pygments_lexer": "ipython3",
213+
"version": "3.11.8"
214+
}
215+
},
216+
"nbformat": 4,
217+
"nbformat_minor": 2
218+
}

src/qutip_qip/ionq/__init__.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
"""Simulation of IonQ circuits."""
1+
"""Simulation of IonQ circuits in ``qutip_qip``."""
22

3-
from .provider import IonQProvider
4-
from .backend import (
5-
IonQSimulator,
6-
)
7-
from .converter import convert_ionq_circuit
8-
from .job import IonQJob
3+
from .provider import Provider
4+
from .backend import IonQSimulator, IonQQPU
5+
from ..qiskit.converter import convert_qiskit_circuit
6+
from .job import Job

0 commit comments

Comments
 (0)