Skip to content

Commit

Permalink
Merge fb5643d into 75f6f26
Browse files Browse the repository at this point in the history
  • Loading branch information
Diego Ristè committed Jan 23, 2020
2 parents 75f6f26 + fb5643d commit 7fa4858
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions QGL/ChannelLibraries.py
Original file line number Diff line number Diff line change
Expand Up @@ -707,17 +707,27 @@ def set_control(self, qubit_or_edge, transmitter, generator=None):
self.update_channelDict()

def set_bias(self, qubit, bias=None, frequency=None):
"""
Set either qubit frequency or DC bias given the other, reading the values or interpolating from qubit.bias_pairs.
qubit: qubit bias/frequency to be set
bias (option 1): set the DC bias of the associated qubit.DCsource and the qubit control generator to the corresponding frequency
frequency (option 2): set the qubit control generator (accounting for SSB) and the associated DCsource to the corresponding value
"""
if not isinstance(qubit, Channels.Qubit):
raise ValueError("Set DC bias for a qubit only")
if not qubit.bias_pairs:
raise ValueError("Bias - frequency pairs not defined")
if bool(bias) and bool(frequency):
raise ValueError("Choose either DC bias or source frequency")
if bool(bias) and bool(frequency):
raise ValueError("Choose either DC bias or qubit frequency")
bias_pairs = sorted(qubit.bias_pairs.items())
biases = [k[0] for k in bias_pairs]
frequencies = [k[1] for k in bias_pairs]
qubit.phys_chan.generator.frequency = frequency if frequency else interp1d(biases, frequencies)([bias])[0]
qubit.bias_source.level = bias if bias else interp1d(frequencies, biases)([frequency])[0]
freqs_q = [k[1]['freq_q'] for k in bias_pairs]
freqs_r = [k[1]['freq_r'] for k in bias_pairs]
qubit.phys_chan.generator.frequency = frequency if frequency else interp1d(biases, freqs_q)([bias])[0]
qubit.phys_chan.generator.frequency -= qubit.frequency
qubit.bias_source.level = bias if bias else interp1d(freqs_q, biases)([frequency])[0]
qubit.measure_chan.phys_chan.generator.frequency = interp1d(biases, freqs_r)([qubit.bias_source.level])[0]
qubit.measure_chan.phys_chan.generator.frequency -= qubit.measure_chan.autodyne_freq

def new_edge(self, source, target, cnot_impl=None):
"""
Expand Down

0 comments on commit 7fa4858

Please sign in to comment.