Skip to content

Commit

Permalink
Choose whether to include Y90, Y90m in DiAC library
Browse files Browse the repository at this point in the history
Included by default to save instructions
--DR
  • Loading branch information
CoherenceController committed Sep 19, 2016
1 parent d1baae6 commit 8f79668
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 21 deletions.
6 changes: 3 additions & 3 deletions QGL/BasicSequences/RB.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def SingleQubitRB_AC(qubit, seqs, showPlot=False):
if showPlot:
plot_pulse_files(fileNames)

def SingleQubitRB_DiAC(qubit, seqs, showPlot=False):
def SingleQubitRB_DiAC(qubit, seqs, Xonly = False, showPlot=False):
"""
Single qubit randomized benchmarking using atomic Clifford pulses.
Expand All @@ -167,15 +167,15 @@ def SingleQubitRB_DiAC(qubit, seqs, showPlot=False):
"""
seqsBis = []
for seq in seqs:
seqsBis.append([DiAC(qubit, c) for c in seq])
seqsBis.append([DiAC(qubit, c, Xonly) for c in seq])

#Add the measurement to all sequences
for seq in seqsBis:
seq.append(MEAS(qubit))

#Tack on the calibration sequences (using pi/2 pulses for consistency)
seqsBis += [[Id(qubit), MEAS(qubit)], [Id(qubit), MEAS(qubit)], [X90(qubit), X90(qubit), MEAS(qubit)], [X90(qubit), X90(qubit), MEAS(qubit)]]

fileNames = compile_to_hardware(seqsBis, 'RB_DiAC/RB_DiAC')
print(fileNames)

Expand Down
36 changes: 18 additions & 18 deletions QGL/PulsePrimitives.py
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ def AC(qubit, cliffNum):
raise ValueError('Clifford number must be between 0 and 23')


def DiAC(qubit, cliffNum):
def DiAC(qubit, cliffNum, Xonly = False):
"""
The set of 24 Diatomic Clifford single qubit pulses.
Expand Down Expand Up @@ -473,13 +473,13 @@ def DiAC(qubit, cliffNum):
return X90m(qubit)
elif cliffNum == 4:
#Y90
return Y90(qubit)
return X90(qubit) + Z90m(qubit) + X90(qubit) + Z(qubit) if Xonly else Y90(qubit)
elif cliffNum == 5:
#Y180
return Y90(qubit)+Y90(qubit)
return X90(qubit) + X90(qubit) + Z(qubit) if Xonly else Y90(qubit) + Y90(qubit)
elif cliffNum == 6:
#Y90m
return Y90m(qubit)
return X90(qubit) + Z90(qubit) + X90(qubit) + Z(qubit) if Xonly else Y90m(qubit)
elif cliffNum == 7:
#Z90
return Z90(qubit)
Expand All @@ -491,46 +491,46 @@ def DiAC(qubit, cliffNum):
return Z90m(qubit)
elif cliffNum == 10:
#X+Y 180
return X90(qubit) + X90(qubit) + Z90(qubit)
return X90(qubit) + X90(qubit) + Z90(qubit) if Xonly else Y(qubit) + Z90m(qubit)
elif cliffNum == 11:
#X-Y 180
return X90(qubit) + X90(qubit) + Z90m(qubit)
return X90(qubit) + X90(qubit) + Z90m(qubit) if Xonly else Y(qubit) + Z90(qubit)
elif cliffNum == 12:
#X+Z 180(Hadamard)
return Z(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z(qubit)
return Z(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z(qubit) if Xonly else Z(qubit) + Y90(qubit)
elif cliffNum == 13:
#X-Z 180
return Z(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z(qubit)
return Z(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z(qubit) if Xonly else Z(qubit) + Y90m(qubit)
elif cliffNum == 14:
#Y+Z 180
return Z90(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z90m(qubit)
return Z90(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z90m(qubit) if Xonly else Z90(qubit) + Y90(qubit) + Z90(qubit)
elif cliffNum == 15:
#Y-Z 180
return Z90(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z90m(qubit)
return Z90(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z90m(qubit) if Xonly else Z90(qubit) + Y90m(qubit) + Z90(qubit)
elif cliffNum == 16:
#X+Y+Z -120 (equivalent to -X-Y-Z 120)
return Z90(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z(qubit)
return Z90(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z(qubit) if Xonly else Z90(qubit) + Y90(qubit)
elif cliffNum == 17:
#X+Y+Z 120
return Z(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z90m(qubit)
return Z(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z90m(qubit) if Xonly else Z(qubit) + Y90(qubit) + Z90(qubit)
elif cliffNum == 18:
#X-Y+Z 120 (equivalent to -X+Y-Z 120)
return X90(qubit) + Z90(qubit) + X90(qubit) + Z90m(qubit)
return X90(qubit) + Z90(qubit) + X90(qubit) + Z90m(qubit) if Xonly else Y90m(qubit) + Z90(qubit)
elif cliffNum == 19:
#X-Y+Z -120
return Z90m(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z(qubit)
return Z90m(qubit) + X90(qubit) + Z90m(qubit) + X90(qubit) + Z(qubit) if Xonly else Z90m(qubit) + Y90(qubit)
elif cliffNum == 20:
#X+Y-Z -120 (equivalent to -X-Y+Z 120)
return Z(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z90m(qubit)
return Z(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z90m(qubit) if Xonly else Z(qubit) + Y90m(qubit) + Z90(qubit)
elif cliffNum == 21:
#X+Y-Z 120
return Z90(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z(qubit)
return Z90(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z(qubit) if Xonly else Z90(qubit) + Y90m(qubit)
elif cliffNum == 22:
#-X+Y+Z -120 (equivalent to X-Y-Z 120)
return X90(qubit) + Z90m(qubit) + X90(qubit) + Z90m(qubit)
return X90(qubit) + Z90m(qubit) + X90(qubit) + Z90m(qubit) if Xonly else Y90(qubit) + Z90(qubit)
elif cliffNum == 23:
#-X+Y+Z 120
return Z90m(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z(qubit)
return Z90m(qubit) + X90(qubit) + Z90(qubit) + X90(qubit) + Z(qubit) if Xonly else Z90m(qubit) + Y90m(qubit)
else:
raise ValueError('Clifford number must be between 0 and 23')

Expand Down

0 comments on commit 8f79668

Please sign in to comment.