diff --git a/Scripts/Saturation_Recovery/satrec_exp.py b/Scripts/Saturation_Recovery/satrec_exp.py index 02515fd..e751cf9 100644 --- a/Scripts/Saturation_Recovery/satrec_exp.py +++ b/Scripts/Saturation_Recovery/satrec_exp.py @@ -11,22 +11,21 @@ def experiment(): # saturation-recovery experiment pars = {} pars['P90'] = 1.7e-6 # 90-degree pulse length (s) pars['SF'] = 338.7e6 # spectrometer frequency (Hz) - pars['O1'] = -60e3 # offset from SF (Hz) - pars['SW'] = 200e3 # spectral window (Hz) + pars['SW'] = 200e3 # sampling rate (Hz) pars['SI'] = 1*256 # number of acquisition points pars['NS'] = 8 # number of scans pars['DS'] = 0 # number of dummy scans pars['TAU'] = 1 # delay for recovery (s) pars['DEAD1'] = 5e-6 # receiver dead time (s) - pars['PHA'] = 100 # receiver phase (degree) + pars['PHA'] = 0 # receiver phase (degree) # -*- these aren't variable: -*- - pars['NECH'] = 40 # number of saturation pulses + pars['NECH'] = 7 # number of saturation pulses pars['D1'] = 100e-3 # starting interval in saturation sequence (s) pars['D2'] = 1e-4 # end interval in saturation sequence (s) pars['DATADIR'] = '/home/fprak/Students/' # data directory pars['OUTFILE'] = None # output file name - # specify a variable parameter (optional): + # specify a variable parameter (optional): pars['VAR_PAR'] = 'TAU' # variable parameter name (a string) start = 1e-3 # starting value stop = 5e-0 # end value @@ -34,7 +33,7 @@ def experiment(): # saturation-recovery experiment log_scale = True # log scale flag stag_range = False # staggered range flag - # check parameters for safety: + # check parameters for safety: if pars['PHA'] < 0: pars['PHA'] = 360 + pars['PHA'] @@ -47,8 +46,7 @@ def experiment(): # saturation-recovery experiment raise Exception("Pulse too long!!!") if pars['NS']%4 != 0: - pars['NS'] = int(round(pars['NS'] / 4) + 1) * 4 - print 'Number of scans changed to ',pars['NS'],' due to phase cycling' + print 'Number of scans should be changed to ',pars['NS'],' due to phase cycling' if pars['D1'] < pars['D2']: raise Exception("D1 must be greater than D2") @@ -57,7 +55,7 @@ def experiment(): # saturation-recovery experiment if sat_length > 1.: raise Exception("Saturation sequence too long!!!") - # start the experiment: + # start the experiment: if var_key: # this is an arrayed experiment: if log_scale: @@ -117,8 +115,7 @@ def satrec_experiment(pars, run): # read in variables: P90 = pars['P90'] SF = pars['SF'] - O1 = pars['O1'] - DEAD1 = pars['DEAD1'] + DEAD1 = pars['DEAD1'] NECH = pars['NECH'] D1 = pars['D1'] D2 = pars['D2'] @@ -128,20 +125,13 @@ def satrec_experiment(pars, run): PH2 = pars['PH2'][run%len(pars['PH2'])] PHA = pars['PHA'] - # set sampling parameters: - SI = pars['SI'] - SW = pars['SW'] - while SW <= 10e6 and SI < 256*1024: - SI *= 2 - SW *= 2 - # set variable delay list for saturation pulses: vdlist = log_range(D2, D1, NECH-1) # run the pulse sequence: # saturation: - e.set_frequency(SF+O1, phase=PH1) # set frequency and phase for saturation pulses + e.set_frequency(SF, phase=PH1) # set frequency and phase for saturation pulses e.ttl_pulse(TXEnableDelay, value=TXEnableValue) # enable RF amplifier e.ttl_pulse(P90, value=TXEnableValue|TXPulseValue) # apply 90-degree pulse for delay in vdlist[::-1]: @@ -149,9 +139,9 @@ def satrec_experiment(pars, run): e.ttl_pulse(TXEnableDelay, value=TXEnableValue) # enable RF amplifier e.ttl_pulse(P90, value=TXEnableValue|TXPulseValue) # apply 90-degree pulse + e.set_phase(PH3) # set phase for measuring pulse # recovery: e.wait(TAU) # recovery time - e.set_phase(PH3) # set phase for measuring pulse # detection: e.ttl_pulse(TXEnableDelay, value=TXEnableValue) # enable RF amplifier diff --git a/Scripts/Saturation_Recovery/satrec_res.py b/Scripts/Saturation_Recovery/satrec_res.py index 32a96b4..047c721 100644 --- a/Scripts/Saturation_Recovery/satrec_res.py +++ b/Scripts/Saturation_Recovery/satrec_res.py @@ -29,42 +29,6 @@ def result(): # get actual sampling rate of timesignal: sampling_rate = timesignal.get_sampling_rate() - # get user-defined spectrum width: - spec_width = pars['SW'] - - # specify cutoff frequency, in relative units: - cutoff = spec_width / sampling_rate - - if cutoff < 1: # no filter applied otherwise - - # number of filter's coefficients: - numtaps = 29 - - # use firwin to create a lowpass FIR filter: - fir_coeff = firwin(numtaps, cutoff) - - # downsize x according to user-defined spectral window: - skip = int(sampling_rate / spec_width) - timesignal.x = timesignal.x[::skip] - - for i in range(2): - # apply the filter to ith channel: - timesignal.y[i] = lfilter(fir_coeff, 1.0, timesignal.y[i]) - - # zeroize first N-1 "corrupted" samples: - timesignal.y[i][:numtaps-1] = 0.0 - - # circular left shift of y: - timesignal.y[i] = roll(timesignal.y[i], -(numtaps-1)) - - # downsize y to user-defined number of samples (SI): - timesignal.y[i] = timesignal.y[i][::skip] - - # update the sampling_rate attribute of the signal's: - timesignal.set_sampling_rate(spec_width) - - # ---------------------------------------------------- - # rotate timesignal according to current receiver's phase: timesignal.phase(pars['rec_phase'])