Skip to main content

QuPrep — Quantum Data Preparation

The missing preprocessing layer between classical datasets and quantum computing frameworks.

PyPI version Python 3.10+ License: Apache 2.0 DOI Documentation CI codecov CodeQL OpenSSF Scorecard OpenSSF Best Practices Hugging Face Demo Qiskit Ecosystem


QuPrep converts classical datasets into quantum-circuit-ready format. It is not a quantum computing framework, simulator, or training tool — it is the preprocessing step that feeds into Qiskit, PennyLane, Cirq, TKET, and any other quantum workflow.

CSV / DataFrame / NumPy / images / text / graphs  →  QuPrep  →  circuit-ready output

What QuPrep does

  • Ingest tabular data, time series, images, text, and graphs — all in the same pipeline API
  • Clean, normalize, and reduce dimensionality to fit your hardware qubit budget
  • Encode data into circuits using 13 encoding methods (Angle, Amplitude, IQP, ZZFeatureMap, GraphState, and more)
  • Recommend, compare, and auto-select the best encoding for your dataset and task
  • Export circuits to 8 frameworks: OpenQASM 3.0, Qiskit, PennyLane, Cirq, TKET, Braket, Q#, IQM
  • Formulate combinatorial optimization problems as QUBO / Ising models; export as QAOA circuit templates for your quantum framework

QuPrep does not train models, simulate circuits, run on quantum hardware, or optimize variational parameters.


Installation

pip install quprep

With optional extras:

# Framework exporters
pip install quprep[qiskit]     # Qiskit QuantumCircuit
pip install quprep[pennylane]  # PennyLane QNode
pip install quprep[cirq]       # Cirq Circuit
pip install quprep[tket]       # TKET/pytket Circuit
pip install quprep[braket]     # Amazon Braket Circuit
pip install quprep[qsharp]     # Q# / Azure Quantum
pip install quprep[iqm]        # IQM native format
pip install quprep[frameworks] # all framework exporters at once

# Data modalities
pip install quprep[image]      # image ingestion (Pillow)
pip install quprep[text]       # text embeddings (sentence-transformers, ~2 GB)
pip install quprep[modalities] # image + text at once

# Other
pip install quprep[umap]       # UMAP dimensionality reduction
pip install quprep[viz]        # matplotlib circuit diagrams
pip install quprep[all]        # everything

Requirements: Python ≥ 3.10. Core dependencies: numpy, scipy, pandas, scikit-learn.


Quickstart

One-liner

import quprep as qd

result = qd.prepare("data.csv", encoding="angle", framework="qasm")
print(result.circuit)

Full pipeline

import quprep as qd

pipeline = qd.Pipeline(
    cleaner=qd.Imputer(),
    reducer=qd.PCAReducer(n_components=8),
    encoder=qd.IQPEncoder(reps=2),
    exporter=qd.PennyLaneExporter(),   # pip install quprep[pennylane]
)
result = pipeline.fit_transform("data.csv")
qnode = result.circuit   # callable qml.QNode

Data modalities — time series, images, text, graphs

import quprep as qd

# Time series — sliding window then encode
from quprep.ingest.time_series_ingester import TimeSeriesIngester
from quprep.clean.window_transformer import WindowTransformer

result = qd.Pipeline(
    preprocessor=WindowTransformer(window_size=5, step=1),
    encoder=qd.AngleEncoder(),
).fit_transform(TimeSeriesIngester(time_column="date").load("sensor.csv"))

# Images — pip install quprep[image]
from quprep.ingest.image_ingester import ImageIngester
result = qd.prepare("images/", encoding="angle", ingester=ImageIngester(size=(8, 8), grayscale=True))

# Text — TF-IDF (no deps) or sentence-transformers (pip install quprep[text])
from quprep.ingest.text_ingester import TextIngester
texts = ["quantum computing is powerful", "machine learning meets QML", ...]
result = qd.prepare(texts, encoding="angle", ingester=TextIngester(method="tfidf", max_features=16))

# Graphs — lossless graph state encoding
from quprep.ingest.graph_ingester import GraphIngester
from quprep.encode.graph_state import GraphStateEncoder
import numpy as np
graph_list = [np.array([[0,1,1],[1,0,0],[1,0,0]], dtype=float), ...]  # adjacency matrices
result = qd.Pipeline(encoder=GraphStateEncoder()).fit_transform(
    GraphIngester(features="adjacency").load(graph_list)
)

More features

Feature Docs
Encoding recommendation — ranked by dataset profile and task guide
Qubit budget suggestion — NISQ-safe ceiling with reasoning API
Side-by-side encoder comparison — depth, gates, NISQ safety API
Data drift detection — warn when new data leaves training distribution API
Pipeline save / load — serialize fitted pipelines, no re-fitting API
Schema validation & cost estimation — gate count before encoding guide
QUBO / Ising formulation — Max-Cut, TSP, Knapsack, QAOA circuits, D-Wave export guide
Plugin system — register custom encoders and exporters guide
Circuit visualization — ASCII (no deps) or matplotlib API
Batch QASM export — save all samples to disk as individual files API

