Skip to content

Commit

Permalink
Update docmain branch for pytket 1.29.2 (#1455)
Browse files Browse the repository at this point in the history
* Allow barriers when dagger or transpose circuits (#1400)

* Allow barriers in dagger() and transpose()

* bump tket version

* add changelog entry

* Format test

* Bump cachix/install-nix-action from 26 to 27 (#1403)

Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 26 to 27.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](cachix/install-nix-action@v26...V27)

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

* Bump actions/add-to-project from 0.6.1 to 1.0.1 (#1404)

Bumps [actions/add-to-project](https://github.com/actions/add-to-project) from 0.6.1 to 1.0.1.
- [Release notes](https://github.com/actions/add-to-project/releases)
- [Commits](actions/add-to-project@v0.6.1...v1.0.1)

---
updated-dependencies:
- dependency-name: actions/add-to-project
  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>

* Use `ubuntu-24.04` on CI (#1401)

* Add OpType.CnRx and OpType.CnRz (#1405)

* Add CnRx and CnRz

* Update circuit_test.py

* re clang format

* regen stubs

* Update changelog.rst

* bump version

* Unbump changelog...

oops

* Update ControlledGates.cpp

* split controlled phase gate decomp

* Update circuit_test.py

* Update OpType.hpp

* Update `place_fully_connected` (#1409)

* update place_fully_connected

* Update placement.cpp

* Update placement_test.py

* Bump cachix/cachix-action from 14 to 15 (#1416)

Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 14 to 15.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Commits](cachix/cachix-action@v14...v15)

---
updated-dependencies:
- dependency-name: cachix/cachix-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>

* Post benchmarking results to slack (#1417)

* Post results to slack

* Remove run on PR

* Remove documentation

* Remove pr comment

* Refactor auto rebase and auto squash (#1410)

* Implement python rebase functions in C++

* Implement auto_rebase in c++

* Implement auto_squash in c++

* Test exception handling

* Add AutoRebase, AutoSquash to binder

* Update circuit_library

* Update json schema

* deprecate auto_rebase and auto_squash

* Fix bug

* Replace auto_rebase_pass and auto_squash_pass with AutoRebase and AutoSquash

* Remove auto_rebase_pass and auto_squash_pass from docs

* Bump tket version

* Remove extra lines in docs

* Regenerate stubs

* Add changelog entry

* Fix linting errors

* Sorted gate sets in serialisation

* Better deprecation handling

* Add docs for added CircPool functions

* Add comment to hard-to-understand test

* Fix typo in json schema

* Replace `find()` with `contains()`

* Set `always_squash_symbols` to false when squash `Rz` and `PhasedX`

* Revert to using ubuntu-22.04 runner for valgrind checks. (#1432)

* Handle `NPhasedX` gates in `decompose_cliffords_std()` (#1431)

* Add workflow to mark stale issues and PRs. (#1437)

* update remove blank wires to keep classical bits (#1435)

* update remove blank wires

* add testcase

* update changelog

* update tket version

* update testcases

* update regen stubs

* fix typo

* add param to remove_classical_wire in python

* regen stubs

* Update pytket/docs/changelog.rst

Co-authored-by: Alec Edgington <54802828+cqc-alec@users.noreply.github.com>

* rename parameter to keep_blank_classical_wires

* update tket version

* fix param

* Update pytket/binders/circuit/Circuit/main.cpp

Co-authored-by: Alec Edgington <54802828+cqc-alec@users.noreply.github.com>

* Update pytket/binders/circuit/Circuit/main.cpp

Co-authored-by: Alec Edgington <54802828+cqc-alec@users.noreply.github.com>

* Update pytket/pytket/_tket/circuit.pyi

Co-authored-by: Alec Edgington <54802828+cqc-alec@users.noreply.github.com>

* update testcases to use bits and qubits

* regen stubs

---------

Co-authored-by: Alec Edgington <54802828+cqc-alec@users.noreply.github.com>

* Try running ZX test with all Python versions. (#1438)

* Update Windows compiler version. (#1442)

* Fix FlattenRelabelRegistersPass (#1441)

* update tket version

* update parameter of remove_blank_wires in gen_flatten_relabel_registers_pass

* add python testcase for compilation pass flatten_relabel

* update tket version

* Allow classical transforms and predicates on up to 64 bits (#1446)

* Update docs and changelog for 1.29.0 release. (#1447)

* Update MultiplexedTensoredU2Box Circuit Construction (#1443)

* First changes, compiling but returning incorrect results

* MultiplexedU2Box construction working

* hmm

* refactor to separate

* Update Multiplexor.cpp

* Working on specific cases

* Update test_Multiplexor.cpp

* Update test_Multiplexor.cpp

* working on most cases ...

* Refactor into separate methods

* refactor again and neaten code up

* Tidied, failling test for mystery reasons, moving on ...

* Multiplexed-rz with interleaved gates

* Tidy for PR

* bump

* Update Multiplexor.hpp

* Update Multiplexor.hpp

* Update test_Multiplexor.cpp

* Update Multiplexor.cpp

* attempt to remove mismatch ??

* Update Multiplexor.cpp

* Update Multiplexor.cpp

* fix

* changes

* update rz rotation indexing

* add asserts

* update error threshold

* add multiple constructors

* bump

* Update changelog.rst

* Revert switch from 32- to 64-bit maximum width (#1449)

* Update docs and changelog for 1.29.1 release. (#1451)

* Revert to removing blank classical wires in `FlattenRelabelRegistersPass` (#1453)

* Update docs and changelog for 1.29.2 release. (#1454)

* remove space

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: yao-cqc <75305462+yao-cqc@users.noreply.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: Silas Dilkes <36165522+sjdilkes@users.noreply.github.com>
Co-authored-by: Dan Mills <52407433+daniel-mills-cqc@users.noreply.github.com>
Co-authored-by: cqc-melf <70640934+cqc-melf@users.noreply.github.com>
  • Loading branch information
7 people authored Jun 18, 2024
1 parent 81bca7f commit 73ecce2
Show file tree
Hide file tree
Showing 7 changed files with 577 additions and 129 deletions.
2 changes: 1 addition & 1 deletion pytket/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def package(self):
cmake.install()

def requirements(self):
self.requires("tket/1.3.7@tket/stable")
self.requires("tket/1.3.10@tket/stable")
self.requires("tklog/0.3.3@tket/stable")
self.requires("tkrng/0.3.3@tket/stable")
self.requires("tkassert/0.3.4@tket/stable")
Expand Down
18 changes: 18 additions & 0 deletions pytket/docs/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
Changelog
=========

1.29.2 (June 2024)
------------------

Feature:

* Revert keeping of blank classical wires when running
``FlattenRelabelRegistersPass``.

1.29.1 (June 2024)
------------------

Features:

* Improve depth of circuit produced by ``MultiplexedTensoredU2Box``.
* Revert support of classical transforms and predicates, and QASM registers,
with up to 64 bits. (Revert maximum width to 32.)


1.29.0 (June 2024)
------------------

Expand Down
2 changes: 1 addition & 1 deletion pytket/docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
# The short X.Y version
version = "1.29"
# The full version, including alpha/beta/rc tags
release = "1.29.0"
release = "1.29.2"


# -- General configuration ---------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion tket/conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

class TketConan(ConanFile):
name = "tket"
version = "1.3.7"
version = "1.3.10"
package_type = "library"
license = "Apache 2"
homepage = "https://github.com/CQCL/tket"
Expand Down
38 changes: 35 additions & 3 deletions tket/include/tket/Circuit/Multiplexor.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,24 @@ class MultiplexorBox : public Box {
ctrl_op_map_t op_map_;
};

struct GateSpec {
// TODO: this struct is a little confused as only CX needs qubit, only
// Unitary1QBox needs matrix and only Rotation gates need angle. ... should
// probably make them optional ...
OpType type;
std::optional<unsigned> qubit;
std::optional<Eigen::Matrix2cd> matrix;
std::optional<Expr> angle;

GateSpec(const OpType &type_, unsigned qubit_) : type(type_), qubit(qubit_) {}

GateSpec(const OpType &type_, const Eigen::Matrix2cd &matrix_)
: type(type_), matrix(matrix_) {}

GateSpec(const OpType &type_, const Expr &angle_)
: type(type_), angle(angle_) {}
};

/**
* Multiplexed single-axis rotations
*/
Expand Down Expand Up @@ -139,6 +157,8 @@ class MultiplexedRotationBox : public Box {

static nlohmann::json to_json(const Op_ptr &op);

std::vector<GateSpec> decompose() const;

protected:
/**
* @brief Implement multiplexed rotation
Expand All @@ -156,6 +176,17 @@ class MultiplexedRotationBox : public Box {
OpType axis_;
};

struct MultiplexedU2Commands {
std::vector<GateSpec> commands;
Eigen::VectorXcd diag;
float phase;

MultiplexedU2Commands(
const std::vector<GateSpec> &commands_, const Eigen::VectorXcd &diag_,
float phase_)
: commands(commands_), diag(diag_), phase(phase_) {}
};

/**
* Multiplexed U2 gate
*/
Expand Down Expand Up @@ -205,11 +236,12 @@ class MultiplexedU2Box : public Box {

/**
* @brief Decompose the multiplexor into a sequence of interleaving CX and
* single qubit gates followed by a diagonal matrix
* single qubit gates followed by a diagonal matrix, given as command
* descriptions and a diagonal vector
*
* @return std::pair<Circuit, Eigen::VectorXcd>
* @return MultiplexedU2Commands
*/
std::pair<Circuit, Eigen::VectorXcd> decompose() const;
MultiplexedU2Commands decompose() const;

protected:
/**
Expand Down
Loading

0 comments on commit 73ecce2

Please sign in to comment.