Skip to content
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

Feat qeclib steane #75

Merged
merged 12 commits into from
Sep 12, 2024
Merged

Feat qeclib steane #75

merged 12 commits into from
Sep 12, 2024

Conversation

qciaran
Copy link
Collaborator

@qciaran qciaran commented Sep 12, 2024

Adding SLR and Steane code qeclib

@qciaran qciaran requested a review from ciaranra as a code owner September 12, 2024 22:11
Copy link
Member

@ciaranra ciaranra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merging to reduce long-term branch isolation

@ciaranra ciaranra merged commit 67ee616 into development Sep 12, 2024
9 checks passed
@ciaranra ciaranra deleted the feat-qeclib-steane branch September 12, 2024 23:36
ciaranra added a commit that referenced this pull request Nov 24, 2024
* Initial dump of qeclib code + SLR updates

* Add teleportation/application of the Tdg gate to Steane code class.

* fix register naming bug (#70)

* Add qasm regression tests

* Refactor qasm generation

* Removed some test print statements

* Use `default_rus_limit` in `Steane` class (#74)

* use default_rus_limit

* Revert "use default_rus_limit"

This reverts commit c186dd9.

* set rus_limit to None by default

* Allow passing ancillas to `Steane` class (#72)

* allow ancilla recycling in Steane class

* raise error if ancilla register is too small

* add only new variables

* Revert "add only new variables"

This reverts commit a0d8e4f.

* Fixing regression qasm issues

* lint fixes

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>
Co-authored-by: Michael A. Perlin <[email protected]>
ciaranra added a commit that referenced this pull request Nov 24, 2024
* Initial dump of qeclib code + SLR updates

* Add teleportation/application of the Tdg gate to Steane code class.

* fix register naming bug (#70)

* Add qasm regression tests

* Refactor qasm generation

* Removed some test print statements

* Use `default_rus_limit` in `Steane` class (#74)

* use default_rus_limit

* Revert "use default_rus_limit"

This reverts commit c186dd9.

* set rus_limit to None by default

* Allow passing ancillas to `Steane` class (#72)

* allow ancilla recycling in Steane class

* raise error if ancilla register is too small

* add only new variables

* Revert "add only new variables"

This reverts commit a0d8e4f.

* Fixing regression qasm issues

* lint fixes

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>
Co-authored-by: Michael A. Perlin <[email protected]>
ciaranra added a commit that referenced this pull request Nov 24, 2024
* Initial dump of qeclib code + SLR updates

* Add teleportation/application of the Tdg gate to Steane code class.

* fix register naming bug (#70)

* Add qasm regression tests

* Refactor qasm generation

* Removed some test print statements

* Use `default_rus_limit` in `Steane` class (#74)

* use default_rus_limit

* Revert "use default_rus_limit"

This reverts commit c186dd9.

* set rus_limit to None by default

* Allow passing ancillas to `Steane` class (#72)

* allow ancilla recycling in Steane class

* raise error if ancilla register is too small

* add only new variables

* Revert "add only new variables"

This reverts commit a0d8e4f.

* Fixing regression qasm issues

* lint fixes

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>
Co-authored-by: Michael A. Perlin <[email protected]>
ciaranra pushed a commit that referenced this pull request Dec 7, 2024
* Added files.

* Updated the README with Read the Docs info.

* Updating docs/README since adding project to pypi.

* Small fix to README.

* Small changes to install instructions.

* Added SVG PECOS icons and ProjectQ extension.

* Included initial version of Cirq wrapper. [Not fully functional...]

* Added the shorest_logicals method to the VerifyStabilizers tool.

* Updated requirements for the simulator wrappers.

* Simplified circuit_runners and took out kwargs `param` in circuit data structures so params always given when looping over circuits.

* Changed circuit_runners method run_logic to just run. `run` now will run both LogicalCircuits and QuantumCircuit. Applying errors to both.

* Added the MS (square root of XX) gate to PySparseSim. Added simulator tests. Other minor improvements.

* Took out cirq wrapper to move it to feature branch

* Initial built initial wrapper for qcgpu

* Small improvements.

* Took out circuit_runner not longer being used. Improved `Standard.` Corrected error in ProjectQ wrapper.

* deleted old circuit runner

* Wrapped most of the gates.

* Fixed F2 definition error and made minor improvements in ProjectQ wrapper. Minor improvements to Standard and SparseSim.

* Added the MS gate (Sqrt XX).

* Removed quantum_circuit_duration to put it in a separate feature branch.

* removed two unnecessary documentation pages.

* Improved installation documentation

* More doc improvements

* Added warnings that `run_circuit` and `run_logic` are being deprecated for `run`.

* Added environment yml and described its use in the documentation.

* Updated install doc and removed unnecessary _build folder.

* First pass at updating the documentation to just have the ``run`` method.

* Updated README

* Update to docs. Corrected version number to 0.2.dev

* Small modifications to simulators.

* Fixed a test.

* Simplified circuit runners.

* Simplification to circuit runner. Added new logo. Small improvement to simulators.

* added things to gitignore

* Changed README to point to the development branch documentation.

* Added MANIFEST and setup.cfg from master branch

* Edited doc index wording.

* Edited doc index wording v2.

* Small bib fix to doc

* Simplifications for std output and error circuits.

* Improved .gitignore and manifest prune

* Small improvements to doc

* Simplified/cleaned Standard, tests, and tools.

Removed `init` method from circuit_runner `Standard`. Cleaned deprecated methods from tests and tools. Small improvement to README.

* Corrected documentation on simulators.

* Fixed other pages that included the init method of Standard.

* Simplification to Standard in circuit_runners. Moved std_output to misc.

* Removed deprecated Standard methods. Updated conda yml and requirements.

* Added a Pauli propagation simulator. Improved the ProjectQ wrapper.

* Added a possible QuantumCircuit replacement (quantum_circuit_new)

* A collection of small improvements.

* Fixed errors in Pauli prop sim and made small improvement to it.

* Added `logical_sign` method to Pauli prop sim and ProjectQ wrapper.

* Simplifying the `logical_sign` method

* Improved the docstrings and typing of quantum_circuit_new.py

* Further improvements to quantum_circuit_new

* Improvements to ProjectQ wrapper and gate_dict -> bindings in sims

* Improved wrapping of ProjectQ.

* Fix error for random circuit test.

* Updated simulators. Changed random_outcome to forced_outcome.

* added simulator class typing file

* small fix

* New circuit updates

* additional circuit update

* change type name

* accumulated updates

* Dev cleanup (#1)

* Move ruff config to its own file

* Clean up README

* Pre-commit pass on all files

* Add typos pass

* Sync gitignore with GitHub's official Python.gitignore

* Add testing instructions

* Fix docs generation and copyright

* Remove redundant gitignore

* Create python-app.yml

* Also run CI on PRs to dev branch

* Fix testing command

* Install package before running tests

* Cache dependencies for faster CI processing

* Ignore PyCharm idea folder as before

* Also run CI on dev

* Revert and exclude formatting changes to gates table

* Added more to README install section

* Setting the copyrights for The PECOS developers to original 2018

* To .gitignore, added more cython extensions, + vscode + avoiding tracking C++ extern

* Replacing Quantinuum logo with svg file

* Moved custom ignores to the top of file

* fixed README typo

* Auto-generate requirements.txt using pip-tools / pip-compile

* Updating copyright dates as suggested

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* add makefile (#2)

* Add Makefile with useful commands

* Ignore DeprecationWarning: datetime.datetime.utcfromtimestamp()

* Adding [all] options

* Removing install-all from tests and docs

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* Adding rtd yaml copied from https://docs.readthedocs.io/en/stable/config-file/v2.html

* Update documentation for modern rtd

* Until refactored, measurements need to accept **params (#13)

* Update packages, cleanup ruff.toml (#14)

* Update packages, cleanup ruff.toml

* Adding backing in ANN per directory ignore

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* Fix sim (#15)

* Fix conditional eval oversight

* Cherry-picked from c4e5ed

* Dev updates (#16)

* Fixing some documentation issues found by doctest + blackdoc

* Expanding Makefile to include additional useful options

* refactor resetting environment tracking attributes in cinterp

* unit and integration test stubs

* Adding comments to makefile + modifying .venv to replace old .venv

* Tweaked Makefile to not both with __pycache__ + added comment + removing VENV_BIN since not used right now

* Assume all tests are integration tests unless proven otherwise later

* remove print statement from cinterp

* Apply suggestions from code review

Co-authored-by: Kartik Singhal <[email protected]>

* Adding docstrings to empty test __init__.py files

* Rewriting to focus on using venv only.

* Updated Makefile given PR conversation. Hopefully improves clarity

---------

Co-authored-by: Ciaran <[email protected]>
Co-authored-by: Kartik Singhal <[email protected]>

* Dev update (#17)

* Removing dependencies from README + using | to separate Python versions

* Makefile refactor + help + docs now uses venv

* Testing PHIR. Fixing wasmer/wasmtime pathlib issue

* Added basic PHIR wasm tests + tests-dep to Makefile

* Adding pytest.ini

* Adding tests of PHIR and Wasm

* Move error_params and machine_params to be declased only at the object level

* Making optional dep (ProjectQ) not default.

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>
Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* Minor fix to PHIR tests + adding pytest as metadependency (#18)

* Minor fix to PHIR tests + adding pytest as metadependency

* adding optional dep mark to test

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* fix: errors found in end to end testing with pytket-phir

* reviewfix: angles only needed in QOp

* reviewfix: convert RZZ to I during phir -> pypmir conversion

* Adding very simple depolarizing error model. (#24)

* changing the dev version number from 0.5.dev1 to 0.5.0.dev1 to be more specific (#25)

* Version bump to fix pypi issue.

* Bug phir if statement (#27)

* Fixed issue with yielding instructions of blocks

* bump to 0.5.0.dev3 + avoiding [] buffer yielding

* Fixing linting because my pre-commit hook was off

* add external phir dependency + remove Python 3.8 + test both required… (#19)

* add external phir dependency + remove Python 3.8 + test both required and optional dependencies

* Updating workflow to include diff OSs. Added skipping of tests based on optional dependency OS/Python version support.

* Skip wasmer tests on for Python >= 3.11

* Skipping test if Wasmer could not be imported.

* More robust method for skipping tests of Wasmer due to unsupported systems

* Add simple test of extern phir

* Requirement update to phir 0.1.6

* Included PHIR model validation and related tests

* small bump for requirements.txt

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* Added support for qparallel. (#33)

* Added support for qparallel.

* Bumping to 0.5.0.dev4

* Bug out of order seq (#35)

* Fixed buggy yielding of Sequence/QParallel blocks

* Add a test of the sequence of op buffers.

* Reworked recursive iteration through blocks to be more elegant

* Marked test using state-vec sim as optional dependency

* Added Clifford Bell qparallel test and silence tz warning

* Bumping version to 0.5.0.dev5 and updating requirements

* Fixing support of PHIR's multi-assignment (#36)

* Fixing support of PHIR's multi-assignment

* bump version to 0.5.0.dev6

* Adding coder owners file

* Fixing code owners file typo

* build: add typed marker for pecos

* Initial support for barriers (skips barriers for now). (#38)

* Initial support for barriers (skips barriers for now).

* Additional barrier testing and associated fixes

* bumping version to 0.5.0.dev7

* Update requirements

* Bumping phir req (#39)

* updating requirements to phir ~= 0.3.0

* Fixes rare test error

* Bumping version to 0.5.0.dev8 and updating requirements.txt

* Broadening wasmtime req. + simplifying [all] (#42)

* Add wasmtime support for engines/cvm/wasm (#43)

* bumping to version 0.5.0.dev9 (#44)

* Update docs (#47)

* Various small updates of docs including autogen of API docs

* Small doc tweaks + fixing FT checking file issue that was detected by generating docs automatically

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* Feature more simulators (#21)

* CoinToss simulator implemented.

* Replaced the old CuStateVec simulator (C API)  with a version using the Python API.

* Updated README with installation instructions for CuStateVec.

---------

Co-authored-by: PabloAndresCQ <[email protected]>
Co-authored-by: Kartik Singhal <[email protected]>

* Cumulative development update (#54)

* Added .sim_name to QOps. Added angle info to QOp.angle

* Added code to identify Clifford gates from more general gates

* Added conversion to Clifford support for RZ , RZZ, and R1XY

* Tweaking generic machine to clear state

* Add test of operation type before running qsims.

* Adding general Instr type and list types

* Adding slr code

* Updated linting/formatting

* Moving slr down to reduce nesting

* fix slr __version__

* Creating a slr.std folder to hold common extension to core to the DSL

* Fixing std import

* Adding in duration for MOps in PyPMIR

* Modifying qargs in mops appropriately.

* Moving the old cuquantum code to cuquantum_old for now...

* Updating actions/setup-python from v4 to v5

* Adding tests of SLR and gate name resolving + some fixes due to those

* Update .pre-commit-config.yaml

Co-authored-by: Kartik Singhal <[email protected]>

* Apply suggestions from code review

Co-authored-by: Kartik Singhal <[email protected]>

* Updating pre-commit / running ruff/black

* Updating the docs using autodoc

* Changing PHIR test to only have bits set by 1 or 0 (not bool)

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>
Co-authored-by: Ciarán Ryan-Anderson <[email protected]>
Co-authored-by: Kartik Singhal <[email protected]>

* Bumping version number to 0.5.0.dev10

* Feat hybrid noise (#60)

* Allows noise model to generate hybrid errors (classical and quantum instructions)

* Adding internal cinterp registers for error models

* removing internally generated measurements from results

* Converts conditionals into COps

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* version bump 0.5.0.dev11

* Adding specific error messaging and enforced maximum duration to WASM calls (#62)

Preventing infinite looping of WASM calls and providing additional details to users when WASM errors occur. 

---------

Co-authored-by: Ciarán Ryan-Anderson <[email protected]>

* 64 bit signed arithmetic support (#57)

* feat: add support for negative integers to phir

* feat: add hypothesis-enabled unit tests for BinArray2

Also, clamp only for unsigned integer types

* lint: fix typos and exclude cuquantum_old

* feat: replace BinArray with BinArray2

* fix: set BinArray2's value correctly, or it can convert to ndarray

* build: bump patch version to distinguish in testing

* feat: partition data_types into signed and unsigned

also make size optional for signed integer type

* build: update to correct phir version

Co-authored-by: Ciarán Ryan-Anderson <[email protected]>

---------

Co-authored-by: Ciarán Ryan-Anderson <[email protected]>

* cuStateVec bugfixes and slight refactor (#64)

* Updated argument names for new API (cuStateVec 1.6.0)

* Bumped up version requirements

* Fixing a bug in CuStateVec in the implementation of the RYY gate

* Refactor of state.vector so that it returns a numpy array for easier testing and integration

* Adding some of the changes from Dominic's PR #58

* Added more bindings requested by @dlucchetti

* Bumping version number to 0.6.0.dev3 (#65)

* Adding a numpy-based basic statevector simulator for more exhaustive testing (#55)

* Adding a basic numpy statevector simulator

* Adding more exhaustive tests against BasicSV

* Adding a reset method

* [feature] Adding support for QuEST and Qulacs statevector simulators (#68)

* Added Qulacs simulator

* Added wrapper for QuEST

* Updated readme with simulator installation instructions

* Adding tests for HybridEngine on statevector simulators

* Supporting new statevector sims on HybridEngine

* Fixed a bug in CuStateVec relating to HybridEngine

* [feature] Adding support for MPS simulation (#63)

* Adding an MPS simulator

* Adding tests for MPS

* Using non-destructive measurements

* Added a reset method to MPS

* Including MPS as a qsim backend for HybridEngine

* Adding more bindings for initialisation that are needing for the tests

* Allowing users to provide parameters for the MPS simulation from HybridEngine

* Add HybridEngine tests for MPS

* Bumping version number to 0.6.0.dev4

* [Bugfixes] Solving some issues for qemulator MPS release (#73)

* Added angles vs angle parameter handling to hybrid_engine_old

* The reset methods in simulators must return self.

* If import fails, create dummy NoneType simulator

* Updated bindings of CoinToss

* Removed filter of simulation parameters, since it is not necessary

* Using a more sensible import approach in the test file

* Debug message converted to info message.

* Bump to 0.6.0.dev5

* Feat qeclib steane (#75)

* Initial dump of qeclib code + SLR updates

* Add teleportation/application of the Tdg gate to Steane code class.

* fix register naming bug (#70)

* Add qasm regression tests

* Refactor qasm generation

* Removed some test print statements

* Use `default_rus_limit` in `Steane` class (#74)

* use default_rus_limit

* Revert "use default_rus_limit"

This reverts commit c186dd9.

* set rus_limit to None by default

* Allow passing ancillas to `Steane` class (#72)

* allow ancilla recycling in Steane class

* raise error if ancilla register is too small

* add only new variables

* Revert "add only new variables"

This reverts commit a0d8e4f.

* Fixing regression qasm issues

* lint fixes

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>
Co-authored-by: Michael A. Perlin <[email protected]>

* Typo fixed in the implementation of `p` and `tdg` in `steane_class.py` (#76)

* Typo fixed

* Another typo in definition of tdg

* Fixing regression issue due to typo fix + fixing inconsistent creg use

---------

Co-authored-by: Ciaran Ryan-Anderson <[email protected]>

* fix Steane.prep_tdg_plus_state (#78)

* Fixing measurement noise causing only 0 measurement

* fix RUS reject bits and add QEC flag bits

* Automatic lint fixes

* Revert "Automatic lint fixes"

This reverts commit 8f0e928.

* More Clifford gates supported in state-vector and MPS simulators (#87)

* Added informative error if gate not supported by simulator

* Added more Clifford gates

* Test for new gates

* bump v0.6.0.dev5 to v0.6.0.dev6 + update pre-commit + fix regression version issue (#88)

* typo fix

* remove changes to pauli_states.py

* remove changes to qec_3parallel.py

* remove artifact

* consolidate measurements

* make reject optional

* set default value of log: Bit | None

* self.extend --> block.extend

* qasm file fix for regression tests

* simplify redundant code

* remove redundant error message

* recognize X/Y/Z states as +X/+Y/+Z

---------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants