示例#1
0
 def updateSettings(self, c = None):
     try:
         MeasSet = MeasurementSettings(self.reactor, self.measurementSettings, parent = self)
         if MeasSet.exec_():
             self.measurementSettings = MeasSet.getValues()
             print self.measurementSettings
             
             #Set pid settings
             yield self.ls.pid_set(self.measurementSettings['heater output'],self.measurementSettings['p'],self.measurementSettings['i'],self.measurementSettings['d'])
             
             #Set output settings
             yield self.setOutputSettings()
             
             #In case record time has changed, update plots to reflect that
             self.updatePlots()
             
             if self.measurementSettings['heater mode'] == 0:
                 self.label_setpoint.setText('Setpoint (K):')
                 self.lineEdit_setpoint.setText(formatNum(self.measurementSettings['setpoint']))
             elif self.measurementSettings['heater mode'] == 1:
                 self.label_setpoint.setText('Output (%):')
                 self.lineEdit_setpoint.setText(formatNum(self.measurementSettings['out percent']))
             else:
                 self.label_setpoint.setText('WTF?!?!')
                 
     except Exception as inst:
         print inst, sys.exc_traceback.tb_lineno
示例#2
0
 def setHeaterMode(self, mode):
     self.measurementSettings['heater mode'] = mode
     
     if self.measurementSettings['heater mode'] == 0:
         self.label_setpoint.setText('Setpoint (K):')
         self.lineEdit_setpoint.setText(formatNum(self.measurementSettings['setpoint']))
     elif self.measurementSettings['heater mode'] == 1:
         self.label_setpoint.setText('Output (%):')
         self.lineEdit_setpoint.setText(formatNum(self.measurementSettings['out percent']))
     else:
         self.label_setpoint.setText('WTF?!?!')
         
     yield self.setOutputSettings()
示例#3
0
 def setSetpoint(self, val = None):
     if val is None:
         val = readNum(str(self.lineEdit_setpoint.text()), self, False)
     if isinstance(val,float):
         if self.measurementSettings['heater mode'] == 0:
             self.measurementSettings['setpoint'] = val
             yield self.ls.setpoint(self.measurementSettings['heater output'], self.measurementSettings['setpoint'])
         elif self.measurementSettings['heater mode'] == 1:
             self.measurementSettings['out percent'] = val
             yield self.ls.gpib_write('MOUT%i,%f'%(self.measurementSettings['heater output'],self.measurementSettings['out percent']))
     if self.measurementSettings['heater mode'] == 0:
         self.lineEdit_setpoint.setText(formatNum(self.measurementSettings['setpoint']))
     elif self.measurementSettings['heater mode'] == 1:
         self.lineEdit_setpoint.setText(formatNum(self.measurementSettings['out percent']))
 def updateTC(self, c = None):
     new_Tc = str(self.lineEdit_timeConst.text())
     val = readNum(new_Tc, self)
     if isinstance(val, float):
         yield self.hf.set_demod_time_constant(1,val)
         self.timeConst = yield self.hf.get_demod_time_constant(1)
     self.lineEdit_timeConst.setText(formatNum(self.timeConst))
 def updateStepSize(self):
     new_freqStep = str(self.lineEdit_deltaF.text())
     val = readNum(new_freqStep, self, False)
     if isinstance(val,float):
         self.freqStep = val
         self.points = int(np.abs(self.startFreq-self.stopFreq)/self.freqStep)
         self.reinitSweep()
     self.lineEdit_deltaF.setText(formatNum(self.freqStep))
示例#6
0
 def set_ZMaxVolts(self):
     #val = readNum(str(self.lineEdit_ZMaxVolts.text()))
     #if isinstance(val,float):
     #    self.tempData[9] = val
     if self.tempData[9] is None:
         self.lineEdit_ZMaxVolts.setText('')
     else: 
         self.lineEdit_ZMaxVolts.setText(formatNum(self.tempData[9]))
 def updateSelectFreq(self):
     new_selectFreq = str(self.lineEdit_freqSelect.text())
     val = readNum(new_selectFreq, self)
     if isinstance(val,float):
         self.selectFreq = val
         self.freqSelectLine.setPos(self.selectFreq)
         self.freqSelectLine2.setPos(self.selectFreq)
         self.reinitSweep()
     self.lineEdit_freqSelect.setText(formatNum(self.selectFreq, 4))
