Encoders¶
Encoders map a normalized feature vector to a parameterized quantum circuit.
All encoders:
- Accept a 1-D
np.ndarray - Return an
EncodedResultwith.parametersand.metadata - Are deterministic — same input always produces same output
- Do not normalize — normalization is the pipeline's job
AngleEncoder¶
quprep.encode.angle.AngleEncoder(rotation='ry')
¶
Bases: BaseEncoder
Angle encoding using single-qubit rotation gates.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
rotation
|
str
|
Rotation gate to use: 'ry' (default), 'rx', or 'rz'. |
'ry'
|
Source code in quprep/encode/angle.py
Functions¶
encode(x)
¶
Encode feature vector x as rotation angles.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector. Must be in \([0, \pi]\) for 'ry',
or \([-\pi, \pi]\) for 'rx'/'rz'. Use
|
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/angle.py
AmplitudeEncoder¶
quprep.encode.amplitude.AmplitudeEncoder(pad=True)
¶
Bases: BaseEncoder
Amplitude encoding.
x must be L2-normalized (\(\|x\|_2 = 1\)). Use quprep.normalize.Scaler('l2').
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
pad
|
bool
|
If True, zero-pad x to the next power of two when d is not 2^n. If False, raise ValueError. |
True
|
Functions¶
encode(x)
¶
Encode x as amplitude vector.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
L2-normalized feature vector (\(\|x\|_2 = 1\)). Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/amplitude.py
BasisEncoder¶
quprep.encode.basis.BasisEncoder(threshold=0.5)
¶
Bases: BaseEncoder
Basis (computational state) encoding.
Input x must be binary {0, 1} per feature. Use quprep.normalize.Scaler('binary').
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
threshold
|
float
|
Binarization threshold when input is continuous. Default 0.5. |
0.5
|
Source code in quprep/encode/basis.py
Functions¶
encode(x)
¶
Binarize x and encode as computational basis state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Feature vector. Values >= threshold → 1; values < threshold → 0. |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/basis.py
BaseEncoder and EncodedResult¶
quprep.encode.base.BaseEncoder
¶
Bases: ABC
Abstract interface for quantum encoders.
All encoders must implement encode(), which maps a normalized
feature vector \(x \in \mathbb{R}^d\) to a parameterized quantum circuit.
Subclasses should document: - The mathematical mapping x → circuit parameters. - The number of qubits as a function of d. - The circuit depth as a function of d. - NISQ suitability.
Attributes¶
depth
abstractmethod
property
¶
Circuit depth (integer or asymptotic expression).
n_qubits
abstractmethod
property
¶
Number of qubits required. None if data-dependent.
Functions¶
encode(x)
abstractmethod
¶
Encode a single normalized feature vector.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector. |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
Circuit parameters and metadata for the encoded sample. |
encode_batch(dataset)
¶
Encode all samples in a Dataset.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dataset
|
Dataset
|
Dataset whose rows are encoded one by one. |
required |
Returns:
| Type | Description |
|---|---|
list of EncodedResult
|
One EncodedResult per sample row. |
quprep.encode.base.EncodedResult(parameters, circuit_fn=None, metadata=None)
¶
Output of an encoder for a single sample.
Attributes:
| Name | Type | Description |
|---|---|---|
parameters |
ndarray
|
Circuit parameter values. |
circuit_fn |
callable or None
|
A function(framework) → circuit object, filled in by the exporter. |
metadata |
dict
|
Encoding details (method, n_qubits, depth, etc.). |
EntangledAngleEncoder¶
quprep.encode.entangled_angle.EntangledAngleEncoder(rotation='ry', layers=1, entanglement='linear')
¶
Bases: BaseEncoder
Angle encoding with entangling CNOT layers between rotation rounds.
Each layer applies single-qubit rotations on all qubits followed by a structured CNOT entangling block. Features are re-uploaded in every layer (data re-uploading style).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
rotation
|
str
|
Rotation gate: |
'ry'
|
layers
|
int
|
Number of rotation+entanglement repetitions. Default 1. |
1
|
entanglement
|
str
|
CNOT topology: |
'linear'
|
Source code in quprep/encode/entangled_angle.py
Functions¶
encode(x)
¶
Encode feature vector x as entangled rotation angles.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector. Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/entangled_angle.py
IQPEncoder¶
quprep.encode.iqp.IQPEncoder(reps=2)
¶
Bases: BaseEncoder
IQP feature map encoding.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
reps
|
int
|
Number of repetitions of the feature map layer. Default 2. |
2
|
Source code in quprep/encode/iqp.py
Functions¶
encode(x)
¶
Encode a 1-D feature vector using the IQP feature map.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector in \([-\pi, \pi]\). Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/iqp.py
ReUploadEncoder¶
quprep.encode.reupload.ReUploadEncoder(layers=3, rotation='ry')
¶
Bases: BaseEncoder
Data re-uploading encoder.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layers
|
int
|
Number of re-upload layers L. Default 3. |
3
|
rotation
|
str
|
Rotation gate for data encoding: 'ry', 'rx', or 'rz'. |
'ry'
|
Source code in quprep/encode/reupload.py
Functions¶
encode(x)
¶
Encode a 1-D feature vector using data re-uploading.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector in \([-\pi, \pi]\). Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/reupload.py
HamiltonianEncoder¶
quprep.encode.hamiltonian.HamiltonianEncoder(evolution_time=1.0, trotter_steps=4)
¶
Bases: BaseEncoder
Hamiltonian / time-evolution encoding.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
evolution_time
|
float
|
Evolution time T. |
1.0
|
trotter_steps
|
int
|
Number of Trotter steps S. More steps → higher fidelity, greater depth. |
4
|
Source code in quprep/encode/hamiltonian.py
Functions¶
encode(x)
¶
Encode a 1-D feature vector using Trotterized Hamiltonian evolution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Feature vector encoding Hamiltonian coefficients. Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/hamiltonian.py
ZZFeatureMapEncoder¶
quprep.encode.zz_feature_map.ZZFeatureMapEncoder(reps=2)
¶
Bases: BaseEncoder
ZZ feature map encoder (Qiskit-compatible convention).
Implements the feature map from Havlíček et al. (2019) using
the same parameter convention as Qiskit's ZZFeatureMap:
single-qubit angles are 2(π − xᵢ) and pairwise angles are
2(π − xᵢ)(π − xⱼ).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
reps
|
int
|
Number of repetitions of the feature map layer. Default 2. |
2
|
Source code in quprep/encode/zz_feature_map.py
Functions¶
encode(x)
¶
Encode a 1-D feature vector using the ZZ feature map.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector in \([0, 2\pi]\).
Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/zz_feature_map.py
PauliFeatureMapEncoder¶
quprep.encode.pauli_feature_map.PauliFeatureMapEncoder(paulis=None, reps=2)
¶
Bases: BaseEncoder
Pauli feature map encoder.
Generalizes the ZZ feature map by allowing arbitrary single- and
two-qubit Pauli strings as interaction terms. The default
paulis=['Z', 'ZZ'] reproduces the ZZ feature map (with direct
x_i parametrization rather than the π − xᵢ convention).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
paulis
|
list of str
|
Pauli strings to include. Single-qubit: |
None
|
reps
|
int
|
Number of repetitions. Default 2. |
2
|
Source code in quprep/encode/pauli_feature_map.py
Functions¶
encode(x)
¶
Encode a 1-D feature vector using the Pauli feature map.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector in \([-\pi, \pi]\).
Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/pauli_feature_map.py
RandomFourierEncoder¶
quprep.encode.random_fourier.RandomFourierEncoder(n_components=8, gamma=1.0, random_state=None)
¶
Bases: BaseEncoder
Random Fourier features encoder.
Projects input features through a random Fourier basis to approximate the RBF kernel, then angle-encodes the result on a fixed number of qubits. Must be fitted before use.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n_components
|
int
|
Number of random Fourier features (= number of qubits). Default 8. |
8
|
gamma
|
float
|
RBF kernel bandwidth parameter. Default 1.0. |
1.0
|
random_state
|
int or None
|
Seed for reproducibility. Default None. |
None
|
Source code in quprep/encode/random_fourier.py
Functions¶
encode(x)
¶
Project x through random Fourier features and angle-encode.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Feature vector. Must match the dimensionality used in :meth: |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If :meth: |
Source code in quprep/encode/random_fourier.py
fit(X)
¶
Sample the random projection matrix from the training data shape.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
X
|
(ndarray, shape(n_samples, d))
|
Training data (used only for dimensionality). |
required |
Returns:
| Type | Description |
|---|---|
self
|
|
Source code in quprep/encode/random_fourier.py
TensorProductEncoder¶
quprep.encode.tensor_product.TensorProductEncoder
¶
Bases: BaseEncoder
Tensor product encoding using full Bloch sphere parameterization.
Encodes pairs of features as Ry + Rz rotations on individual
qubits with no entanglement. Uses ⌈d/2⌉ qubits for
d-dimensional input.
No parameters.
Functions¶
encode(x)
¶
Encode a 1-D feature vector onto the Bloch sphere.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector. Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/tensor_product.py
QAOAProblemEncoder¶
quprep.encode.qaoa_problem.QAOAProblemEncoder(p=1, gamma=np.pi / 4, beta=np.pi / 8, connectivity='linear')
¶
Bases: BaseEncoder
QAOA-inspired problem encoder.
Encodes a feature vector as a one-layer (or multi-layer) QAOA circuit where the cost Hamiltonian is constructed from the feature values:
- Local fields: \(h_i = \gamma \cdot x_i\)
- Couplings: \(J_{ij} = \gamma \cdot x_i x_j\) (linear or full connectivity)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
p
|
int
|
Number of QAOA layers (circuit repetitions). Default 1. |
1
|
gamma
|
float
|
Scaling factor for the cost unitary angles. Default |
pi / 4
|
beta
|
float
|
Mixing angle for the RX mixer. Default |
pi / 8
|
connectivity
|
('linear', 'full')
|
|
"linear"
|
Source code in quprep/encode/qaoa_problem.py
Functions¶
encode(x)
¶
Encode a 1-D feature vector as a QAOA problem circuit.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector in \([-\pi, \pi]\).
Use |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/qaoa_problem.py
DenseAngleEncoder¶
quprep.encode.dense_angle.DenseAngleEncoder(first_rotation='ry', second_rotation='rz')
¶
Bases: BaseEncoder
Dense angle encoding — 2 features per qubit via two rotation gates.
Encodes feature pairs as two consecutive single-qubit rotations, using
⌈d/2⌉ qubits for d-dimensional input (half the count of
:class:~quprep.encode.angle.AngleEncoder).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
first_rotation
|
str
|
First rotation gate applied to each qubit. One of |
'ry'
|
second_rotation
|
str
|
Second rotation gate applied to each qubit. One of |
'rz'
|
Source code in quprep/encode/dense_angle.py
Functions¶
encode(x)
¶
Encode a feature vector using two rotation gates per qubit.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Normalized feature vector. Recommended normalization:
|
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/dense_angle.py
DiscretizedEncoder¶
quprep.encode.discretized.DiscretizedEncoder(bits=4, min_val=0.0, max_val=1.0)
¶
Bases: BaseEncoder
Discretized encoding — maps continuous features to binary basis states.
Each feature is quantized into bits binary digits using unsigned
fixed-point representation. The resulting binary vector is QUBO-ready
and can be passed directly to :func:quprep.qubo.to_qubo.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bits
|
int
|
Bits per feature. Default 4. Precision = (max_val − min_val) / (2^bits − 1). |
4
|
min_val
|
float
|
Lower bound of the expected feature range. Default 0.0. |
0.0
|
max_val
|
float
|
Upper bound of the expected feature range. Default 1.0. |
1.0
|
Source code in quprep/encode/discretized.py
Functions¶
decode(bits_array)
¶
Reconstruct continuous feature values from a binary parameter array.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bits_array
|
(ndarray, shape(d * bits))
|
Binary array as returned by |
required |
Returns:
| Type | Description |
|---|---|
(ndarray, shape(d))
|
Reconstructed feature values in |
Source code in quprep/encode/discretized.py
encode(x)
¶
Quantize each feature to bits binary digits and encode as a basis state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
(ndarray, shape(d))
|
Feature vector. Values outside |
required |
Returns:
| Type | Description |
|---|---|
EncodedResult
|
|
Source code in quprep/encode/discretized.py
Circuit parameter inspector¶
quprep.encode.inspector.inspect_encoding(result)
¶
Inspect an EncodedResult and return structured gate parameters.
Parses the parameters and metadata fields of the result to build
a gate-level description of the encoded circuit, suitable for programmatic
inspection and debugging.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
result
|
EncodedResult
|
Output of any |
required |
Returns:
| Type | Description |
|---|---|
EncodingParams
|
Structured object with raw |
Examples:
quprep.encode.inspector.EncodingParams(encoding, n_qubits, depth, angles, gates=list(), metadata=dict())
dataclass
¶
Structured representation of a quantum encoding circuit's parameters.
Attributes:
| Name | Type | Description |
|---|---|---|
encoding |
str
|
Encoding type (e.g., |
n_qubits |
int
|
Number of qubits used. |
depth |
int or str or None
|
Circuit depth. |
angles |
ndarray
|
Raw rotation angle parameters from the encoder. |
gates |
list[GateParam]
|
Gate-level description of the circuit. |
metadata |
dict
|
Full metadata dict from the |
quprep.encode.inspector.GateParam(gate, qubit=None, angle=None, control=None, amplitudes=None)
dataclass
¶
A single gate operation with its parameters.