[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 EnumInstructionName
.
- Added
class graphix.OpenGraph
to transpile between graphix patterns and pyzx graphs.class graphix.pauli.PauliMeasurement
as a new Pauli measurement checks (used inpattern.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 methodM.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.