Skip to main content

MIMIQ

MIMIQ Circuits Python

Build Status Documentation PyPI version Python versions License

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 algorithm
  • statevector - 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

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.

Contributing

We welcome contributions from the quantum computing community! Whether you're fixing bugs, adding features, improving documentation, or sharing ideas:

  1. 🐛 Report issues on GitHub Issues
  2. 💡 Suggest features through GitHub Discussions
  3. 🔧 Submit pull requests - please read our contributing guidelines first
  4. 📝 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

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mimiqcircuits-0.26.6.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mimiqcircuits-0.26.6-py3-none-any.whl (436.8 kB view details)

Uploaded Python 3

File details

Details for the file mimiqcircuits-0.26.6.tar.gz.

File metadata

  • Download URL: mimiqcircuits-0.26.6.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.11.15 Linux/6.17.0-1022-azure

File hashes

Hashes for mimiqcircuits-0.26.6.tar.gz
Algorithm Hash digest
SHA256 5e9ffe3ca38e38f639c353a4dc34820301ad3b693b2906c6f42436c90aee2e48
MD5 38083459e75ae81e0ac07a037aaedcab
BLAKE2b-256 92386c3d15320f66b2d8fd367e2c4e03db29f008fc87a7007dd2ce0b8ea54eeb

See more details on using hashes here.

File details

Details for the file mimiqcircuits-0.26.6-py3-none-any.whl.

File metadata

  • Download URL: mimiqcircuits-0.26.6-py3-none-any.whl
  • Upload date:
  • Size: 436.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.11.15 Linux/6.17.0-1022-azure

File hashes

Hashes for mimiqcircuits-0.26.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0ab0f0f0575b52bf1c24e046118885f80e582672f8fc364de4c7d84fc5b2f6cf
MD5 d0f1be787095e2369b2c678e259091a9
BLAKE2b-256 9790b45556b8faa44785195ce5de0f9778c8307fb32e925bf0a799921b8c224a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.26.7

2 files

This release

0.26.6 This release

2 files

0.26.5

2 files

0.26.4

2 files

0.24.2

2 files

0.24.0

2 files

0.23.2

2 files

0.23.1

2 files

0.23.0

2 files

0.21.8

2 files

0.21.7

2 files

0.21.6

2 files

0.21.5

2 files

0.21.4

2 files

0.21.3

2 files

0.21.2

2 files

0.21.0

2 files

0.18.2

2 files

0.18.1

2 files

0.17.3

2 files

0.17.2

2 files

0.17.1

2 files

0.16.0

2 files

0.15.8

2 files

0.15.7

2 files

0.15.6

2 files

0.15.5

2 files

0.15.4

2 files

0.15.3

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page