Multilevel discriminator
A basic requirement for Quantum computation is the ability to tell the state of the qubit. The state of the qubit can be determined by a measurement of the readout resonator reponse, since the response is dependant on the state of the qubit. To be able to distinguish between the qubit's state one needs to gain information about the resonator system. Here we assume that we already know how to prepare the qubit in different states and also the readout resonance frequency. Having that information we proceed to construct a state discriminator based on the Maximum likelihood estimation method. The code is in principle general and can be used for any number of states, up to physical limitations.
#
ConfigThe configuration defines two elements rr1a
the readout resonator and qb1a
the associated qubit/qudit.
The OPX is connected to a mixer via two analog output channels of the OPX,
numbered 1 and 2. We also specify the LO frequency received by the mixer using the lo_frequency
field of the
mixInputs
dictionary, and a mixer correction matrix using the mixer
field.
The qb1a
qubit element defines 3 operations, one for each of the multilevel qubit states.
Each operation prepares the corresponding qudit state.
These operations are set by the user and require knowledge about how to manipulate the qubit.
The rr1a
readout resonator element defines 4 operations, the readout_pulse
to measure the pulse
reflected from the readout resonator.
The other 3 operations are auxiliary and are used to simulate the response using the loopback interface.
We also define both I and Q components used to measure the reflected microwave signal.
Note that the time_of_flight
and smearing
parameters must be defined to perform a measurement.
#
ProgramThe program is divided into two phases: the training and the testing. In the training phase we try to find the response of the resonator in each of the qubit's states, and create a discriminator object to be able to distinguish between the states. In the testing phase we check how well discriminator performs.
There are two nested loops, the outer one loops over the states and the inner one repeats the same measurment multiple times.
Inside the nested loops of training_program
each cycle consists of a play
command that prepares the qubit in the desired state
and a measure
command that measure the readout response, and demodulates the signal 4 times, twice for each OPX input,
corresponding to the I and Q components.
The training_program
results are processed by the train
function of the StateDiscriminator
class.
There we downconvert the reflected signal, extract the waveform and average it.
Using that we update the integration weights to be used in future measurments, according to the maximum likelihood principle.
#
Post ProcessingAfter we have trained the discriminator weights, we measure the state of the qubit using the test_program
.
Again we loop over the states and repeat each measurement multiple times and save the results.
The results from discriminator.measure_state
are already inside an array of integers (0-2 for 3 states)
that represent the measured state. To check how well the discriminator does we count how many of the measured states
are the same as the prepared states. Finally, we represent the data in a confusion matrix.