示例#8
0
    def __init__(self, settings, parent = None):
        super(settingsWindow, self).__init__(parent)

        self.setupUi(self)

        self.plotSettings = settings

        #Load the current values into the setting window UI
        self.lineEdit_ScaleFactor.setText(formatNum(self.plotSettings['scanPlot_scalefactor'], 6))
        self.lineEdit_Offset.setText(formatNum(self.plotSettings['scanPlot_offset'], 6))
        self.checkBox_realUnit.setChecked(self.plotSettings['scanPlot_realPosition'])

        #Connect UI elements for updating the settings
        self.lineEdit_ScaleFactor.editingFinished.connect(lambda: self.updateParameter('scanPlot_scalefactor', self.lineEdit_ScaleFactor))
        self.lineEdit_Offset.editingFinished.connect(lambda: self.updateParameter('scanPlot_offset', self.lineEdit_Offset))
        self.checkBox_realUnit.stateChanged.connect(self.updateCheckBox)

        #Accept the changes if the accept button is clicked
        self.pushButton_accept.clicked.connect(self.accept)
 def updateStopFreq(self):
     new_stopFreq = str(self.lineEdit_MaxFreq.text())
     val = readNum(new_stopFreq, self)
     if isinstance(val,float):
         self.stopFreq = val
         self.maxFreqLine.setPos(self.stopFreq)
         self.maxFreqLine2.setPos(self.stopFreq)
         self.points = int(np.abs(self.startFreq-self.stopFreq)/self.freqStep)
         self.reinitSweep()
     self.lineEdit_MaxFreq.setText(formatNum(self.stopFreq, 4))
示例#10
0
    def loadSelectedCalibration(self, key):
        data = self.calibrationDictionary[str(key)]

        self.tempData = data

        self.lineEdit_XCon.setText(formatNum(float(data[1]),3))
        self.lineEdit_YCon.setText(formatNum(float(data[2]),3))
        self.lineEdit_ZCon.setText(formatNum(float(data[3]),3))

        self.lineEdit_XMax.setText(formatNum(float(data[4]),3))
        self.lineEdit_YMax.setText(formatNum(float(data[5]),3))
        self.lineEdit_ZMax.setText(formatNum(float(data[6]),3))

        self.lineEdit_XMaxVolts.setText(formatNum(float(data[7]),3))
        self.lineEdit_YMaxVolts.setText(formatNum(float(data[8]),3))
        self.lineEdit_ZMaxVolts.setText(formatNum(float(data[9]),3))
示例#11
0
 def set_ZMax(self):
     val = readNum(str(self.lineEdit_ZMax.text()), self)
     if isinstance(val,float):
         self.tempData[6] = val
         if self.tempData[3] is not None and self.tempData[6] is not None:
             self.tempData[9] = float(self.tempData[3])*float(self.tempData[6])
             self.set_ZMaxVolts()
     if self.tempData[6] is None:
         self.lineEdit_ZMax.setText('')
     else: 
         self.lineEdit_ZMax.setText(formatNum(self.tempData[6]))
 def loadCurrValues(self):
     if self.bandcontrol == 0:
         self.radio_Manual.setChecked(True)
     elif self.bandcontrol == 1:
         self.radio_Fixed.setChecked(True)
     else:   
         self.radio_Auto.setChecked(True)
     
     if self.log:
         self.checkBox_log.setChecked(True)
         
     if self.overlap:
         self.checkBox_overlap.setChecked(True)
     
     self.lineEdit_settle_time.setText(formatNum(self.settle_time))
     self.lineEdit_settle_acc.setText(formatNum(self.settle_acc))
     self.lineEdit_avg_tc.setText(str(self.average_TC))
     self.lineEdit_avg_sample.setText(str(self.average_sample))
     self.lineEdit_bandwidth.setText(formatNum(self.bandwidth))
     self.lineEdit_loopcount.setText(str(self.loopcount))
 def Updateposition(self):
     self.xposition = int(self.fill[0, 0]) * 2**7 + int(
         self.fill[0, 1]) * 2**6 + int(self.fill[0, 2]) * 2**5 + int(
             self.fill[0, 3]) * 2**4 + int(self.fill[1, 0]) * 2**3 + int(
                 self.fill[1, 1]) * 2**2 + int(
                     self.fill[1, 2]) * 2**1 + int(self.fill[1, 3]) * 2**0
     #This convert the QR code to the integer it correspond to
     valx = formatNum(
         self.inttonum(self.xposition) -
         float(decimal.Decimal(self.CenterX * 30) / decimal.Decimal(10**6)))
     self.lineEdit_Xposition.setText(valx)
     self.yposition = int(self.fill[2, 0]) * 2**7 + int(
         self.fill[2, 1]) * 2**6 + int(self.fill[2, 2]) * 2**5 + int(
             self.fill[2, 3]) * 2**4 + int(self.fill[3, 0]) * 2**3 + int(
                 self.fill[3, 1]) * 2**2 + int(
                     self.fill[3, 2]) * 2**1 + int(self.fill[3, 3]) * 2**0
     valy = formatNum(
         self.inttonum(self.yposition) -
         float(decimal.Decimal(self.CenterY * 30) / decimal.Decimal(10**6)))
     self.lineEdit_Yposition.setText(valy)
