Skip to content

Releases: TeamGraphix/graphix

Release 0.2.16

26 Aug 13:52
Compare
Choose a tag to compare

[0.2.16] - 2024-08-26

This version introduces several important interface changes, aimed at secure data manipulation and improved code maintainability.
More changes are expected in version 0.3.0, to reach a milestone of stable and reliable MBQC pattern expression, manipulation and simulation library around which other packages can be built.

Added

  • Added classes for a standardized definition of pattern commands and circuit instructions (graphix.commands, graphix.instructions). This is for data validation, readability and maintainability purposes. Preiously, the commands and instructions were represented as raw data inside lists, which are prone to errors and not readable. by @thierry-martinez
  • The following changes were made (#155):
    • Added class Command and all its child classes that represent all the pattern commands.
    • Added class Instruction for the gate network expression in quantum circuit model. Every instruction can be instanciated using this class by passing its name as defined in the Enum InstructionName.
  • class graphix.OpenGraph to transpile between graphix patterns and pyzx graphs.
  • class graphix.pauli.PauliMeasurement as a new Pauli measurement checks (used in pattern.perform_pauli_measurements).

Fixed

  • Typos and bugs in docs fixed.

Changed

  • Entire package was updated to follow the new data classes, e.g. pattern.add(["M", 0, "XY", 0, [], []]) -> pattern.add(M(node=0)).
  • Measure commands do no longer carry vertex operators (vop): Clifford gates can still be applied to measures with the method M.clifford, which returns a new measure commands where plane, angle and domains has been updated.
  • X- and Z-domains for measures and domain for correction commands are now set of nodes (instead of lists).
  • Migrated style checks to ruff, and corresponding CI is set up.
  • Codecov is now set up for coverage report on each PR and CI is set up.

Contributors

@thierry-martinez @EarlMilktea @wlcsm @vincentmr

Release 0.2.15

21 Jun 20:19
14aedc2
Compare
Choose a tag to compare

Added

  • python 3.12 support
  • Arbitrary states now allowed for initializing input nodes in state vector
    and density matrix backends. use input_state optional argument in Statevector and DensityMatrix backends.
  • Simple planar state class graphix.states.PlanarState for states on one of the three planes (XY, XZ, YZ).

Fixed

Changed

  • Basic states such as |0>, |+> states are now defined in states.BasicStates and no longer
    in ops.States.

Release 0.2.14

11 May 02:56
Compare
Choose a tag to compare

Fix Build issue

Release 0.2.13

11 May 02:39
Compare
Choose a tag to compare

Fixed

  • Build configuration for PyPI (54eb821)

Release 0.2.12

11 May 00:36
f67e29f
Compare
Choose a tag to compare

[0.2.12] - 2024-05-11

Added

  • Transpiled circuits can now have "measure" gates, introduced with
    the circ.m(qubit, plane, angle) method. The measured qubit cannot
    be used in any subsequent gate.
  • Added gflow.find_pauliflow, gflow.verify_pauliflow and pauliflow_from_pattern methods (#117)
  • Pauli-flow finding algorithm (#117)
  • workflow for isort, codecov (#148, #147)

Fixed

  • Fix output node order sorting bug in Pauli preprocessing measure_pauli (#145)

Changed

  • The transpiler now returns a TranspileResult dataclass: the
    pattern is available in the pattern field, and the field
    classical_outputs contains the index where the classical measures
    can be found in the results array of the simulator.
  • The circuit simulator now returns a SimulateResult dataclass: the
    state vector is available in the statevec field, and the field
    classical_measures contains the results of the measure gates.
  • Patterns are now allowed to measure all their nodes, and have an
    empty output set.
  • Completely migrated to pytest, no unittest usage remains (#134)

Contributors

@thierry-martinez @d1ssk @mgarnier59 @EarlMilktea @nabe98

Release 0.2.11

16 Mar 05:45
Compare
Choose a tag to compare

[0.2.11] - 2024-03-16

Added

  • Added flow and gflow verifiers (#99).
  • Added gflow.flow_from_pattern method.

Fixed

  • Fixed bug in index permutation within linalg.MatGF2 and gflow.find_gflow.
  • Fixed gflow.gflow_from_pattern method.

Changed

  • Renamed flow-related methods
    • gflow.flow and gflow.gflow are now gflow.find_flow and gflow.find_gflow, respectively.
  • Pattern class stability upgrade:
    • Pattern.seq is renamed into a private field Pattern.__seq and
      Pattern.Nnode is now a read-only property. Pattern constructor
      now only takes an optional list of input_nodes, and can only be
      updated via add and extend. Pattern are now iterable and len
      is now defined for patterns: we should write for command in pattern:
      instead of for command in pattern.seq: and len(pattern) instead
      of len(pattern.seq). N commands are no longer added by Pattern
      constructor and should be added explicitly after the instantiation.
  • GraphVisualizer upgrade to offer more options for inspecting correction sets.
    • Changed the behavior of visualization in the GraphVisualizer class.
      Prepared a visualize method that visualizes based on the graph only,
      and a visualize_from_pattern that visualizes based on the pattern.
      Both search for gflow or flow, and if found, plot them. If not found,
      in the case of from the graph, only the graph is drawn, and in the case
      of from the pattern, both the graph and all correction sets are drawn.

Contributors

@thierry-martinez @d1ssk @mgarnier59 @masa10-f @king-p3nguin

Release 0.2.10

03 Jan 15:23
Compare
Choose a tag to compare

Added

  • Added rustworkx as a backend for the graph state simulator
    • Only networkx backend was available for pattern optimization.
      By setting the use_rustworkx option to True while using Pattern.perform_pauli_measurements(),
      graphix will run pattern optimization using rustworkx (#98)
  • Added .ccx and .swap methods to graphix.Circuit.

Fixed

  • Fixed gflow-based graph visualization (#107)

Release 0.2.9

29 Nov 13:59
Compare
Choose a tag to compare

Added

  • internal updates of gflow and linear algebra functionalities:
    • A new option mode in gflow.gflow, specifying whether to obtain all possible maximally delayed gflow or not (#80)
    • New MatGF2 class that computes elementary operations and Gauss-Jordan elimination on GF2 field, for faster gflow-finding (#80)
  • Added benchmarking page on docs (#89).
  • Added graphix-perceval to [extra] option of the pip installation.

Changed

  • Removed z3-solver and added galois and sympy in requirements.txt (#80)

Removed

  • Removed timeout optional arguments from gflow.flow and gflow.gflow.

Fixed

  • Bugfix conditional branch in gflow.gflowaux (#80)

Release 0.2.8

05 Nov 06:46
Compare
Choose a tag to compare

Added

  • Add support for python 3.11

Release 0.2.7

06 Oct 01:38
Compare
Choose a tag to compare

[0.2.7] - 2023-10-06

Added

  • Visualization tool of resource state for a pattern, with flow or gflow structures (#78)
  • Visualize the resource state by calling Pattern.draw_graph()
  • Tool to extract fusion network from the resource state of a pattern (#87).