Skip to content

Commit eca0ce7

Browse files
authored
Fix RUS reject bits and add QEC flag bits (#82)
* 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 <ciaran.ryan-anderson@quantinuum.com> * 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 <ciaran.ryan-anderson@quantinuum.com> * 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 <ciaran.ryan-anderson@quantinuum.com> * 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 <130700862+qartik@users.noreply.github.com> * 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 <ciaranra@gmail.com> Co-authored-by: Kartik Singhal <130700862+qartik@users.noreply.github.com> * 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 <ciaran.ra@gmail.com> Co-authored-by: Ciaran Ryan-Anderson <ciaranra@gmail.com> * 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 <ciaranra@gmail.com> * 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 <ciaranra@gmail.com> * 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 <ciaranra@gmail.com> * 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 <pablo.andres-martinez@cambridgequantum.com> Co-authored-by: Kartik Singhal <kartik.singhal@quantinuum.com> * 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 <kartik.singhal@quantinuum.com> * Apply suggestions from code review Co-authored-by: Kartik Singhal <kartik.singhal@quantinuum.com> * 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 <ciaran.ryan-anderson@quantinuum.com> Co-authored-by: Ciarán Ryan-Anderson <70174051+qciaran@users.noreply.github.com> Co-authored-by: Kartik Singhal <kartik.singhal@quantinuum.com> * 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 <ciaran.ryan-anderson@quantinuum.com> * 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 <70174051+qciaran@users.noreply.github.com> * 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 <70174051+qciaran@users.noreply.github.com> --------- Co-authored-by: Ciarán Ryan-Anderson <70174051+qciaran@users.noreply.github.com> * 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 <ciaranra@gmail.com> Co-authored-by: Michael A. Perlin <mika.perlin@gmail.com> * 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 <ciaran.ryan-anderson@quantinuum.com> * 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 ---------
1 parent a0989e7 commit eca0ce7

20 files changed

+86
-245
lines changed

python/pecos/qeclib/steane/preps/pauli_states.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def __init__(
139139
)
140140

141141
self.extend(
142-
# Rotate to the Paulli basis of choice
142+
# Rotate to the Pauli basis of choice
143143
LogZeroRot(q, state),
144144
)
145145

@@ -155,9 +155,9 @@ def __init__(self, q: QReg, state: str):
155155
self.extend(
156156
X(q),
157157
)
158-
case "|0>" | "+Z":
158+
case "|0>" | "+Z" | "Z":
159159
pass
160-
case "|+>" | "+X":
160+
case "|+>" | "+X" | "X":
161161
self.extend(
162162
H(q),
163163
)
@@ -166,7 +166,7 @@ def __init__(self, q: QReg, state: str):
166166
H(q),
167167
Z(q),
168168
)
169-
case "|+i>" | "+Y":
169+
case "|+i>" | "+Y" | "Y":
170170
self.extend(
171171
sqrt_paulis.SXdg(q),
172172
)

0 commit comments

Comments
 (0)