Graphix

Latest version: v0.2.16

Safety actively analyzes 688178 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

0.2.16

This version introduces several important interface changes, aimed at secure expression and improved code maintainability.

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.
- 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

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.

0.2.15

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`.

0.2.14

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)

0.2.12

- 0.2.12 yanked on `pypi`

0.2.11

Added

- Added flow and gflow verifiers ([99](https://github.com/TeamGraphix/graphix/issues/99)).
- Added `gflow.flow_from_pattern` method.
- Added noisy MBQC simulation backend.
- `sim.density_matrix` module added for density matrix simulation backend, which is incorporated into the `simulator.PatternSimulator` interface.
- `noise_models` module, containing abstractclass `NoiseModel` and a simplified model (no noise) `NoiseLessNoiseModel`, to define operaion-specfic channels (e.g. 'N' and 'E' commands have separate noise models expressed by Kraus channels).
- `channels` module, defining `KrausChannel` class.
- `random_objects` and `linalg_validations` module for math support: random state, random unitary, random maps, matrix validations for channel definition.

Fixed

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

Changed

- Renamed methods; `gflow.flow` and `gflow.gflow` are now `gflow.find_flow` and `gflow.find_gflow`, respectively.
- `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.
- 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.
- Removed `paddle` from benchmarks following github dependabot alert.
- `PatternSimulator` takes optional argument noise_model during init, to specify noise model for `densitymatrix` simualtion.

0.2.10

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)

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.