User API for MIMIQ by QPerfect. Build quantum circuits, schedule remote simulations, and explore simulation results.
Project description
MIMIQ Circuits Python
MIMIQ Circuits is a comprehensive Python library for building, simulating, and executing quantum circuits on QPerfect's MIMIQ Virtual Quantum Computer. Design quantum algorithms, test them locally, and scale them on high-performance cloud simulators.
Part of the MIMIQ ecosystem by QPerfect.
Features
- 🔧 Build quantum circuits with a Pythonic, intuitive API
- ☁️ Execute on MIMIQ cloud with automatic job management
- 🔄 Import/Export OpenQASM and Stim files for interoperability
- 🎯 Multiple simulation algorithms (state vector, MPS, and more)
- 📈 Expectation values and measurements for quantum observables
- 🌐 Seamless cloud integration with authentication and connection management
- 🧪 Noise modeling with realistic quantum error channels
Installation
From PyPI (Recommended)
pip install mimiqcircuits
With Visualization Support
pip install mimiqcircuits[visualization]
From GitHub (Latest Development Version)
pip install "mimiqcircuits @ git+https://github.com/qperfect-io/mimiqcircuits-python.git"
Requirements
- Python 3.8 or higher
- Supported on Linux, macOS, and Windows
Quick Start
Building Your First Circuit
from mimiqcircuits import *
# Create a Bell state circuit
circuit = Circuit()
circuit.push(GateH(), 0)
circuit.push(GateCX(), 0, 1)
circuit.push(Measure(), 0, 0)
circuit.push(Measure(), 1, 1)
# Print the circuit
circuit.draw()
Connecting to MIMIQ Cloud
from mimiqcircuits import *
# Establish connection (opens browser for authentication)
conn = MimiqConnection()
conn.connect()
# Alternative: Connect with credentials directly
# conn.connectUser("your.email@example.com", "yourpassword")
Executing a Circuit
from mimiqcircuits import *
# Create a multi-qubit entangled state
circuit = Circuit()
circuit.push(GateH(), 0)
for i in range(1, 10):
circuit.push(GateCX(), 0, i)
circuit.push(Measure(), range(10), range(10))
# Connect to MIMIQ
conn = MimiqConnection()
conn.connect()
# Submit to MIMIQ remote services
job = conn.submit(circuit, algorithm="auto", nsamples=1000)
# Wait for completion and retrieve results
results = conn.get_results(job)
# Visualize results
from mimiqcircuits.visualization import plothistogram
plothistogram(results)
Working with OpenQASM
from mimiqcircuits import *
# Connect to MIMIQ
conn = MimiqConnection()
conn.connect()
# Submit a QASM file
job = conn.submit("path/to/circuit.qasm", algorithm="statevector")
results = conn.get_results(job)
Circuit Building Examples
Quantum Fourier Transform
from mimiqcircuits import *
circuit = Circuit()
# QFT on 5 qubits
circuit.push(QFT(5), *range(5))
circuit.push(Barrier(5), *range(5))
circuit.push(inverse(QFT(5)), *range(5))
circuit.draw()
Parameterized Circuits
from mimiqcircuits import *
import numpy as np
circuit = Circuit()
theta = np.pi / 4
# Rotation gates with parameters
circuit.push(GateRX(theta), 0)
circuit.push(GateRY(theta), 1)
circuit.push(GateRZ(theta), 2)
# Custom controlled rotation
circuit.push(GateCRX(theta), 0, 1)
circuit.draw()
Expectation Values
from mimiqcircuits import *
circuit = Circuit()
circuit.push(GateH(), 0)
circuit.push(GateCX(), 0, 1)
# Measure expectation value of Z operator
circuit.push(ExpectationValue(GateZ()), 0, 0)
conn = MimiqConnection()
conn.connect()
job = conn.submit(circuit, algorithm="statevector")
results = conn.get_results(job)
Noisy Simulations
from mimiqcircuits import *
circuit = Circuit()
circuit.push(GateH(), 0)
circuit.push(Depolarizing1(0.01), 0) # 1% depolarizing noise
circuit.push(GateCX(), 0, 1)
circuit.push(AmplitudeDamping(0.05), 0) # 5% amplitude damping
circuit.push(Measure(), range(2), range(2))
Available Simulation Algorithms
MIMIQ supports multiple simulation algorithms optimized for different use cases:
auto- Automatically selects the best algorithmstatevector- Full state vector simulation (exact, up to ~30 qubits)mps- Matrix Product State (efficient for certain circuit structures)
# Specify algorithm during execution
job = conn.submit(circuit, algorithm="mps", nsamples=10000)
Supported Gates and Operations
Single-Qubit Gates
GateH, GateX, GateY, GateZ, GateS, GateT, GateSX, GateTDG, GateSDG, GateID, GateRX, GateRY, GateRZ, GateU, GateP
Two-Qubit Gates
GateCX, GateCY, GateCZ, GateCH, GateSWAP, GateISWAP, GateDCX, GateECR
Three-Qubit Gates
GateCCX (Toffoli), GateCSWAP (Fredkin)
Multi-Controlled Gates
GateCU, GateCRX, GateCRY, GateCRZ, GateCP
Composite Gates
QFT (Quantum Fourier Transform), PhaseGradient, PolynomialOracle
Measurements
Measure, MeasureReset, ExpectationValue
Noise Channels
Depolarizing, AmplitudeDamping, PhaseDamping, PauliNoise, ThermalNoise
Circuit Control
Barrier, Reset, IfStatement (conditional operations)
Julia Version
For Julia users, check out MimiqCircuits.jl - the native Julia implementation with full feature parity.
Related Packages
- mimiqlink-python - Connection and authentication library (included in mimiqcircuits)
- MimiqCircuits.jl - Julia version of this library
Access to MIMIQ
MIMIQ Circuits is currently in active development and available for early adopters. To execute circuits on MIMIQ's cloud services, you need an active subscription.
- 🌐 Register on our website to request access
- 📧 Contact us at contact@qperfect.io for organizational subscriptions
- 💬 We value your feedback to improve MIMIQ Circuits
Contributing
We welcome contributions from the quantum computing community! Whether you're fixing bugs, adding features, improving documentation, or sharing ideas:
- 🐛 Report issues on GitHub Issues
- 💡 Suggest features through GitHub Discussions
- 🔧 Submit pull requests - please read our contributing guidelines first
- 📝 Improve documentation - even small fixes help!
Development
We use uv for dependency management and packaging.
Setup
To set up the development environment:
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/qperfect-io/mimiqcircuits-python.git
cd mimiqcircuits-python
# Install dependencies
uv sync
Common Commands
- Run tests:
uv run pytest - Build documentation:
uv run --group docs --extra visualization make -C docs html - Build package:
uv build
Support and Community
- 📧 Email: mimiq.support@qperfect.io
- 🐛 Bug Reports: GitHub Issues
- 💬 Discussions: GitHub Discussions
- 🌐 Website: qperfect.io
COPYRIGHT
Copyright © 2022-2023 University of Strasbourg. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
<http://www.apache.org/licenses/LICENSE-2.0>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Made with ❤️ by the QPerfect team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mimiqcircuits-0.21.6.tar.gz.
File metadata
- Download URL: mimiqcircuits-0.21.6.tar.gz
- Upload date:
- Size: 811.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.15 Linux/6.17.0-1008-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c4092ab50116d1520fb01753d458e91544907fc685c00f1641c9bea2e86b36b
|
|
| MD5 |
e1a155d52869c8689e7a092f85c1ab8b
|
|
| BLAKE2b-256 |
5cddfa5c7b7a0bb4b903c6b61276db4b8d3b57103b8b4df8a2fbbbe97623f209
|
File details
Details for the file mimiqcircuits-0.21.6-py3-none-any.whl.
File metadata
- Download URL: mimiqcircuits-0.21.6-py3-none-any.whl
- Upload date:
- Size: 342.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.2 CPython/3.11.15 Linux/6.17.0-1008-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8957e6b51f81b7e1ac312510f57c186ca8ca4714397dbf0c7beadc4c523de81
|
|
| MD5 |
00389b1296e4dbc760d58d30c1ebb3b5
|
|
| BLAKE2b-256 |
c653b8f2aca8fc9e90a88420493ef860cdcf3870987f6138dfd220b0b9e158d3
|