Measuring quantum error syndromes with Q\#

This sample demonstrates how to create a partially implemented Syndrome for detecting errors generated in noisy hardware. The sample shows how this is implemented using Q# standard libraries. Currently, it does not simulate realistic noise so the resulting unitary operator is trivial. However, the program is useful to demonstrate the concept of a syndrome.

The algorithm used is described in Surface codes: Towards practical large-scale quantum computation by Fowler et al. In particular, this example implements the circuit shown in Figure 1 c. in this paper.

The circuit uses N data qubits, where N is a number given as input to the script, plus one auxiliary qubit. The principle of the circuit is as follows. First, we prepare our data qubits in random states of a set of random bases, in order to simulate a noisy process. The circuit then propagates these errors to the auxiliary qubit using the principle of phase kickback. Phase kickback works by encoding pieces of a quantum algorithm into the global phase of an extra (auxiliary) qubit.

We start by preparing an auxiliary qubit into the superposition state by applying a H operation, to change to the X computational basis. Subsequently, we apply controlled Pauli operators to each of the data qubits in random order, using the auxiliary qubit as control. The goal is to create a global phase shift on the auxiliary qubit, that will depend on the state of the data qubits. After the circuit runs, the auxiliary qubit is measured in the X-basis, which reveals its phase information.

Prerequisites

Running the Sample

To run the sample, run python syndrome.py --qubits <N>, where <N> is replaced by the number of qubits. For more information, run python syndrome.py --help.

Manifest

  • Syndrome.qs: Q# code implementing quantum operations for this sample.
  • syndrome.py: Python script to interact with and print out results of the Q# operations for this sample for a given number of data qubits. Example usage: python syndrome.py --qubits 5.
  • Syndrome.csproj: Main Q# project for the sample.

Further resources