-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ClExprOp
and friends
#1628
ClExprOp
and friends
#1628
Conversation
4a44f0c
to
8d86bfc
Compare
abe0519
to
7a4aa1f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've only left a couple of comments - looks nice and clean. Could it be worth adding tests covering some of the strange behaviour from ClassicalExpBox
, such as having classical expressions in CircBox
that are copied, or python circuits that have classical expressions added, the units relabelled and then converted to qasm to confirm that the expressions are as desired?
Good idea, I'll add some such tests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exciting, LGTM! So I could submit jobs to QuantinuumBackend
with qasm
conversion and ClExpr
now and it should work?
Yes I believe that should work. Note that there is not yet a version of |
* Bump cachix/install-nix-action from 29 to 30 (#1606) Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 29 to 30. - [Release notes](https://github.com/cachix/install-nix-action/releases) - [Commits](cachix/install-nix-action@v29...v30) --- updated-dependencies: - dependency-name: cachix/install-nix-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix initialization of subcircuit in `GuidedPauliSimp` implementation (#1607) * Update docs and changelog for 1.33.1 release. (#1612) * fix: update wasm functions to accept `WasmModuleHandler` (#1613) * Update macos CI runners (#1616) * Fix default value of wire_comments. (#1618) * docs: use theming submodule, update docs build and linking (#1609) * remove quantinuum-sphinx * add pytket-docs-theming submodule * delete _static and conf.py * ignore jupyter cache * use myst-nb for code cells * use latest theming commit * ignore any generated .ipynb files * add myst_nb dependency * remove jupyter sphinx and autodoc annotations dependencies * add build docs script * fix formatting of display.md * update docs build in build and test workflow * remove pypi pytket installation * Hardcode pytket version in flake.nix, as there is no longer a place in the source code that it's written down. * ignore jupyter execute * use latest pytket-docs-theming submodule * update extensions links * update sidebar heading for extensions * update pypi page links * update README links * replace remaining docs links * use latest theming commit * use package-mode=false for poetry * install a develop wheel of pytket * try to fix poetry issue * use poetry without .venv in C.I. * run docs build from correct directory * use latest docs theming update * fix up some extensions links * fix some broken links found by checker * link to H-Series docs * fix two more links * fix typo * latest theming (again) * fix artifact path * use extensions.html * use original README link * remove backends sentance * use >= for poetry --------- Co-authored-by: Jake Arkinstall <65358059+jake-arkinstall@users.noreply.github.com> * Support Python 3.13 (#1620) * Bugfix/circuit renderer (#1614) * add default min width/height to circuit renderer config * update docs * changelog * Don't try to install pytket[ZX] with Python 3.13. (#1627) * `ClExprOp` and friends (#1628) * Set MacOS deployment target to 12 for x86. (#1633) * Drop support for MacOS 12 (#1634) * Updated nixpkgs. Added custom mypy build. (#1636) * Updated nixpkgs. Added custom mypy build (required version isn't in nixpkgs) * Used overrideAttrs on nixpkgs' mypy rather than a new derivation as per @johnchildren's suggestion * Refactor greedy pauli simp (#1611) * Initial refactor * Refactor node types * Move nodes definition into a new file * Refactor synthesis * Cleanup * More refactoring * Refactor pauli graph converters * Initial implementation of GPGraph * Migrate to GPGraph * Ignore global phase * Add supports for conditional gates * Add support for classical ops * flatten_registers should only rename qubits and bits * Replace unsigned with Bit * Revert "Replace unsigned with Bit" This reverts commit 9e9a2fd. * Manually check if qubits and bits can be flattened since ``is_simple()`` doesn't work with wasm * Consistent enum names * Add support for mid-circuit measurement * Rename variables * Add support for resets * Update docstrings * Update pass predicate * Add more tests * bump tket version * Add changelog entry * Fix docs errors * bump tket version * Remove unused headers * bump tket version in pytket * uncomment lines * remove consts in SQ_CLIFF_DAGGER * Merging conditionals * Revert "Merging conditionals" This reverts commit f5138f1. * Optimise conditional handling * remove ConditionalPauliRotation * Remove clifford reduction and pass parameters when synthesis conditionals * Seeded tie breaking * Add limits to the search space * Allowing ZZPhase gates * update binder and serialisation * Add test for ops handling in python * add note for AC node cost * bump tket version * update changelog * fix changelog format * add missing prams in docstrings * cast size_t to unsigned * remove nondeterminism from test * Remove more nondeterminism * regen stubs * Add debug info * Revert "Add debug info" This reverts commit e5030e2. * Replace implicit wire swaps in optimised conditional circuits * re-organise changelog * Bump tket version * fix bug in sign correction * Add more tests * Bump version and update changelog for 1.34.0 release (#1637) --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Alec Edgington <54802828+cqc-alec@users.noreply.github.com> Co-authored-by: Kartik Singhal <kartik.singhal@quantinuum.com> Co-authored-by: Jake Arkinstall <65358059+jake-arkinstall@users.noreply.github.com> Co-authored-by: Tiffany Duneau <37022011+DNA386@users.noreply.github.com> Co-authored-by: yao-cqc <75305462+yao-cqc@users.noreply.github.com>
This is the first stage of
ClassicalExpBox
refactoring: defining a new operation type (ClExprOp
) to replace it. This is defined in C++ with Python bindings, and is independent of bit and register names (information about which variable corresponds to which input etc. is encoded in theOp
).This PR also implements QASM conversion to and from the new op, but for QASM-to-circuit conversion this is not the default: a new boolean argument for
circuit_from_qasm
and friends is added to control this. This is so as not to break current workflows that rely on pytket-to-X conversions that don't currently handle theClExprOp
. After this is in a release we will update pytket-qir, pytket-phir and any other relevant extensions to handle the new type; after that we can update tket to use it everywhere by default, write a new decomposer pass for it, and deprecateClassicalExpBox
.PS The Nix build failure is expected because it is using an older mypy version.