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

XP-Formalism #257

Open
dsvandet opened this issue Oct 6, 2022 · 2 comments
Open

XP-Formalism #257

dsvandet opened this issue Oct 6, 2022 · 2 comments
Assignees
Labels
enhancement New feature or request QAMP

Comments

@dsvandet
Copy link
Collaborator

dsvandet commented Oct 6, 2022

What is the expected enhancement?

Implement the XP-Formalism as detailed in the following paper by Webster, Brown and Barlett Qauntum 6, 815 (2022)

@dsvandet dsvandet added enhancement New feature or request QAMP labels Oct 6, 2022
@dsvandet
Copy link
Collaborator Author

Getting started:

We will have to create a new set of classes for the XP operators. Currently we have the BasePauli class and its subclasses Paul and PauliList. These classes are located in:

qiskit_qec
   - operators
       - base_pauli.py
       - pauli.py
       - pauli_list.py

Here Pauli and PauliList as classes based on the BasePauli class.

As a start we need to create the following class BaseXPPauli, XPPauli and XPPauliList.

The BasePauli classes use a fixed representation for the Paulis called -iZX. That means Paulis are represented in the form $(-i)^p Z^m_1X^n_1 ... Z^m_kX^n_k$ where $p$ is an integer (called the phase exponent) in $0,1,2,3$ and the $m_i, n_i$ are integers in $0,1$. The Symplectic matrix is stored as a single matrix with the X part first followed by the Z part. We should continued this format for the XP formats. That is the generalized symplectic matrix should be stored as a single matrix that contains both the X and P (called Z) parts. Note that the phase vector is stored separately (for BasePauli should be for the XP operators).

We wish to keep things simple to the base storage should be a numpy array with integer coefficients and then the modulo calculations can be done on top of that inside the class (and hidden from the user).

The BasePauli and associated classes has a pauli_rep set if methods to display the Paulis in particular formats. We should create a xp_pauli_rep set of methods to do the same for the XP operators. In the beginning the only output format should be something simple. We can update this later. The 'pauli_rep' methods are stored in the util directory,

Once we have the BaseXPPauli class created with dummy methods we can then split up the task of filling in the different bit and pieces.

Does anyone what to start by creating the skeleton BaseXpPauli class? I can do this if that helps but just let me know.

I have create the first issue with is to create the skeleton BaseXPPauli class and xp_pauli_rep.py

@dhruvbhq
Copy link
Collaborator

I'd like to have a go at creating the skeleton BaseXPPauli class (issue #258).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request QAMP
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

4 participants