コード例 #1
0
    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
コード例 #2
0
    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)
コード例 #3
0
ファイル: ccT1Relaxometer.py プロジェクト: schote/GOMRI
    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
コード例 #4
0
ファイル: runRelax.py プロジェクト: schote/ocra
    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()
コード例 #5
0
ファイル: ccT2Relaxometer.py プロジェクト: vnegnev/ocra
    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)
コード例 #6
0
ファイル: ccSpectrometer.py プロジェクト: schote/ocra
    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()