WIP on autopick settings widget
This commit is contained in:
		
							parent
							
								
									29915f3669
								
							
						
					
					
						commit
						aeaa13e277
					
				| @ -1 +1 @@ | ||||
| 3090-dirty | ||||
| 2991-dirty | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| from pylot.core.util.errors import ParameterError | ||||
| 
 | ||||
| import default_parameters | ||||
| 
 | ||||
| class AutoPickParameter(object): | ||||
|     ''' | ||||
| @ -44,6 +44,8 @@ class AutoPickParameter(object): | ||||
|         contain all parameters. | ||||
|         ''' | ||||
| 
 | ||||
|         self.__init_default_paras() | ||||
|         self.__init_subsettings() | ||||
|         self.__filename = fnin | ||||
|         parFileCont = {} | ||||
|         # io from parsed arguments alternatively | ||||
| @ -100,6 +102,19 @@ class AutoPickParameter(object): | ||||
|             string += 'Empty parameter dictionary.' | ||||
|         return string | ||||
| 
 | ||||
|     # Set default values of parameter names | ||||
|     def __init_default_paras(self): | ||||
|         parameters=default_parameters.defaults | ||||
|         self.__defaults = parameters | ||||
| 
 | ||||
|     def __init_subsettings(self): | ||||
|         self._settings_main=default_parameters.settings_main | ||||
|         self._settings_nlloc=default_parameters.settings_nlloc | ||||
|         self._settings_smoment=default_parameters.settings_smoment | ||||
|         self._settings_focmec=default_parameters.settings_focmec | ||||
|         self._settings_common_pick=default_parameters.settings_common_pick | ||||
|         self._settings_special_pick=default_parameters.settings_special_pick | ||||
|          | ||||
|     # String representation of the object | ||||
|     def __repr__(self): | ||||
|         return "AutoPickParameter('%s')" % self.__filename | ||||
| @ -147,6 +162,47 @@ class AutoPickParameter(object): | ||||
|                 self._printParameterError(e) | ||||
|                 raise ParameterError(e) | ||||
| 
 | ||||
|     def get_defaults(self): | ||||
|         return self.__defaults | ||||
| 
 | ||||
|     def get_main_para_names(self): | ||||
|         return self._settings_main | ||||
| 
 | ||||
|     def get_nlloc_para_names(self): | ||||
|         return self._settings_nlloc | ||||
| 
 | ||||
|     def get_seis_moment_para_names(self): | ||||
|         return self._settings_smoment | ||||
|          | ||||
|     def get_focmec_para_names(self): | ||||
|         return self._settings_focmec | ||||
| 
 | ||||
|     def get_common_pick_names(self): | ||||
|         return self._settings_common_pick | ||||
| 
 | ||||
|     def get_special_pick_names(self): | ||||
|         return self._settings_special_pick | ||||
| 
 | ||||
| 
 | ||||
|          | ||||
| # main_settings = parameter[:8] | ||||
| # main_settings | ||||
| # paramter[8] | ||||
| # parameter[8] | ||||
| # parameter[8:14] | ||||
| # nlloc_settings = parameter[8:14] | ||||
| # len(nlloc_settings) | ||||
| # sm_settings = parameter[14:17] | ||||
| # sm_settings | ||||
| # fmec_settings = parmeter[17] | ||||
| # fmec_settings = parameter[17] | ||||
| # fmec_settings | ||||
| # common_picker_settings = parameter[18:26] | ||||
| # common_picker_settings | ||||
| # special_picker_settings = parameter[18:] | ||||
| 
 | ||||
|      | ||||
|      | ||||
|     def setParam(self, **kwargs): | ||||
|         for param, value in kwargs.items(): | ||||
|             self.__setitem__(param, value) | ||||
|  | ||||
| @ -1574,6 +1574,132 @@ class LocalisationTab(PropTab): | ||||
|         values = {"nll/rootPath": self.rootedit.setText("%s" % nllocroot), | ||||
|                   "nll/binPath": self.binedit.setText("%s" % nllocbin)} | ||||
| 
 | ||||
|          | ||||
| class AutoPickParaBox(QtGui.QWidget):      | ||||
|     def __init__(self, ap, parent=None): | ||||
|         ''' | ||||
|         Generate Widget containing parameters for automatic picking algorithm. | ||||
| 
 | ||||
|         :param: ap | ||||
|         :type: AutoPickParameter (object) | ||||
| 
 | ||||
|         ''' | ||||
|         QtGui.QWidget.__init__(self, parent) | ||||
|         self.ap = ap | ||||
|         self.tabs = QtGui.QTabWidget() | ||||
|         self.layout = QtGui.QHBoxLayout() | ||||
|         self.layout.addWidget(self.tabs) | ||||
|         self.setLayout(self.layout) | ||||
|         self.add_main_parameters_tab() | ||||
|         self.add_special_pick_parameters_tab() | ||||
|          | ||||
|     def init_boxes(self, parameter_names, defaults=True): | ||||
|         self.boxes = {} | ||||
|         grid = QtGui.QGridLayout() | ||||
| 
 | ||||
