def phase_calibration(name, debug=False, upload_only=False): """ Calibrate the interferometer parameters """ # adwin = qt.get_instruments()['adwin'] # PhaseAOM = qt.get_instruments()['PhaseAOM'] # PhaseAOM.set_power(0.08e-9) # adwin.start_fibre_stretcher_setpoint(delay=2) # delay in 1/10 ms # qt.msleep(10) # wait and get count ratios of APD detectors # adwin.stop_fibre_stretcher_setpoint() m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) pts = 1 m.params['reps_per_ROsequence'] = 1 sweep_sce_expm.turn_all_sequence_elements_off(m) ### which parts of the sequence do you want to incorporate. m.params[ 'is_two_setup_experiment'] = 0 ## set to 1 in case you want to do optical pi pulses on lt4! m.params['do_phase_stabilisation'] = 0 m.params['only_meas_phase'] = 1 m.params['modulate_stretcher_during_phase_msmt'] = 1 m.params['stretcher_V_max'] = 1.0 * m.params['stretcher_V_2pi'] m.params[ 'sample_points'] = 30 # How many points to sample the phase at during the expm part m.params[ 'count_int_time_meas'] = 1000 # How long to integrate counts for in microseconds for phase meas sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
def test_pulses(name, debug=True, upload_only=True, local=False): """ Generically chuck in some pulses, for e.g. measuring optical path length difference between two setups. """ m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) sweep_sce_expm.turn_all_sequence_elements_off(m) ### general params pts = 1 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 10000 m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'aom_amplitude' m.params['general_sweep_pts'] = [m.params['aom_amplitude']] m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] ### which parts of the sequence do you want to incorporate. ### --> for this measurement: none. m.joint_params['LDE_attempts'] = 250 m.joint_params['opt_pi_pulses'] = 1 m.params['MW_during_LDE'] = 0 m.params['PLU_during_LDE'] = 0 if local: m.params[ 'is_two_setup_experiment'] = 0 ## set to 1 in case you want to do optical pi pulses on lt4! else: m.params[ 'is_two_setup_experiment'] = 1 ## set to 1 in case you want to do optical pi pulses on lt4! sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
def phase_stability(name, debug=False, upload_only=False): """ Just runs a phase stability meausrement """ # adwin = qt.get_instruments()['adwin'] # PhaseAOM = qt.get_instruments()['PhaseAOM'] # PhaseAOM.set_power(0.08e-9) # adwin.start_fibre_stretcher_setpoint(delay=2) # delay in 1/10 ms # qt.msleep(10) # wait and get count ratios of APD detectors # adwin.stop_fibre_stretcher_setpoint() m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) pts = 1 m.params['reps_per_ROsequence'] = 5 sweep_sce_expm.turn_all_sequence_elements_off(m) ### which parts of the sequence do you want to incorporate. m.params[ 'is_two_setup_experiment'] = 0 ## set to 1 in case you want to do optical pi pulses on lt4! m.params['do_phase_stabilisation'] = 1 m.params['only_meas_phase'] = 1 sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
def do_rejection(name, debug=False, upload_only=False): """ does some adwin live filtering on the pulse. we also employ a slightly longer pulse here. we only store the histogram on both sides to save some storage capacity """ m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) sweep_sce_expm.turn_all_sequence_elements_off(m) m.params['eom_pulse_duration'] = 5e-9 m.joint_params['LDE_attempts'] = 1000 ### general params pts = 1 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 30000 m.params['AWG_SP_power'] = 0. m.params['do_general_sweep'] = False m.params['MW_during_LDE'] = 0 m.params['Yellow_AWG_power'] = 0e-9 m.joint_params['opt_pi_pulses'] = 1 m.params['PLU_during_LDE'] = 1 m.params[ 'is_two_setup_experiment'] = 1 ## set to 1 in case you want to do optical pi pulses on lt4! if qt.current_setup == 'lt4': m.params['pulse_start_bin'] = m.params['pulse_start_bin'] m.params['pulse_stop_bin'] = m.params[ 'pulse_stop_bin'] + 2 * m.params['eom_pulse_duration'] sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=True)
def EntangleOnDemand(name, debug=False, upload_only=False, include_CR=False): """ Run a msmt at a fixed theta, can measure in different bases """ if include_CR: m = EntangleOnDemandExp(name) else: m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) sweep_sce_expm.turn_all_sequence_elements_off(m) m.params['do_phase_stabilisation'] = 1 m.params['do_dynamical_decoupling'] = 1 m.params['reps_per_ROsequence'] = 2000 m.params['measurement_time'] = 20 * 60 # Eight minutes m.params['MW_during_LDE'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['is_two_setup_experiment'] = 1 m.params['PLU_during_LDE'] = 1 if include_CR: m.params['reps_per_ROsequence'] = 250 m.params['sin2_theta'] = 0.15 m.params['do_calc_theta'] = 1 if m.params['sin2_theta'] > 0.5: raise Exception('What are you doing? sin2 theta is too big!!!') LDE_attempt_dict = { '0.1': 24.4e3, '0.15': 19.794e3, '0.2': 16137, '0.25': 13443, '0.4': 11e3, } m.joint_params[ 'LDE_attempts'] = 14e3 + 1.818e3 ### calculated from our simulations #### if qt.current_setup == 'lt3': hist_only = True else: hist_only = False m.params['do_general_sweep'] = 1 m.params['general_sweep_name'] = 'tomography_basis' m.params['general_sweep_pts'] = ['X', 'Y', 'Z'] m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = [1, 2, 3] #m.params['general_sweep_pts'] m.params['pts'] = len(m.params['sweep_pts']) ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=hist_only)
def TPQI(name, debug=False, upload_only=False): m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) pts = 1 m.params['reps_per_ROsequence'] = 50000 sweep_sce_expm.turn_all_sequence_elements_off(m) m.params['do_phase_stabilisation'] = 1 m.params['MIN_SYNC_BIN'] = 1e6 m.params['MAX_SYNC_BIN'] = 13e6 m.params['is_TPQI'] = 1 m.params['is_two_setup_experiment'] = 1 m.params['do_general_sweep'] = 0 m.params['MW_during_LDE'] = 0 if qt.current_setup == 'lt3': hist_only = True else: hist_only = False m.joint_params['LDE_element_length'] = 13e-6 m.joint_params['opt_pi_pulses'] = 10 m.joint_params['opt_pulse_separation'] = 1000e-9 m.joint_params['LDE_attempts'] = 400 ##################################################### # These parameters have not beeen reviewed!! # ##################################################### m.params['pulse_start_bin'] = 2625e3 - m.params['MIN_SYNC_BIN'] m.params['pulse_stop_bin'] = 2635e3 - m.params['MIN_SYNC_BIN'] m.params['tail_start_bin'] = 2635e3 - m.params['MIN_SYNC_BIN'] m.params['tail_stop_bin'] = 2700e3 - m.params['MIN_SYNC_BIN'] if qt.current_setup == 'lt3': m.params['pulse_start_bin'] = 2625e3 - m.params['MIN_SYNC_BIN'] m.params['pulse_stop_bin'] = 2635e3 - m.params['MIN_SYNC_BIN'] m.params['tail_start_bin'] = 2100e3 - m.params['MIN_SYNC_BIN'] m.params['tail_stop_bin'] = 2800e3 - m.params['MIN_SYNC_BIN'] m.params['MIN_SYNC_BIN'] = 1e3 m.params['MAX_SYNC_BIN'] = 13e3 m.params['pulse_start_bin'] = m.params['pulse_start_bin'] / 1e3 m.params['pulse_stop_bin'] = m.params['pulse_stop_bin'] / 1e3 m.params['tail_start_bin'] = m.params['tail_start_bin'] / 1e3 m.params['tail_stop_bin'] = m.params['tail_stop_bin'] / 1e3 ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=hist_only)
def MW_Position(name, debug=False, upload_only=False): """ This script runs the usual LDE element and is used to check timings. ############# # IMPORTANT # ############# For optimal results insert the following line of code in sequence.py: qt.pulsar.set_channel_opt('AOM_Newfocus','low', 0.5) THIS MEASUREMENT RUNS EXCLUSIVELY ON THE TIMEHARP! NK 2017 """ m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) # load_TH_params(m) ### general params pts = 1 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 20000 sweep_sce_expm.turn_all_sequence_elements_off(m) ### sequence specific parameters m.params['MW_during_LDE'] = 1 m.params['PLU_during_LDE'] = 0 m.joint_params['opt_pi_pulses'] = 1 m.params['is_two_setup_experiment'] = 1 m.params['do_phase_stabilisation'] = 0 m.joint_params['LDE_attempts'] = 250 m.params['first_mw_pulse_is_pi2'] = 1 # #### additional stuff from norbert for prjectivity: # m.params['check_EOM_projective_noise'] = 1 # m.params['MW_opt_puls1_separation'] = 120e-9 - 220e-9 # ### prepare sweep / necessary for the measurement that we under go. m.params['do_general_sweep'] = False #### for this measurement we want the entire timeharp trace. if qt.current_setup == 'lt4': m.params['MIN_SYNC_BIN'] = int(0e6) m.params['MAX_SYNC_BIN'] = int(6e6) elif qt.current_setup == 'lt3': m.params['MIN_SYNC_BIN'] = int(0e3) m.params['MAX_SYNC_BIN'] = int(6e3) ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
def Do_BK_XX(name, debug=False, upload_only=False): """ Performs the Barrett & Kok protocol. WATCH OUT FOR THE PLU SCRIPT YOU ARE USING! """ if qt.current_setup == 'lt3': hist_only = True else: hist_only = False m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) ### general params m.params['reps_per_ROsequence'] = 200 pts = 1 m.joint_params['LDE_element_length'] = 9e-6 sweep_sce_expm.turn_all_sequence_elements_off(m) ### which parts of the sequence do you want to incorporate. m.params['MW_pi_during_LDE'] = 1 ## turn pi pulse on or off for spcorrs m.params['first_mw_pulse_is_pi2'] = 1 m.params['LDE_final_mw_phase'] = m.params['X_phase'] m.params['do_general_sweep'] = False m.params['is_two_setup_experiment'] = 1 m.params['PLU_during_LDE'] = 1 ### only one setup is allowed to sweep the phase. if qt.current_setup == 'lt3': hist_only = True else: hist_only = False m.params['MIN_SYNC_BIN'] = int(1.75e6) #5 us m.params['MAX_SYNC_BIN'] = int(8.5e6) #15 us # XXX was 15us m.params['MIN_HIST_SYNC_BIN'] = int(1.65e6) #XXXX was 5438*1e3 m.params['MAX_HIST_SYNC_BIN'] = int(8.5e6) m.joint_params['do_final_mw_LDE'] = 1 m.joint_params['opt_pi_pulses'] = 2 m.params['LDE_decouple_time'] = 2 * m.params['LDE_decouple_time'] m.params['opt_pulse_separation'] = m.params['LDE_decouple_time'] + 200e-9 m.joint_params['LDE_attempts'] = 250 ### upload sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=hist_only)
def EntangleSweepTheta(name, debug=False, upload_only=False, tomography_basis='Y'): """ Sweeps the superposition angle of the states """ m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) sweep_sce_expm.turn_all_sequence_elements_off(m) pts = 6 m.params['do_phase_stabilisation'] = 1 m.params['reps_per_ROsequence'] = 400 m.params['MW_during_LDE'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['is_two_setup_experiment'] = 1 m.params['PLU_during_LDE'] = 1 m.joint_params['LDE_attempts'] = 250 m.params['measurement_time'] = 20 * 60 # Eight minutes if qt.current_setup == 'lt3': hist_only = True else: hist_only = False m.params['tomography_basis'] = tomography_basis m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'sin2_theta' m.params['general_sweep_pts'] = np.linspace(0.05, 0.3, pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] m.params['pts'] = len(m.params['sweep_pts']) m.params['do_phase_stabilisation'] = 1 m.params['do_calc_theta'] = 1 m.params['do_post_ent_phase_msmt'] = 1 ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=hist_only)
def SPCorrs_ZPL_sweep_theta(name, debug=False, upload_only=False, MW_pi_during_LDE=1): """ Performs a Spin-photon correlation measurement including the PLU. """ if qt.current_setup == 'lt3': hist_only = True else: hist_only = False m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) ### general params m.params['reps_per_ROsequence'] = 100 pts = 7 sweep_sce_expm.turn_all_sequence_elements_off(m) ### which parts of the sequence do you want to incorporate. m.params[ 'MW_pi_during_LDE'] = MW_pi_during_LDE ## turn pi pulse on or off for spcorrs m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'sin2_theta' m.params['general_sweep_pts'] = np.linspace(0.1, 0.5, pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] m.params['pts'] = len(m.params['sweep_pts']) m.params['do_phase_stabilisation'] = 0 m.params['do_calc_theta'] = 1 m.params['is_two_setup_experiment'] = 1 m.params['PLU_during_LDE'] = 1 m.joint_params['do_final_mw_LDE'] = 0 m.joint_params['opt_pi_pulses'] = 1 m.joint_params['LDE_attempts'] = 250 ### upload sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=hist_only)
def EntangleXcalibrateMWPhase(name, debug=False, upload_only=False): """ Sweeps the phase of the last pi/2 pulse on one of the two setups to measure the stabilized phase of the entangled state. """ m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) sweep_sce_expm.turn_all_sequence_elements_off(m) m.params['do_phase_stabilisation'] = 1 m.params['reps_per_ROsequence'] = 100 m.params['MW_during_LDE'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['is_two_setup_experiment'] = 1 m.params['PLU_during_LDE'] = 1 m.joint_params['LDE_attempts'] = 250 m.params['sin2_theta'] = 0.4 m.params['do_calc_theta'] = 1 m.params['do_post_ent_phase_msmt'] = 1 m.params['measurement_time'] = 20 * 60 # Eight minutes ### only one setup is allowed to sweep the phase. if qt.current_setup == 'lt3': hist_only = True m.params['general_sweep_pts'] = np.array([0] * 10) else: hist_only = False m.params['general_sweep_pts'] = m.params[ 'LDE_final_mw_phase'] + np.linspace(0, 360, 10) m.params['do_general_sweep'] = 1 m.params['general_sweep_name'] = 'LDE_final_mw_phase' m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] m.params['pts'] = len(m.params['sweep_pts']) ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=hist_only)
def ionization_non_local(name, debug=False, upload_only=False, use_yellow=False): """ Two setup experiment where LT3 does optical pi pulses only While LT4 repetitively runs the entire LDE element. We additionally monitor the fluorescence to see whether optical pi pulses actually arrive at both setups """ m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) ### general params pts = 10 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 250 sweep_sce_expm.turn_all_sequence_elements_off(m) if qt.current_setup == 'lt3': m.params['do_only_opt_pi'] = 1 m.joint_params['opt_pi_pulses'] = 1 ### sequence specific parameters m.params['MW_during_LDE'] = 1 m.params['is_two_setup_experiment'] = 1 m.joint_params['do_final_mw_LDE'] = 0 # m.params['first_pulse_is_pi2'] = True # m.params['mw_first_pulse_amp'] = 0 ### prepare sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'LDE_attempts' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.linspace(1, 500, pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] m.params['do_yellow_with_AWG'] = use_yellow ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
def Entangle(name, debug=False, upload_only=False): """ Run a msmt at a fixed theta, can measure in different bases """ m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) sweep_sce_expm.turn_all_sequence_elements_off(m) m.params['do_phase_stabilisation'] = 1 m.params['reps_per_ROsequence'] = 2000 m.params['measurement_time'] = 8 * 60 # Eight minutes m.params['MW_during_LDE'] = 1 m.joint_params['do_final_mw_LDE'] = 1 m.params['is_two_setup_experiment'] = 1 m.params['PLU_during_LDE'] = 1 m.joint_params['LDE_attempts'] = 250 m.params['sin2_theta'] = 0.2 m.params['do_calc_theta'] = 1 if qt.current_setup == 'lt3': hist_only = True else: hist_only = False m.params['do_general_sweep'] = 1 m.params['general_sweep_name'] = 'tomography_basis' m.params['general_sweep_pts'] = ['X', 'Y', 'Z'] m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = [1, 2, 3] #m.params['general_sweep_pts'] m.params['pts'] = len(m.params['sweep_pts']) ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=hist_only)
def check_for_projective_noise(name, debug=False, upload_only=False): """ This measurement adds a pi pulse to take the NV dark, then optical pi, then immediately pi/2. Used to check for projective noise. """ m = sce_expm.SingleClickEntExpm(name) sweep_sce_expm.prepare(m) ### general params pts = 21 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 1500 sweep_sce_expm.turn_all_sequence_elements_off(m) ### sequence specific parameters m.params['MW_during_LDE'] = 1 m.joint_params['opt_pi_pulses'] = 1 m.joint_params['LDE_attempts'] = 400 m.joint_params['do_final_mw_LDE'] = 1 m.params['first_mw_pulse_is_pi2'] = True m.params['check_EOM_projective_noise'] = 1 m.params['MW_opt_puls1_separation'] = 120e-9 - 200e-9 # m.joint_params['LDE_element_length'] = 5e-6 m.params['LDE_final_mw_phase'] = 90.0 m.params['is_two_setup_experiment'] = 1 ### prepare sweep m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'MW_opt_puls1_separation' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = m.params[ 'MW_opt_puls1_separation'] + np.linspace(-40e-9, 100e-9, pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] ### upload and run sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
def SPCorrs_PSB_singleSetup(name, debug=False, upload_only=False): """ Performs a Spin-photon correlation measurement in the PSB (therefore post selected). """ ### general params m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) load_TH_params(m) # has to be after prepare(m) ### general params m.params['reps_per_ROsequence'] = 50000 sweep_sce_expm.turn_all_sequence_elements_off(m) ### which parts of the sequence do you want to incorporate. m.params['do_general_sweep'] = True m.params['general_sweep_name'] = 'MW_pi_during_LDE' m.params['general_sweep_pts'] = np.array( [0, 1]) ## turn pi pulse on or off for spcorrs m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] m.params['pts'] = len(m.params['sweep_pts']) m.joint_params['do_final_mw_LDE'] = 0 m.joint_params['opt_pi_pulses'] = 1 m.joint_params['LDE_attempts'] = 250 if True: m.params['mw_first_pulse_amp'] = m.params['Hermite_pi2_amp'] m.params['mw_first_pulse_length'] = m.params['Hermite_pi2_length'] m.params['is_two_setup_experiment'] = 0 ### upload sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only)
def tail_sweep(name, debug=True, upload_only=True, minval=0.1, maxval=0.8, local=False): """ Performs a tail_sweep in the LDE_1 element """ m = PQSingleClickEntExpm(name) sweep_sce_expm.prepare(m) ### general params pts = 14 m.params['pts'] = pts m.params['reps_per_ROsequence'] = 3000 sweep_sce_expm.turn_all_sequence_elements_off(m) ### which parts of the sequence do you want to incorporate. ### --> for this measurement: none. m.joint_params['LDE_attempts'] = 1 m.joint_params['opt_pi_pulses'] = 1 m.params['MW_during_LDE'] = 1 m.params['MW_pi_during_LDE'] = 0 m.params['PLU_during_LDE'] = 0 if local: m.params[ 'is_two_setup_experiment'] = 0 ## set to 1 in case you want to do optical pi pulses on lt4! else: m.params[ 'is_two_setup_experiment'] = 1 ## set to 1 in case you want to do optical pi pulses on lt4! # put sweep together: sweep_off_voltage = False m.params['do_general_sweep'] = True sweep_ms0_delay = True if sweep_off_voltage: m.params['general_sweep_name'] = 'eom_overshoot1' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.linspace(-0.13, 0.06, pts) #(-0.04,-0.02,pts) elif sweep_ms0_delay: m.params['general_sweep_name'] = 'MW_repump_distance' m.params['LDE_SP_delay'] = 5e-6 print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.append( np.array([-2.6e-6, -2.2e-6, -2.0e-6]), np.linspace(-1.6e-6, -1.15e-6, pts - 3)) - 60e-9 else: m.params['general_sweep_name'] = 'aom_amplitude' print 'sweeping the', m.params['general_sweep_name'] m.params['general_sweep_pts'] = np.linspace(minval, maxval, pts) m.params['sweep_name'] = m.params['general_sweep_name'] m.params['sweep_pts'] = m.params['general_sweep_pts'] * 1e6 ### upload sweep_sce_expm.run_sweep(m, debug=debug, upload_only=upload_only, hist_only=False)