示例#14
0
 def set_YCon(self):
     val = readNum(str(self.lineEdit_YCon.text()), self)
     if isinstance(val,float):
         self.tempData[2] = val
         if self.tempData[2] is not None and self.tempData[5] is not None:
             self.tempData[8] = float(self.tempData[2])*float(self.tempData[5])
             self.set_YMaxVolts()
     if self.tempData[2] is None:
         self.lineEdit_YCon.setText('')
     else: 
         self.lineEdit_YCon.setText(formatNum(self.tempData[2]))
 def updateSensitivity(self, c = None):
     try:
         new_sens = str(self.lineEdit_sensitivity.text())
         val = readNum(new_sens, self, False)
         if isinstance(val,float):
             yield self.hf.set_range(self.input, val)
             range = yield self.hf.get_range(self.input)
             self.sensitvity = range
         self.lineEdit_sensitivity.setText(formatNum(self.sensitvity))
     except Exception as inst:
         print inst
 def updateOutputAmplitude(self, c = None):
     try:
         new_Amp = str(self.lineEdit_Amplitude.text())
         val = readNum(new_Amp, self)
         if isinstance(val,float):
             yield self.hf.set_output_range(self.output,val)
             range = yield self.hf.get_output_range(self.output)
             yield self.hf.set_output_amplitude(self.output,val/range)
             self.exAmp = val
         self.lineEdit_Amplitude.setText(formatNum(self.exAmp))
     except Exception as inst:
         print inst
 def UpdateAutomaticPositioningAbsolutePosition(self, AxisNo):
     dummystr = str(self.lineEdit_Absolute[AxisNo].text())
     dummyval = readNum(dummystr, self)
     if isinstance(dummyval, float):
         if dummyval >= -5.0 * 10**-3 and dummyval <= 5.0 * 10**-3:
             self.AbsolutePosition[AxisNo] = dummyval
         elif dummyval < -5.0 * 10**-3:
             self.AbsolutePosition[AxisNo] = -5.0 * 10**-3
         elif dummyval > 5.0 * 10**-3:
             self.AbsolutePosition[AxisNo] = 5.0 * 10**-3
     self.lineEdit_Absolute[AxisNo].setText(
         formatNum(self.AbsolutePosition[AxisNo], 6))
    def loadParameters(self):
        for i in range(3):
            #Load parameters in the GUI that can be read
            amp = yield self.anc350.get_amplitude(i)
            freq = yield self.anc350.get_frequency(i)
            self.lineEdit_Amplitude[i].setText(formatNum(amp))
            self.lineEdit_Frequency[i].setText(formatNum(freq))
            statusarray = yield self.anc350.get_axis_status(i)
            if statusarray[1] == 1:
                self.OutputEnabled[i] = True

            else:
                self.OutputEnabled[i] = False
            self.checkBox_OutputEnabled[i].setChecked(self.OutputEnabled[i])

            #Attocube doesn't provide the capability to read the following values from their hardware, so set these
            #to our chosen default values
            yield self.UpdateAutomaticPositioningRelativePosition(i)
            yield self.UpdateAutomaticPositioningAbsolutePosition(i)
            yield self.UpdateAmplitude(i)
            yield self.UpdateFrequency(i)
            yield self.UpdateTargetRange(i)
            yield self.anc350.set_target_ground(i, self.TargetGround[i])
 def UpdateAmplitude(self, AxisNo):
     try:
         dummystr = str(self.lineEdit_Amplitude[AxisNo].text())
         dummyval = readNum(dummystr, self, False)
         if isinstance(dummyval, float):
             if dummyval >= 0 and dummyval <= 60:
                 self.manual_Amplitude[AxisNo] = dummyval
             elif dummyval < 0:
                 self.manual_Amplitude[AxisNo] = 0
             elif dummyval > 60:
                 self.manual_Amplitude[AxisNo] = 60
         self.lineEdit_Amplitude[AxisNo].setText(
             formatNum(self.manual_Amplitude[AxisNo], 6))
         if hasattr(self, 'anc350'):
             yield self.anc350.set_amplitude(AxisNo,
                                             self.manual_Amplitude[AxisNo])
     except Exception as inst:
         print inst, sys.exc_traceback.tb_lineno
 def UpdateFrequency(self, AxisNo):
     try:
         dummystr = str(self.lineEdit_Frequency[AxisNo].text())
         dummyval = readNum(dummystr, self, False)
         if isinstance(dummyval, float):
             if dummyval >= 1 and dummyval <= 2000:
                 self.manual_Frequency[AxisNo] = int(dummyval)
             elif dummyval < 1:
                 self.manual_Frequency[AxisNo] = 1
             elif dummyval > 2000:
                 self.manual_Frequency[AxisNo] = 2000
         self.lineEdit_Frequency[AxisNo].setText(
             formatNum(self.manual_Frequency[AxisNo], 6))
         if hasattr(self, 'anc350'):
             yield self.anc350.set_frequency(AxisNo,
                                             self.manual_Frequency[AxisNo])
     except Exception as inst:
         print inst, sys.exc_traceback.tb_lineno
 def UpdateTargetRange(self, AxisNo):
     try:
         dummystr = str(self.lineEdit_TargetRange[AxisNo].text())
         dummyval = readNum(dummystr, self)
         if isinstance(dummyval, float):
             if dummyval >= 1 * 10**-9 and dummyval <= 10**-3:
                 self.TargetRange[AxisNo] = dummyval
             elif dummyval < 1 * 10**-9:
                 self.TargetRange[AxisNo] = 1 * 10**-9
             elif dummyval > 10**-3:
                 self.TargetRange[AxisNo] = 10**-3
         self.lineEdit_TargetRange[AxisNo].setText(
             formatNum(self.TargetRange[AxisNo], 6))
         if hasattr(self, 'anc350'):
             yield self.anc350.set_target_range(AxisNo,
                                                self.TargetRange[AxisNo])
     except Exception as inst:
         print inst, sys.exc_traceback.tb_lineno
