
Added #386, #433: Added Statevec.fidelity and Statevec.isclose methods for pure-state fidelity computation and equality check up to global phase. #447: Pattern.perform_pauli_pushing which calls StandardizedPattern.perform_pauli_pushing. #450: transpile_swaps eliminates all the SWAP instructions from a circuit. #450: Circuit.visit and BaseInstruction.visit performs simple replacements on circuits and instructions, given an InstructionVisitor. #457: Added Statevec.to_dict and Statevec.to_prob_dict methods to convert a statevector to dictionary form as suggested in #100. #461: A warning is raised when the rng parameter is not set, as the default random generator will be used and results may not be reproducible. #445: Circuit extraction. Added PauliFlow.is_focused to verify if a Pauli flow is focused and PauliFlow.pauli_strings associating a Pauli string to the every corrected node. Added PauliFlow.extract_circuit Added new module graphix.circ_ext.extraction to extract circuits from Pauli flows with the following new classes: - ExtractionResult - PauliString - PauliExponential - PauliExponentialDAG - CliffordMap Added new module graphix.circ_ext.compilation to perform the transformation ExtractionResult -> Graphix circuit with the following new functions: - er_to_circuit - pexp_ladder_pass Fixed #429 Modify graphix.noise_models.noise_model.ApplyNoise to handle conditionality based on a domain attribute (like command.X and command.Z). Moved the conditional logic to graphix.simulator to remove code duplication in the backends. Solves #428. #430: The type of state in PatternSimulator is now deduced from the back-end. #438: ComplexUnit.try_from now uses cmath.isclose for float comparison and has optional parameters rel_tol and abs_tol. #440, #441: Statevec.nqubits now returns the correct value. #455: Causal-flow finding algorithm (graphix.flow._find_cflow.py) does not raise RecursionError now. #458: The type for the input_state parameter in the simulator now allows None to indicate that the input qubits have already been specified in the backend. #465: Fix #464. Functions in graphix._linalg.py convert arrays to c-contiguous form before passing them to numba-jitted functions. Changed #181, #423: Structural separation of Pauli measurements The class Measurement is now abstract and has two concrete subclasses: PauliMeasurement and BlochMeasurement. M commands are now parameterized by an instance Measurement (instead of carrying a plane and an angle). Conversions are explicit with Measurement.to_bloch() and Measurement.infer_pauli_measurements(). Pauli measurement inference uses math.isclose and has optional parameters rel_tol and abs_tol. #430: The whole code base is now type-checked with mypy and pyright, including examples. #460: Updated Pattern methods (to_ascii, to_unicode, to_latex) and pattern_to_str to allow limit to be None. Removed the deprecated print_pattern function.