|         for index1, name in enumerate(parameter_names): | ||||
|             text = name + ' [?]' | ||||
|             label = QtGui.QLabel(text) | ||||
|             default_item = self.ap.get_defaults()[name] | ||||
|             tooltip = default_item['tooltip'] | ||||
|             tooltip += ' | type: {}'.format(default_item['type']) | ||||
|             if type(default_item['type']) == str: | ||||
|                 if defaults: | ||||
|                     value = default_item['value'] | ||||
|                 typ = default_item['type'] | ||||
|                 box = self.create_box(value, typ, tooltip) | ||||
|                 self.boxes[name] = box | ||||
|             elif type(default_item['type']) == tuple: | ||||
|                 boxes = [] | ||||
|                 if defaults: | ||||
|                     values = default_item['value'] | ||||
|                 for index2, val in enumerate(values): | ||||
|                     typ = default_item['type'][index2] | ||||
|                     boxes.append(self.create_box(val, typ, tooltip)) | ||||
|                 box = self.create_multi_box(boxes) | ||||
|                 self.boxes[name] = boxes | ||||
|             label.setToolTip(tooltip) | ||||
|             grid.addWidget(label, index1, 1) | ||||
|             grid.addWidget(box, index1, 2) | ||||
|         return grid | ||||
| 
 | ||||
|     def create_box(self, value, typ, tooltip): | ||||
|         if typ == 'str': | ||||
|             box = QtGui.QLineEdit() | ||||
|             box.setText(value) | ||||
|         elif typ == 'float': | ||||
|             box = QtGui.QSpinBox() | ||||
|             box.setMaximum(100*value) | ||||
|             box.setValue(value) | ||||
|         elif typ == 'int': | ||||
|             box = QtGui.QSpinBox() | ||||
|             box.setMaximum(100*value) | ||||
|             box.setValue(value) | ||||
|         elif typ == 'bool': | ||||
|             box = QtGui.QCheckBox() | ||||
|             box.setChecked(value) | ||||
|         #box.setToolTip(tooltip) | ||||
|         return box | ||||
| 
 | ||||
|     def create_multi_box(self, boxes): | ||||
|         box = QtGui.QWidget() | ||||
|         hl = QtGui.QHBoxLayout() | ||||
|         for b in boxes: | ||||
|             hl.addWidget(b) | ||||
|         box.setLayout(hl) | ||||
|         return box | ||||
| 
 | ||||
|     def add_tab(self, layout, name): | ||||
|         widget = QtGui.QWidget() | ||||
|         scrollA = QtGui.QScrollArea() | ||||
|         scrollA.setWidgetResizable(True) | ||||
|         scrollA.setWidget(widget) | ||||
| 
 | ||||
|         widget.setLayout(layout) | ||||
|          | ||||
|         self.tabs.addTab(scrollA, name) | ||||
| 
 | ||||
|     def add_main_parameters_tab(self): | ||||
| 
 | ||||
|         vb_layout = QtGui.QVBoxLayout() | ||||
|         vb_layout.addWidget(self.gen_headline('Directories')) | ||||
|         vb_layout.addLayout(self.init_boxes(self.ap.get_main_para_names())) | ||||
|         vb_layout.addWidget(self.gen_h_seperator()) | ||||
|          | ||||
|         vb_layout.addWidget(self.gen_headline('NLLoc')) | ||||
|         vb_layout.addLayout(self.init_boxes(self.ap.get_nlloc_para_names())) | ||||
|         vb_layout.addWidget(self.gen_h_seperator()) | ||||
|          | ||||
|         vb_layout.addWidget(self.gen_headline('Seismic Moment')) | ||||
|         vb_layout.addLayout(self.init_boxes(self.ap.get_seis_moment_para_names())) | ||||
|         vb_layout.addWidget(self.gen_h_seperator()) | ||||
|          | ||||
|         vb_layout.addWidget(self.gen_headline('Focal Mechanism')) | ||||
|         vb_layout.addLayout(self.init_boxes(self.ap.get_focmec_para_names())) | ||||
|         vb_layout.addWidget(self.gen_h_seperator()) | ||||
|          | ||||
|         vb_layout.addWidget(self.gen_headline('Pick Settings')) | ||||
|         vb_layout.addLayout(self.init_boxes(self.ap.get_common_pick_names())) | ||||
|          | ||||
|         self.add_tab(vb_layout, 'Main Settings') | ||||
| 
 | ||||
|     def gen_h_seperator(self): | ||||
|         seperator = QtGui.QFrame() | ||||
|         seperator.setFrameShape(QtGui.QFrame.HLine) | ||||
|         return seperator | ||||
| 
 | ||||
|     def gen_headline(self, text): | ||||
|         label=QtGui.QLabel(text) | ||||
|         font=QtGui.QFont() | ||||
|         font.setBold(True) | ||||
|         label.setFont(font) | ||||
|         return label | ||||
|          | ||||
|     def add_special_pick_parameters_tab(self): | ||||
|         grid = self.init_boxes(self.ap.get_special_pick_names()) | ||||
|         self.add_tab(grid, 'Advanced Settings') | ||||
|          | ||||
|          | ||||
| class ParametersTab(PropTab): | ||||
|     def __init__(self, parent=None, infile=None): | ||||
|         super(ParametersTab, self).__init__(parent) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user