示例#22
0
    def readCurrentSettings(self, c = None):
        try:
            range = yield self.ls.range_read(self.measurementSettings['heater output'])
            
            pid = yield self.ls.pid_read(self.measurementSettings['heater output'])
            pid = pid.split(',')
            
            setpoint = yield self.ls.setpoint_read(self.measurementSettings['heater output'])

            self.lineEdit_setpoint.setText(formatNum(float(setpoint)))
            if range !=0:
                self.measurementSettings['heater range'] = range
            self.measurementSettings['p'] = float(pid[0])
            self.measurementSettings['i'] = float(pid[1])
            self.measurementSettings['d'] = float(pid[2])
            self.measurementSettings['setpoint'] = float(setpoint)
        except Exception as inst:
            print inst, sys.exc_traceback.tb_lineno
    def connectLabRAD(self, dict):
        try:
            self.cxn = dict['servers']['local']['cxn']
            self.gen_dv = dict['servers']['local']['dv']
            
            #Create another connection for the connection to data vault to prevent 
            #problems of multiple windows trying to write the data vault at the same
            #time

            from labrad.wrappers import connectAsync
            self.cxn_tf = yield connectAsync(host = '127.0.0.1', password = '******')
            self.dv = yield self.cxn_tf.data_vault
            curr_folder = yield self.gen_dv.cd()
            yield self.dv.cd(curr_folder)

            self.hf = yield self.cxn_tf.hf2li_server
            self.hf.select_device(dict['devices']['approach and TF']['hf2li'])
            
            self.push_Servers.setStyleSheet("#push_Servers{" + 
            "background: rgb(0, 170, 0);border-radius: 4px;}")
            
            try:
                self.reinitSweep()
            except Exception as inst:
                print inst
            try:
                range = yield self.hf.get_output_range(self.output)
                amp = yield self.hf.get_output_amplitude(self.output)
                self.exAmp = amp*range
                self.lineEdit_Amplitude.setText(formatNum(self.exAmp))
            except Exception as inst:
                print inst
            try:
                self.updateSensitivity()
            except Exception as inst:
                print inst
            try:
                self.updateTC()
            except Exception as inst:
                print inst
            self.unlockInterface()
        except Exception as inst:
            self.push_Servers.setStyleSheet("#push_Servers{" + 
            "background: rgb(161, 0, 0);border-radius: 4px;}")  
示例#24
0
 def updateParameter(self, key, lineEdit):
     val = readNum(str(lineEdit.text()))
     if isinstance(val, float):
             self.plotSettings[key] = val
     lineEdit.setText(formatNum(self.plotSettings[key], 6))
示例#25
0
 def setGate(self, gate):
     self.gateSetpntLine.setText(formatNum(gate))
     yield self.gotoGateFunc()
