mimiqcircuits.operations.annotations¶
Circuit annotations (Detector, QubitCoordinates, etc.).
Classes
|
|
|
Detector operation. |
|
ObservableInclude operation for including observable index. |
|
QubitCoordinates operation for specifying qubit positions. |
|
ShiftCoordinates operation for shifting the coordinates of qubits. |
|
An annotation class representing a timing marker or layer boundary in a quantum circuit. |
- class mimiqcircuits.operations.annotations.Detector(*args)[source]¶
Bases:
AbstractAnnotationDetector operation.¶
An annotation class representing a detector in a quantum circuit.
The Detector operation monitors the parity of measurement results over N classical bits, where the parity should remain deterministic under ideal, noiseless execution. The Detector ensures that the combined parity (even or odd) of a set of measurement results is consistent. If noise or errors disrupt the circuit, the Detector can identify this through unexpected changes in parity, signaling potential measurement errors. This functionality helps in error detection by revealing inconsistencies caused by disturbances.
See also
Examples
Adding Detector operation to a Circuit (applied to classical bits):
>>> from mimiqcircuits import * >>> op = Detector([0.1,0.9]) >>> op lazy Detector(?, [0.1, 0.9])
Fill the Lazy argument by calling the number of bits
>>> op_filled = op(1) >>> op_filled Detector(0.1, 0.9) >>> op_filled.num_bits 1
Getting the nots
>>> op_filled.get_notes() [0.1, 0.9]
Define a new Operation
>>> op = Detector(1, [0.5, 1.0]) >>> op.get_notes() [0.5, 1.0]
Add to the Circuit
>>> c = Circuit() >>> c.push(Detector(1), 0) 1-bit circuit with 1 instruction: └── Detector() @ c[0] >>> c.push(Detector(1, [0.5, 1.0]), 1) 2-bit circuit with 2 instructions: ├── Detector() @ c[0] └── Detector(0.5, 1.0) @ c[1]
- class mimiqcircuits.operations.annotations.QubitCoordinates(*args)[source]¶
Bases:
AbstractAnnotationQubitCoordinates operation for specifying qubit positions.
An annotation class used to specify the spatial location of a qubit in a quantum circuit. Coordinates do not affect simulation results but are useful for visualizing and organizing qubit layouts within the circuit.
See also
Examples
Adding QubitCoordinates to a circuit:
>>> from mimiqcircuits import * >>> QubitCoordinates([0.5, 0.75, 1.0]) QubitCoordinates(0.5, 0.75, 1.0) >>> op = QubitCoordinates([0.5, 0.75, 1.0]) >>> op.get_notes() [0.5, 0.75, 1.0] >>> c= Circuit() >>> c.push(QubitCoordinates([0.2, 0.3]), 0) 1-qubit circuit with 1 instruction: └── QubitCoordinates(0.2, 0.3) @ q[0]
- class mimiqcircuits.operations.annotations.ShiftCoordinates(*args)[source]¶
Bases:
AbstractAnnotationShiftCoordinates operation for shifting the coordinates of qubits.
An annotation class used to apply a shift to the spatial coordinates of subsequent qubit or detector annotations in a quantum circuit. ShiftCoordinates accumulates offsets that adjust the position of related circuit components, aiding in visualization without affecting the simulation.
See also
Examples
Adding ShiftCoordinates to represent spatial shifts in a circuit:
>>> from mimiqcircuits import * >>> ShiftCoordinates(0.1, 0.2, 0.3) ShiftCoordinates(0.1, 0.2, 0.3) >>> ShiftCoordinates([0.4, 0.5]) ShiftCoordinates(0.4, 0.5) >>> ShiftCoordinates(0.4, 0.5) ShiftCoordinates(0.4, 0.5) >>> op = ShiftCoordinates(0.1, 0.9) >>> op.get_notes() [0.1, 0.9] >>> c = Circuit() >>> c.push(ShiftCoordinates(0.4, 0.2)) circuit with 1 instruction: └── ShiftCoordinates(0.4, 0.2)
- class mimiqcircuits.operations.annotations.ObservableInclude(*args)[source]¶
Bases:
AbstractAnnotationObservableInclude operation for including observable index.
An annotation class for adding measurement records to a specified logical observable within a quantum circuit. Observables are sets of measurements expected to produce a deterministic result, used to track specific logical qubit states across operations.
The ObservableInclude class tags a group of measurement records as a logical observable, representing a consistent, predictable result under noiseless conditions. This grouping allows for tracking the state of logical qubits across circuit operations, which is crucial for error correction. Logical observables monitor encoded qubit states by combining multiple measurements, providing robustness against noise and helping to identify any deviations that indicate potential errors.
See also
Examples
Adding ObservableInclude to a circuit:
>>> from mimiqcircuits import * >>> ObservableInclude(2) ObservableInclude() >>> c= Circuit() >>> c.push(ObservableInclude(1), 0) 1-bit circuit with 1 instruction: └── ObservableInclude() @ c[0]