本文整理汇总了Python中measurement.lib.pulsar.pulse.cp函数的典型用法代码示例。如果您正苦于以下问题:Python cp函数的具体用法?Python cp怎么用?Python cp使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cp函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_sweep_elements
def get_sweep_elements(self):
wait_elt = element.Element('pulse_delay', pulsar=qt.pulsar)
wait_elt.append(pulse.cp(self.T, length=1e-6))
pulse_elts = []
sweep_elts = []
for i in range(self.params['pts']):
e = element.Element('ERabi_pt-{}'.format(i), pulsar=qt.pulsar)
e.append(self.T)
e.append(
pulse.cp(self.e_pulse,
frequency = self.params_lt1['MW_pulse_mod_frqs'][i],
amplitude = self.params_lt1['MW_pulse_amps'][i],
length = self.params_lt1['MW_pulse_durations'][i]))
pulse_elts.append(e)
for i in range(self.params['pts']):
if self.params_lt1['MW_pulse_multiplicities'][i] == 0:
sweep_elts.append(pulse_elts[i])
else:
subelts = []
for j in range(self.params_lt1['MW_pulse_multiplicities'][i]):
subelts.append(pulse_elts[i])
subelts.append(wait_elt)
sweep_elts.append(subelts)
return sweep_elts
示例2: get_sweep_elements
def get_sweep_elements(self):
e = element.Element('Hadamard', pulsar=qt.pulsar,
global_time = True)
e.append(self.T)
e.append(self.shelving_pulse)
e.append(pulse.cp(self.T, length=100e-9))
# this is by using two rotations around x/y -- This works much better!
# phase of 0 makes x (rotate around +Y), -90 makes y (rotate around -X)
prep_name = e.append(pulse.cp(self.N_pi2,
phase = -90.,
amplitude = 1))
# first a pi/2 over +Y
h_pi2_name = e.append(pulse.cp(self.N_pi2,
phase = 0,
amplitude = 1))
# then a pi over +X
h_pi_name = e.append(pulse.cp(self.N_pi,
phase = 90.,
amplitude = 1))
self.element = e
self.params['tomo_time_offset'] = e.length()
return BSM.NTomo.get_sweep_elements(self)
示例3: _lt3_LDE_element
def _lt3_LDE_element(msmt, **kw): ### WE NEED THIS GUY
"""
This element contains the LDE part for LT3, i.e., spin pumping and MW pulses
for the LT3 NV and the optical pi pulses as well as all the markers for HH and PLU.
"""
# variable parameters
name = kw.pop('name', 'LDE_LT3')
pi2_pulse_phase = kw.pop('pi2_pulse_phase', 0)
if kw.pop('use_short_eom_pulse',False):
eom_pulse=pulse.cp(msmt.short_eom_aom_pulse,
aom_on=msmt.params_lt3['eom_aom_on'])
else:
eom_pulse=pulse.cp(msmt.eom_aom_pulse,
eom_pulse_amplitude = kw.pop('eom_pulse_amplitude', msmt.params_lt3['eom_pulse_amplitude']),
eom_off_amplitude = kw.pop('eom_off_amplitude', msmt.params_lt3['eom_off_amplitude']),
aom_on=msmt.params_lt3['eom_aom_on'])
###
e = element.Element(name,
pulsar = qt.pulsar,
global_time = True)
e.add(pulse.cp(msmt.empty_pulse,
amplitude = 0,
length = msmt.params['LDE_element_length']))
#1 SP
e.add(pulse.cp(msmt.empty_pulse,
amplitude = 0,
length = msmt.params_lt3['initial_delay']),
name = 'initial delay')
for i in range(msmt.params['opt_pi_pulses']):
name = 'opt pi {}'.format(i+1)
refpulse = 'opt pi {}'.format(i) if i > 0 else 'initial delay'
start = msmt.params_lt3['opt_pulse_separation'] if i > 0 else msmt.params['wait_after_sp']
refpoint = 'start' if i > 0 else 'end'
e.add(eom_pulse,
name = name,
start = start,
refpulse = refpulse,
refpoint = refpoint,)
e.add(msmt.eom_trigger,
name = name+'_trigger',
start = start,
refpulse = refpulse,
refpoint = refpoint,)
#5 HHsync
syncpulse_name = e.add(msmt.TH_sync, refpulse = 'initial delay', refpoint = 'start', refpoint_new = 'end')
############
if e.length() != msmt.params['LDE_element_length']:
raise Exception('LDE element length'+e.name+' is not as specified - granylarity issue?')
return e
return e
示例4: get_sweep_elements
def get_sweep_elements(self):
elts = []
for i in range(self.params['pts']):
e = element.Element('CNOTPHaseCheck_pt-{}'.format(i), pulsar=qt.pulsar, global_time = True)
e.append(self.T)
e.append(self.shelving_pulse)
e.append(self.T)
e.append(self.N_pi2)
e.append(pulse.cp(self.T, length=200e-9))
for m in np.arange(self.params['multiplicity']/2):
if m == 0:
e.append(self.pi2pi_m1)
e.append(self.TIQ)
e.append(self.pi2pi_m1)
else:
e.append(self.TIQ)
e.append(self.pi2pi_m1)
e.append(self.TIQ)
e.append(self.pi2pi_m1)
e.append(pulse.cp(self.T, length=200e-9))
e.append(pulse.cp(self.N_pi2,
phase = self.params['analysis_phases'][i]))
elts.append(e)
return elts
示例5: sequence
def sequence(self, upload = True):
# define the pulses we'll use
sq_pulseAOM = pulse.SquarePulse(channel='AOM975', name='A square pulse on ThorLabsAOM')
sq_pulseMW = pulse.SquarePulse(channel='MW_pulsemod', name='A square pulse on MW modulation')
sq_pulsePC = pulse.SquarePulse(channel='photoncount', name='A square pulse on photon counting switch')
sq_pulseMW_Imod = pulse.SquarePulse(channel='MW_Imod', name='A square pulse on MW I modulation')
sq_pulseMW_Qmod = pulse.SquarePulse(channel='MW_Qmod', name='A square pulse on MW I modulation')
elements = []
# Create waveform that has laser, microwaves, photon counting, and 1/0 I/Q modulation on
# all the time for a long period of time (~100 us).
e = element.Element('CW_mode', pulsar=qt.pulsar)
e.add(pulse.cp(sq_pulseAOM, amplitude=1, length=100e-6), name='laser')
e.add(pulse.cp(sq_pulsePC, amplitude=1.0, length=100e-6), name='photoncountpulse')
e.add(pulse.cp(sq_pulseMW_Imod, amplitude=1.0, length=100e-6),
name='MWimodpulsecw', start=0e-9)
e.add(pulse.cp(sq_pulseMW_Qmod, amplitude=0.0, length=100e-6),
name='MWqmodpulsecw', start=0e-9)
elements.append(e)
# create a sequence from the pulses -- only one in this case
seq = pulsar.Sequence('CW ESR Sequence')
for e in elements:
seq.append(name=e.name, wfname=e.name, trigger_wait=False, repetitions=-1)
if upload:
qt.pulsar.upload(*elements)
time.sleep(2.0)
# program the AWG
qt.pulsar.program_sequence(seq)
示例6: get_sweep_elements
def get_sweep_elements(self):
"""
to lock phases it's important to set the tomo_time_offset parameter.
"""
z_element = element.Element('Z Tomo pulse', pulsar=qt.pulsar)
z_element.append(pulse.cp(self.TN, length=1e-6))
x_element = element.Element('X Tomo pulse', pulsar=qt.pulsar)
xn = x_element.append(pulse.cp(self.N_pi2,
phase = phaseref(self.N_pi2.frequency,
self.params['tomo_time_offset']) + \
self.params['tomo_pulse_phases'][1]))
y_element = element.Element('Y Tomo pulse', pulsar=qt.pulsar)
yn = y_element.append(pulse.cp(self.N_pi2,
phase = phaseref(self.N_pi2.frequency,
self.params['tomo_time_offset']) + \
self.params['tomo_pulse_phases'][2]))
sweep_elements = []
for n, tomo_elt in zip(self.params['tomo_bases'],
[z_element, x_element, y_element]):
if type(self.element) == list:
elts = [e for e in self.element]
elts.append(tomo_elt)
sweep_elements.append(elts)
else:
elts = [self.element, tomo_elt]
sweep_elements.append(elts)
return sweep_elements
示例7: _lt2_final_id
def _lt2_final_id(msmt, name, time_offset, **kw):
wait_length = msmt.params_lt2['CORPSE_pi2_wait_length'] + msmt.CORPSE_pi.length
final_id_elt = element.Element('second_id_elt-{}'.format(name), pulsar= qt.pulsar,
global_time = True, time_offset = time_offset)
final_id_elt.append(pulse.cp(msmt.T, length = wait_length))
final_id_elt.append(pulse.cp(msmt.T, length = 100e-9 ))
return final_id_elt
示例8: generate_sequence
def generate_sequence(self, upload=True):
# MBI element
mbi_elt = self._MBI_element()
# electron manipulation pulses
T = pulse.SquarePulse(channel='MW_pulsemod',
length = 10e-9, amplitude = 0)
X = pulselib.MW_IQmod_pulse('MW pulse',
I_channel = 'MW_Imod',
Q_channel = 'MW_Qmod',
PM_channel = 'MW_pulsemod',
PM_risetime = self.params['MW_pulse_mod_risetime'])
adwin_sync = pulse.SquarePulse(channel='adwin_sync',
length = self.params['AWG_to_adwin_ttl_trigger_duration'],
amplitude = 2)
# electron manipulation elements
elts = []
for i in range(self.params['pts']):
e = element.Element('ERamsey_pt-%d' % i, pulsar=qt.pulsar,
global_time = True)
e.append(T)
e.append(
pulse.cp(X,
frequency = self.params['MW_pulse_mod_frqs'][i],
amplitude = self.params['MW_pulse_amps'][i],
length = self.params['MW_pulse_durations'][i],
phase = self.params['MW_pulse_1_phases'][i]))
e.append(
pulse.cp(T, length=self.params['MW_pulse_delays'][i]))
e.append(
pulse.cp(X,
frequency = self.params['MW_pulse_mod_frqs'][i],
amplitude = self.params['MW_pulse_amps'][i],
length = self.params['MW_pulse_durations'][i],
phase = self.params['MW_pulse_2_phases'][i]))
e.append(adwin_sync)
elts.append(e)
# sequence
seq = pulsar.Sequence('MBI Electron Rabi sequence')
for i,e in enumerate(elts):
seq.append(name = 'MBI-%d' % i, wfname = mbi_elt.name,
trigger_wait = True, goto_target = 'MBI-%d' % i,
jump_target = e.name)
seq.append(name = e.name, wfname = e.name,
trigger_wait = True)
# program AWG
if upload:
qt.pulsar.upload(mbi_elt, *elts)
qt.pulsar.program_sequence(seq)
示例9: generate_sequence
def generate_sequence(self, upload=True):
# load all the other pulsar resources
self._pulse_defs()
self.FT_pulse = pulse.SquarePulse(channel='Velocity1AOM',
length = self.params['sp_duration'], amplitude = self.params['FT_pulse_amp'])
self.yel_pulse = pulse.SquarePulse(channel='YellowAOM',
length = self.params['sp_duration']*3/4., amplitude = self.params['yellow_pulse_amp'])
# make the list of elements required for uploading
e = element.Element('N_FT_Polarisation', pulsar=qt.pulsar, global_time = True)
e.append(pulse.cp(self.T, length=200e-9))
last = e.append(self.yel_pulse)
e.add(self.FT_pulse, refpulse=last, refpoint='start')
e.append(pulse.cp(self.T, length=200e-9))
e.append(pulse.cp(self.CORPSE_pi)) # ,
# frequency = self.params['CORPSE_pi_mod_frq'],
# amplitude = 0.))
# create the sequence
seq = pulsar.Sequence('N_FT_Polarisation_Check_ESR_sequence')
ro_elts = []
for i,f in enumerate(self.params['RO_mod_frqs']):
# 1: MBI
seq.append(name = 'MBI-{}'.format(i),
wfname = self.mbi_elt.name,
trigger_wait = True,
goto_target = 'MBI-{}'.format(i),
jump_target = 'ft_mw'+str(i))
#2 then repeat (SP+MW pi)-element for the current number of times
seq.append(name = 'ft_mw'+str(i), wfname=e.name,
repetitions = self.params['FT_element_repetitions'],
trigger_wait = True)
#3 ESR type readout
ro_e = element.Element('N_RO-{}'.format(i), pulsar=qt.pulsar, global_time = True)
ro_e.append(self.T)
ro_e.append(pulse.cp(self.slow_pi,
frequency = f))
seq.append(name='N_ro'+str(i), wfname=ro_e.name,
trigger_wait=False)
ro_elts.append(ro_e)
seq.append(name = 'sync-{}'.format(i),
wfname = self.sync_elt.name)
# program AWG
if upload:
qt.pulsar.upload(self.mbi_elt, e ,self.sync_elt, *ro_elts)
qt.pulsar.program_sequence(seq)
示例10: generate_sequence
def generate_sequence(self, upload=True):
# electron manipulation pulses
T = pulse.SquarePulse(channel='MW_pulsemod',
length = 100e-9, amplitude = 0)
TIQ = pulse.SquarePulse(channel='MW_Imod',
length = 10e-9, amplitude = 0)
CORPSE_pi = pulselib.IQ_CORPSE_pulse('CORPSE pi-pulse',
I_channel = 'MW_Imod',
Q_channel = 'MW_Qmod',
PM_channel = 'MW_pulsemod',
PM_risetime = self.params['MW_pulse_mod_risetime'],
frequency = self.params['CORPSE_mod_frq'],
rabi_frequency = self.params['CORPSE_rabi_frequency'],
amplitude = self.params['CORPSE_amp'],
eff_rotation_angle = 180)
CORPSE_pi2 = pulselib.IQ_CORPSE_pulse('CORPSE pi-pulse',
I_channel = 'MW_Imod',
Q_channel = 'MW_Qmod',
PM_channel = 'MW_pulsemod',
PM_risetime = self.params['MW_pulse_mod_risetime'],
frequency = self.params['CORPSE_mod_frq'],
rabi_frequency = self.params['CORPSE_rabi_frequency'],
amplitude = self.params['CORPSE_amp'],
eff_rotation_angle = 90)
wait_1us = element.Element('1us_delay', pulsar=qt.pulsar)
wait_1us.append(pulse.cp(T, length=1e-6))
sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar)
adwin_sync = pulse.SquarePulse(channel='adwin_sync',
length = 10e-6, amplitude = 2)
sync_elt.append(adwin_sync)
elts = []
seq = pulsar.Sequence('CORPSE test')
for i in range(self.params['pts']):
e = element.Element('CORPSE_Pi2_Pi-{}'.format(i),
pulsar = qt.pulsar,
global_time=True)
e.append(T)
e.append(pulse.cp(CORPSE_pi2))
e.append(pulse.cp(TIQ, length=self.params['delays'][i]))
e.append(pulse.cp(CORPSE_pi))
e.append(T)
elts.append(e)
seq.append(name='CORPSE_Pi2_Pi-{}'.format(i),
wfname = e.name,
trigger_wait=True)
seq.append(name='sync-{}'.format(i),
wfname = sync_elt.name)
if upload:
qt.pulsar.upload(sync_elt, wait_1us, *elts)
qt.pulsar.program_sequence(seq)
示例11: generate_sequence
def generate_sequence(self, upload=True):
# MBI element
mbi_elt = self._MBI_element()
# electron manipulation pulses
self.T = pulse.SquarePulse(channel='MW_pulsemod',
length = 100e-9, amplitude = 0)
self.g_pulse = self.PulseClass('gaussian IQ pulse',
I_channel = 'MW_Imod',
Q_channel = 'MW_Qmod',
PM_channel = 'MW_pulsemod',
PM_risetime = self.params['MW_pulse_mod_risetime'],
frequency = self.params['pulse_mod_frqs'][0],
amplitude = self.params['pulse_amps'][0],
length = self.params['pulse_durations'][0])
elts = []
for i in range(self.params['pts']):
e = element.Element('ERabi_pt-{}'.format(i), pulsar=qt.pulsar)
e.append(self.T)
for j in range(self.params['MW_pulse_multiplicities'][i]):
e.append(
pulse.cp(self.g_pulse,
frequency = self.params['pulse_mod_frqs'][i],
amplitude = self.params['pulse_amps'][i],
length = self.params['pulse_durations'][i]))
e.append(
pulse.cp(self.T, length=self.params['MW_pulse_delays'][i]))
elts.append(e)
sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar)
adwin_sync = pulse.SquarePulse(channel='adwin_sync',
length = 10e-6, amplitude = 2)
sync_elt.append(adwin_sync)
seq = pulsar.Sequence('CNOT sequence')
for i in range(self.params['pts']):
seq.append(name = 'MBI-%d' % i,
wfname = mbi_elt.name,
trigger_wait = True,
goto_target = 'MBI-%d' % i,
jump_target = 'pulse-{}'.format(i))
seq.append(name = 'pulse-{}'.format(i),
wfname = elts[i].name,
trigger_wait=True)
seq.append(name = 'sync-{}'.format(i),
wfname = sync_elt.name)
# program AWG
if upload:
qt.pulsar.upload(mbi_elt, sync_elt, *elts)
qt.pulsar.program_sequence(seq)
示例12: generate_sequence
def generate_sequence(self, upload=True):
# MBI element
mbi_elt = self._MBI_element()
# electron manipulation pulses
T = pulse.SquarePulse(channel='MW_pulsemod',
length = 10e-9, amplitude = 0)
CORPSE_pi = pulselib.IQ_CORPSE_pi_pulse('CORPSE pi-pulse',
I_channel = 'MW_Imod',
Q_channel = 'MW_Qmod',
PM_channel = 'MW_pulsemod',
PM_risetime = self.params['MW_pulse_mod_risetime'],
frequency = self.params['CORPSE_pi_mod_frq'],
amplitude = self.params['CORPSE_pi_amp'],
length_60 = self.params['CORPSE_pi_60_duration'],
length_m300 = self.params['CORPSE_pi_m300_duration'],
length_420 = self.params['CORPSE_pi_420_duration'])
sync_elt = element.Element('adwin_sync', pulsar=qt.pulsar)
adwin_sync = pulse.SquarePulse(channel='adwin_sync',
length = 10e-6, amplitude = 2)
sync_elt.append(adwin_sync)
wait_1us = element.Element('1us_delay', pulsar=qt.pulsar)
wait_1us.append(pulse.cp(T, length=1e-6))
elts = []
for i in range(self.params['pts']):
e = element.Element('CORPSE-{}'.format(i), pulsar=qt.pulsar)
e.append(T,
pulse.cp(CORPSE_pi,
amplitude=self.params['CORPSE_pi_sweep_amps'][i]))
elts.append(e)
# sequence
seq = pulsar.Sequence('CORPSE pi calibration')
for i,e in enumerate(elts):
seq.append(name = 'MBI-%d' % i, wfname = mbi_elt.name,
trigger_wait = True, goto_target = 'MBI-%d' % i,
jump_target = e.name+'-0')
for j in range(self.params['multiplicity']):
seq.append(name = e.name+'-{}'.format(j),
wfname = e.name,
trigger_wait = (j==0))
seq.append(name = 'wait-{}-{}'.format(i,j),
wfname = wait_1us.name,
repetitions = self.params['delay_reps'])
seq.append(name = 'sync-{}'.format(i),
wfname = sync_elt.name)
# program AWG
if upload:
qt.pulsar.upload(mbi_elt, sync_elt, wait_1us, *elts)
qt.pulsar.program_sequence(seq)
示例13: calibrate_CORPSE_pi_phase_shift_or_e_time
def calibrate_CORPSE_pi_phase_shift_or_e_time(self):
"""
Do a Hahn echo sequence with the CORPSE pi pulse, and sweep it's zero
phase with respect the rotating frame at that time.
"""
sweep_elements = []
self.flattened_elements = []
self.seq = pulsar.Sequence('{}_{}-Sequence'.format(self.mprefix,
self.name))
first_pi2_elt = element.Element('first pi2', pulsar=qt.pulsar,
global_time = True)
first_pi2_elt.append(pulse.cp(self.T, length=1e-6))
first_pi2_name = first_pi2_elt.append(self.fast_pi2)
first_pi2_elt.append(pulse.cp(self.TIQ, length=100e-9))
self.flattened_elements.append(first_pi2_elt)
# the start time of the second pi2, and the evolution time depends on the time when the
# pulse stops in the first pi2 element:
t_pi2 = first_pi2_elt.length() - \
first_pi2_elt.effective_pulse_end_time(first_pi2_name, 'MW_Imod')
# calculate the evolution time from the interpulse delay
etimes = self.params_lt1['interpulse_delays'] - t_pi2 - self.fast_pi2.effective_length()/2.
pi_elts = []
second_pi2_elts = []
for i in range(self.params['pts']):
e = self.UNROT_element('pi-{}'.format(i),
None, etimes[i], first_pi2_elt.length(),
CORPSE_pi_phase_shift = \
self.params_lt1['CORPSE_pi_phase_shifts'][i])
self.flattened_elements.append(e)
pi_elts.append(e)
# make the element
second_pi2_elt = element.Element('second pi2-{}'.format(i), pulsar=qt.pulsar,
global_time = True,
time_offset = e.length()+first_pi2_elt.length())
second_pi2_elt.append(pulse.cp(self.TIQ, length=t_pi2))
second_pi2_elt.append(self.fast_pi2)
self.flattened_elements.append(second_pi2_elt)
second_pi2_elts.append(second_pi2_elt)
self.flattened_elements.append(self.N_RO_CNOT_elt)
for i in range(self.params['pts']):
sweep_elements.append([first_pi2_elt,
pi_elts[i],second_pi2_elts[i]])
self.seq = self._add_MBI_and_sweep_elements_to_sequence(
sweep_elements, self.N_RO_CNOT_elt, self.adwin_lt1_trigger_element)
示例14: _lt1_N_RO_elt
def _lt1_N_RO_elt(msmt):
"""
This is an element with spin pumping to ms=0 and a (pi-2pi) CNOT pulse for the nitrogen readout.
"""
N_RO_elt = element.Element('N-RO', pulsar=msmt.pulsar_lt1)
N_RO_elt.append(pulse.cp(msmt.T,
length=1000e-9))
N_RO_elt.append(pulse.cp(msmt.SP_pulse,
length = msmt.params_lt1['N_RO_SP_duration']))
N_RO_elt.append(pulse.cp(msmt.T,
length=2000e-9))
N_RO_elt.append(msmt.pi2pi_m1)
return N_RO_elt
示例15: generate_sequence
def generate_sequence(self, upload=True):
# define the necessary pulses
X = pulselib.IQ_CORPSE_pi2_pulse('CORPSE pi2-pulse',
I_channel='MW_Imod',
Q_channel='MW_Qmod',
PM_channel='MW_pulsemod',
PM_risetime = self.params['MW_pulse_mod_risetime'],
frequency = self.params['CORPSE_pi2_mod_frq'],
amplitude = self.params['CORPSE_pi2_amp'],
length_24p3 = self.params['CORPSE_pi2_24p3_duration'],
length_m318p6 = self.params['CORPSE_pi2_m318p6_duration'],
length_384p3 = self.params['CORPSE_pi2_384p3_duration'])
T = pulse.SquarePulse(channel='MW_Imod', name='delay',
length = 200e-9, amplitude = 0.)
# make the elements - one for each ssb frequency
elements = []
for i in range(self.params['pts']):
e = element.Element('ElectronRamsey_pt-%d' % i, pulsar=qt.pulsar,
global_time = True)
e.append(T)
e.append(pulse.cp(X,
amplitude = self.params['CORPSE_pi2_amps'][i],
phase = self.params['CORPSE_pi2_phases1'][i]))
e.append(pulse.cp(T,
length = self.params['evolution_times'][i]))
e.append(pulse.cp(X,
amplitude = self.params['CORPSE_pi2_amps'][i],
phase = self.params['CORPSE_pi2_phases2'][i]))
elements.append(e)
# create a sequence from the pulses
seq = pulsar.Sequence('ElectronRamsey sequence')
for e in elements:
seq.append(name=e.name, wfname=e.name, trigger_wait=True)
# upload the waveforms to the AWG
if upload:
qt.pulsar.upload(*elements)
# program the AWG
qt.pulsar.program_sequence(seq)