示例#26
0
 def setBias(self, bias):
     self.biasSetpntLine.setText(formatNum(bias))
     yield self.gotoBiasFunc()
    def fitCurrData(self, c = None):
        #ideas: scale voltage data up to avoid small values, makes it easier to fit. Then rescale back down. 
        #avoiding small numbers as much as possible is good seems to work fine right now, so not necessary. 
        #But if data fitting is bad in the future this can be a possible fix. 

        '''
        self.startFreq = 32000
        self.stopFreq = 33500
        self.points = 10000
        
        #self.startFreq = 30000
        #self.stopFreq = 34000
        #self.points = 10000
        
        self.freq = np.linspace(self.startFreq, self.stopFreq, self.points)
        #params = [27100, 8100, 2.9e-15, 1.2e-12]
        params = [32838.1, 61670, 0.00670979, 3.7e-5]
        param = [32838.1, 61670, 0.00670979, -3]
        #params = [32838.1, 5000, 0.0067, 3.7e-5]
        #param = [32838.1, 5000, 0.0067]
        self.R = ampFunc(self.freq, *params) + 5e-6*(np.random.rand(self.points)-0.5)
        self.phi = phaseFunc(self.freq, *param) + np.random.rand(self.points)-0.5

        #removes previous data plot and replots it. Doesn't seem necessary
        try:
            self.ampPlot.removeItem(self.prevAmpPlot)
            self.phasePlot.removeItem(self.prevPhasePlot)
        except Exception as inst:
            pass
            
        self.prevAmpPlot = self.ampPlot.plot(self.freq,self.R)
        self.prevPhasePlot = self.phasePlot.plot(self.freq,self.phi)
        '''
        try:
            max = np.amax(self.R)
            f0_guess = self.freq[np.argmax(self.R)]
            
            self.ampFitParams, pcov = curve_fit(ampFunc, self.freq, self.R, p0 = [f0_guess, 5000, 0.1, max])
            perr = np.sqrt(np.diag(pcov))

            if self.showFit:
                try: 
                    self.ampPlot.removeItem(self.prevAmpFit)
                except:
                    pass
                self.prevAmpFit = self.ampPlot.plot(self.freq,ampFunc(self.freq, *self.ampFitParams))

            self.lineEdit_peakF.setText(formatNum(self.ampFitParams[0]))
            self.lineEdit_peakFSig.setText(formatNum(perr[0]))
            self.lineEdit_QFactor.setText(formatNum(self.ampFitParams[1]))
            
            avg = 0
            for i in range(0,10):
                avg = avg + self.phi[i]
            avg = avg/10
            self.phaseFitParams, pcov = curve_fit(phaseFunc, self.freq, self.phi, p0 = [self.ampFitParams[0], self.ampFitParams[1], self.ampFitParams[2], avg-90])
            perr = np.sqrt(np.diag(pcov))

            if self.showFit:
                try:
                    self.phasePlot.removeItem(self.prevPhaseFit)
                except:
                    pass
                self.prevPhaseFit = self.phasePlot.plot(self.freq,phaseFunc(self.freq, *self.phaseFitParams))

            self.lineEdit_PhasePeakF.setText(formatNum(self.phaseFitParams[0]))
            self.lineEdit_PhasePeakFSig.setText(formatNum(perr[0]))
            self.lineEdit_PhaseQFactor.setText(formatNum(self.phaseFitParams[1]))
            #Maybe iterate fits/starting parameters? 
        except Exception as inst:
            print "Fitting threw the following error: ", inst
            
        #wait for plots to udpate before saving data screenshot
        yield self.sleep(0.25)
        #If a fit is done, resave the data to show the results
        self.saveDataToSessionFolder()
 def updateSettleTime(self):
     new_settle_time = str(self.lineEdit_settle_time.text())
     val = readNum(new_settle_time, self)
     if isinstance(val, float):
         self.settle_time = val
     self.lineEdit_settle_time.setText(formatNum(self.settle_time))
 def updateBandwidth(self):
     new_bandwidth = str(self.lineEdit_bandwidth.text())
     val = readNum(new_bandwidth, self)
     if isinstance(val, float):
         self.bandwidth = val
     self.lineEdit_bandwidth.setText(formatNum(self.bandwidth))
 def updateSettleAcc(self):
     new_settle_acc = str(self.lineEdit_settle_acc.text())
     val = readNum(new_settle_acc, self)
     if isinstance(val, float):
         self.settle_acc = val
     self.lineEdit_settle_acc.setText(formatNum(self.settle_acc))