Published March 31, 2026 | Version v0.3.5
Software Open

Graphix

Description

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.

Notes

If you use this software, please cite it as below.

Files

TeamGraphix/graphix-v0.3.5.zip

Files (923.4 kB)

Name Size Download all
md5:053baffa0808fd05611d9378c6dddcee
923.4 kB Preview Download

Additional details

Related works