Supported encodings

Encoding Qubits Depth NISQ-safe Best for
Angle (Ry/Rx/Rz) n = d O(1) ✅ Excellent Most QML tasks
Amplitude ⌈log₂ d⌉ O(2ⁿ) ❌ Poor Qubit-limited scenarios
Basis n = d O(1) ✅ Excellent Binary features / QAOA
Entangled Angle n = d O(d · layers) ✅ Good Feature correlations
IQP n = d O(d² · reps) ⚠️ Medium Kernel methods
Re-uploading n = d O(d · layers) ✅ Good High-expressivity QNNs
Hamiltonian n = d O(d · steps) ⚠️ Medium Physics simulation / VQE
ZZ Feature Map n = d O(d² · reps) ⚠️ Medium Quantum kernel methods
Pauli Feature Map n = d O(d² · reps) ⚠️ Medium Configurable kernel methods
Random Fourier n_components O(1) ✅ Excellent RBF kernel approximation
Tensor Product ⌈d/2⌉ O(1) ✅ Excellent Qubit-efficient encoding
QAOA Problem n = d O(p) ✅ Good QAOA warm-start, problem-inspired maps
Graph State n = nodes O(edges) ✅ Good Graph-structured data (lossless)

Supported export frameworks

Framework Install Output
OpenQASM 3.0 (included) str
Qiskit pip install quprep[qiskit] QuantumCircuit
PennyLane pip install quprep[pennylane] qml.QNode
Cirq pip install quprep[cirq] cirq.Circuit
TKET pip install quprep[tket] pytket.Circuit
Amazon Braket pip install quprep[braket] braket.Circuit
Q# pip install quprep[qsharp] Q# operation string
IQM pip install quprep[iqm] IQM circuit JSON

Documentation

Full documentation at docs.quprep.org


Examples

Tutorials — beginner-friendly, end-to-end walkthroughs:

Topic Launch
Your first quantum-ready dataset Open In Colab Binder
Real-world messy data (NaN, outliers, imbalance) Open In Colab Binder
End-to-end with a framework (audit → suggest → verify → export) Open In Colab Binder

How-to guides — task-focused, one topic each:

Task Launch
Choose an encoder Open In Colab Binder
Export to Qiskit / PennyLane / Cirq / Braket Open In Colab Binder
Inspect a circuit (angles, gates, diagrams) Open In Colab Binder
Load external data (CSV, OpenML, HuggingFace, streaming) Open In Colab Binder
Non-tabular data (time series, sparse, multi-label) Open In Colab Binder
Fix class imbalance (SMOTE / oversample / undersample) Open In Colab Binder
Validate before encoding (report, compatibility, schema) Open In Colab Binder
Detect data drift in production Open In Colab Binder
Assess encoding quality (expressibility, barren plateau) Open In Colab Binder
Noise-aware preprocessing for NISQ hardware Open In Colab Binder
Solve a QUBO / Ising problem (Max-Cut, Knapsack, QAOA) Open In Colab Binder
Write a custom encoder and register it Open In Colab Binder

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.


License

Apache 2.0 — see LICENSE.


Citation

If you use QuPrep in your research, please cite:

@software{quprep2026,
  author    = {Perera, Hasarindu},
  title     = {QuPrep: Quantum Data Preparation},
  year      = {2026},
  publisher = {Zenodo},
  version   = {0.10.0},
  doi       = {10.5281/zenodo.19286258},
  url       = {https://doi.org/10.5281/zenodo.19286258},
  license   = {Apache-2.0},
}

Metadata

Release files for quprep 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quprep 0.10.0
File Size Uploaded
quprep-0.10.0.tar.gz 710.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for quprep 0.10.0
File Interpreter ABI Platform
quprep-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 929.4 kB

Release files / quprep-0.10.0.tar.gz

Download URL quprep-0.10.0.tar.gz
Size 710.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3d543f84deb5b3affbbc9f793461c4d04af247d44d39b95721513478f7fae871
BLAKE2b-256 checksum
How to use checksums
2e5d31ce64df54151120e1e8d68e48c9f5b2796bdc4bc88b039bf846b71a1996
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 30, 2026.

Transparency log

Release files / quprep-0.10.0-py3-none-any.whl

Download URL quprep-0.10.0-py3-none-any.whl
Size 218.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6315b402204d7775381b9d0fc240edb79dec7315792e957980d5348df0c8190e
BLAKE2b-256 checksum
How to use checksums
fcfc649bcfe7388f0efd035fb368ab7c1f80ae80dc8d518e5ec85bb95876da28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page