def switchView(self): try: self.action_exportData.setEnabled(True) except: pass try: self.updateGUIsignal.disconnect except: print("Could not disconnect update gui signal.") try: self.environment.update_params except: print("Could not update params.") try: self.environment.data.readout_finished.disconnect except: print("Could not disconnect finished readout signal.") params.saveFile() self.resetLayout(self.ccLayout) self.idx = self.plotTabWidget.currentIndex() views = { 0: self.setupSpectrometer, 1: self.setupT1Relaxometer, 2: self.setupT2Relaxometer, 3: self.setupProtocol, 4: self.setup2DImag } views[self.idx]() try: self.updateGUIsignal.connect(self.update_gui) except: pass
def connect_event(self): params.ip = self.ip_box.currentText() print(params.ip) params.saveFile() connection = self.data.conn_client(params.ip) if connection: self.status_label.setText('Connected.') self.connected.emit() self.mainwindow.show() self.close() elif not connection: self.status_label.setText('Not connected.') self.conn_btn.setText('Retry') self.help.setPixmap(self.conn_help) self.help.setVisible(True) else: self.status_label.setText('Not connected with status: ' + str(connection)) self.conn_btn.setText('Retry') self.help.setPixmap(self.conn_help) self.help.setVisible(True) self.status_label.setVisible(True)
def measureT1(self): print("Start T1") # Setup and update parameters self.dataAvailableFlag = False self.ax1.clear() self.ax1.set_ylabel('acquired RX signals [mV]') self.ax1.set_xlabel('time [ms]') self.ax2.clear() self.ax2.set_ylabel('RX signal peak [mV]') self.ax2.set_xlabel('time of inversion (TI) [ms]') self.controls.setEnabled(False) self.plotNav_widget.setVisible(False) self.time_ax = [] self.acq_data = [] self.datapoints_ti = [] self.datapoints_peaks = [] self.update_params() params.saveFile() # Calculate all TI values from input self.TI_values = np.rint( np.logspace(np.log10(params.t1Start), np.log10(params.t1End), params.t1Step)) print(self.TI_values) # Determine averaging variables avgPoint = 1 avgMeas = 1 #if self.measAvg_enable.isChecked(): avgMeas = self.measAvg_input.value() if self.dataAvg_enable.isChecked(): avgPoint = self.dataAvg_input.value() self.n_acq = params.t1Step * avgMeas * avgPoint self.acq_count = 0 # Set fixed output values: self.freq_output.setText(str(round(params.freq, 5))) self.at_output.setText(str(params.at)) duration = round( (params.t1Recovery + sum(self.TI_values)) * self.n_acq / 1000, 2) self.dur_output.setText(str(duration)) self.call_update.emit() # Call T1 function from dataHandler t1, r2 = self.data.T1_measurement(self.TI_values, params.freq, params.t1Recovery,\ avgP = avgPoint, avgM = avgMeas, seqType = self.seq) print("AVGP: {}, AVGM: {}".format(avgPoint, avgMeas)) logger.add('T1', res=t1, err=r2, val=self.TI_values, seq=self.seq, avgP=avgPoint) #, avgM = avgMeas) #if avgMeas > 1: self.interactive_plot() self.controls.setEnabled(True) self.dataAvailableFlag = True
def closeEvent(self, event): params.saveFile() choice = QMessageBox.question(self, 'Close Relaxo', 'Are you sure that you want to quit Relax?',\ QMessageBox.Cancel | QMessageBox.Close, QMessageBox.Cancel) if choice == QMessageBox.Close: params.dispVars() self.data.disconn_client() event.accept() else: event.ignore()
def measureT2(self): print("Start T2") # Setup and update parameters self.ax1.clear(); self.ax1.set_ylabel('acquired RX signals [mV]'); self.ax1.set_xlabel('time [ms]') self.ax2.clear(); self.ax2.set_ylabel('RX signal peak [mV]'); self.ax2.set_xlabel('echo time (TE) [ms]') self.controls.setEnabled(False) self.plotNav_widget.setVisible(False) self.time_ax = []; self.acq_data = [] self.datapoints_te = []; self.datapoints_peaks = [] self.update_params() params.saveFile() # Calculate all TE values from input self.TE_values = np.rint(np.logspace(np.log10(params.t2Start), np.log10(params.t2End), params.t2Step)) print(self.TE_values) # Determine averaging variables avgPoint = 1; avgMeas = 1 if self.measAvg_enable.isChecked(): avgMeas = self.measAvg_input.value() if self.dataAvg_enable.isChecked(): avgPoint = self.dataAvg_input.value() self.n_acq = params.t2Step*avgMeas*avgPoint self.acq_count = 0 # Set fixed output values: self.freq_output.setText(str(round(params.freq, 5))) self.at_output.setText(str(params.at)) duration = round((params.t2Recovery + sum(self.TE_values))*self.n_acq/1000,2) self.dur_output.setText(str(duration)) self.call_update.emit() # Call T2 function from dataHandler t2, r2 = self.data.T2_measurement(self.TE_values, params.freq, params.t2Recovery,\ avgP = avgPoint, avgM = avgMeas) logger.add('T2', res=t2, err=r2, val=self.TE_values, avgP = avgPoint, avgM = avgMeas) # Setup results and call interactive plot tool if necessary self.t2_output.setText(str(round(t2,2))) self.r2_output.setText(str(round(r2,4))) if avgMeas > 1: self.interactive_plot() self.controls.setEnabled(True)
def switchPlot(self): def two_ax(self): if len(self.fig.axes) == 2: return self.fig.clear()#; self.fig.set_facecolor("None") self.ax1 = self.fig.add_subplot(2,1,1) self.ax2 = self.fig.add_subplot(2,1,2) #self.fig.delaxes(self.ax3) def three_ax(self): if len(self.fig.axes) == 3: return self.fig.clear()#; self.fig.set_facecolor("None") self.ax1 = self.fig.add_subplot(3,1,1) self.ax2 = self.fig.add_subplot(3,1,2) self.ax3 = self.fig.add_subplot(3,1,3) #self.fig.add_axes(self.ax3) self.progressBar_container.setVisible(True) self.update_params() params.saveFile() idx = self.toolBox.currentIndex() plotViews = { 0: two_ax, 1: three_ax, 2: three_ax, 3: two_ax # plot for shim tool == plot for manual aquisition } plotViews[idx](self) if idx == 0: print("-> Manual Acquisition Controlcenter") self.progressBar_container.setVisible(False) if idx == 1: print("-> Autocenter Conntrolcenter") if idx == 2: print("-> Flipangletool Controlcenter") if idx == 3: print("-> Shimmingtool Controlcenter") self.load_params() self.fig_canvas.draw() self.call_update.emit()