Getting Started¶
This tutorial walks you through the core workflow of the Quantum Encoding Atlas: creating encodings, inspecting their properties, and generating quantum circuits.
What you'll learn
- Creating encoding instances with different configurations
- Accessing encoding properties (qubits, depth, gates, simulability)
- Generating circuits for PennyLane, Qiskit, and Cirq
- Using the recommendation engine
Creating Your First Encoding¶
from encoding_atlas import AngleEncoding, IQPEncoding
# A simple product-state encoding
angle = AngleEncoding(n_features=4, rotation='Y')
# An entangling encoding with provable hardness
iqp = IQPEncoding(n_features=4, reps=2, entanglement='full')
Every encoding takes n_features as its first argument — the number of classical features to encode. Additional parameters control the circuit structure.
Inspecting Properties¶
props = iqp.properties
print(f"Qubits: {props.n_qubits}")
print(f"Depth: {props.depth}")
print(f"Gate count: {props.gate_count}")
print(f"Entangling: {props.is_entangling}")
print(f"Simulable: {props.simulability}")
The properties attribute returns an EncodingProperties dataclass computed lazily on first access and cached for subsequent calls. See Encoding Properties for what each metric means.
Generating Circuits¶
import numpy as np
x = np.array([0.1, 0.2, 0.3, 0.4])
# PennyLane circuit
pl_circuit = iqp.get_circuit(x, backend='pennylane')
# Qiskit circuit (requires: pip install encoding-atlas[qiskit])
qk_circuit = iqp.get_circuit(x, backend='qiskit')
# Cirq circuit (requires: pip install encoding-atlas[cirq])
cirq_circuit = iqp.get_circuit(x, backend='cirq')
Comparing Two Encodings¶
from encoding_atlas import AngleEncoding, IQPEncoding
encodings = {
'Angle': AngleEncoding(n_features=4),
'IQP': IQPEncoding(n_features=4, reps=2),
}
for name, enc in encodings.items():
p = enc.properties
print(f"{name:10s} qubits={p.n_qubits} depth={p.depth} "
f"entangling={p.is_entangling}")
Getting Recommendations¶
from encoding_atlas.guide import recommend_encoding
rec = recommend_encoding(
n_features=4,
n_samples=500,
task='classification',
hardware='simulator',
priority='accuracy'
)
print(f"Recommended: {rec.encoding_name}")
print(f"Reason: {rec.explanation}")
Next Steps¶
- Comparing Encodings — run deeper analysis with expressibility and entanglement metrics
- Encodings Reference — detailed documentation for all 16 encodings
- API Reference — full programmatic interface