Source code for crikit.ui.dialog_model

"""
Dialog for creating BCARS or Raman numerical phantom
"""
import sys as _sys

import numpy as _np

# Generic imports for QT-based programs
from PyQt5.QtWidgets import (QApplication as _QApplication,
                             QWidget as _QWidget, QDialog as _QDialog,
                             QMainWindow as _QMainWindow,
                             QSizePolicy as _QSizePolicy,
                             QFileDialog as _QFileDialog)
import PyQt5.QtCore as _QtCore

from crikit.ui.qt_Model import Ui_Dialog
from crikit.datasets.model import Model

[docs]class DialogModel(_QDialog): """ Dialog for creating BCARS or Raman numerical phantom """ def __init__(self, cplx=True, parent=None): super().__init__(parent) self.cplx = cplx # Is dataset complex-valued self.ui = Ui_Dialog() self.ui.setupUi(self) self.ui.pushButtonCancel.setDefault(False) self.ui.pushButtonCancel.setAutoDefault(False) self.ui.pushButtonOk.setDefault(False) self.ui.pushButtonOk.setAutoDefault(False) self.ui.spinBoxSubsample.setFocus() self.ui.pushButtonOk.pressed.connect(self.accept) self.ui.pushButtonCancel.pressed.connect(self.reject) self.ui.spinBoxSubsample.valueChanged.connect(self.changeSize) self.ui.spinBoxStart.valueChanged.connect(self.changeSize) self.ui.spinBoxEnd.valueChanged.connect(self.changeSize) self.ui.spinBoxSpectrographStep.valueChanged.connect(self.changeSize) self.ui.spinBoxProbe.valueChanged.connect(self.changeSize) self.changeSize()
[docs] def changeSize(self): subsample = self.ui.spinBoxSubsample.value() start = self.ui.spinBoxStart.value() stop = self.ui.spinBoxEnd.value() slope = self.ui.spinBoxSpectrographStep.value() probe = self.ui.spinBoxProbe.value() m = Model._M n = Model._N x = _np.arange(n) y = _np.arange(m) rows = y[::subsample].size cols = x[::subsample].size lam_start = 0.01 / (start + 0.01/(probe*1e-9)) # meters lam_start *= 1e9 # nm lam_end = 0.01 / (stop + 0.01/(probe*1e-9)) # meters lam_end *= 1e9 # nm lam_ctr = (lam_start + lam_end) / 2 # nm n_pix = _np.abs(_np.ceil((lam_end-lam_start) / slope)).astype(int) datasize = rows * cols * n_pix if self.cplx: datasize *= (128/8) # Assume complex128, for now else: datasize *= (64/8) # Assume float64, for now datasize *= 1e-9 # Gigbytes (Gb) self.ui.spinBoxOutputColors.setValue(n_pix) self.ui.spinBoxOutputRows.setValue(rows) self.ui.spinBoxOutputCols.setValue(cols) self.ui.spinBoxMemory.setValue(datasize)
[docs] @staticmethod def dialogModel(cplx=True, parent=None): """ """ dialog = DialogModel(cplx=cplx, parent=parent) result = dialog.exec_() if result == 1: settings = {} settings['subsample'] = dialog.ui.spinBoxSubsample.value() settings['wn_start'] = dialog.ui.spinBoxStart.value() settings['wn_end'] = dialog.ui.spinBoxEnd.value() settings['wl_slope'] = dialog.ui.spinBoxSpectrographStep.value() settings['probe'] = dialog.ui.spinBoxProbe.value() settings['gnoise_bool'] = dialog.ui.checkBoxGNoise.isChecked() settings['pnoise_bool'] = dialog.ui.checkBoxPNoise.isChecked() settings['dark_bool'] = dialog.ui.checkBoxDark.isChecked() settings['gnoise_stddev'] = dialog.ui.spinBoxGStdDev.value() settings['pnoise_gain'] = dialog.ui.spinBoxPMulti.value() settings['dark_level'] = dialog.ui.spinBoxDark.value() return settings else: return None
if __name__ == '__main__': app = _QApplication(_sys.argv) app.setStyle('Cleanlooks') win = DialogModel.dialogModel(cplx=False, parent=None) print(win) _sys.exit()