def OnRenameObject(self, event): (node_type, node_main_info, node_extra_info) = self.popup_obj OM = ObjectManager() obj = OM.get(node_main_info) UIM = UIManager() dlg = UIM.create('dialog_controller', title='Rename object') # try: ctn_details = dlg.view.AddCreateContainer('StaticBox', label='Object details', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, label='Name: ' + obj.name) # dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, label='Type id: ' + obj.tid) dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, label='Object id: ' + str(obj.oid)) # ctn_new_name = dlg.view.AddCreateContainer('StaticBox', label='New name', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddTextCtrl(ctn_new_name, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, widget_name='new_name', initial=obj.name) # dlg.view.SetSize((300, 330)) answer = dlg.view.ShowModal() # if answer == wx.ID_OK: results = dlg.get_results() new_name = results.get('new_name') obj.name = new_name UIM = UIManager() controller = UIM.get(self._controller_uid) controller.reload_object_node(obj.uid) except Exception as e: print('\nERROR OnRenameObject:', e) raise finally: UIM.remove(dlg.uid)
def on_page_close(self, event): panel = self._notebook.GetPage(event.GetSelection()) # Remove page without destruct self.remove_notebook_page(panel) # Remove from UIManager with Window destruction UIM = UIManager() UIM.remove(panel._controller_uid) # Line below must exist in order to prevent SystemError wx.CallAfter(self.adjust_background_panel)
def OnUnitConvert(self, event): (node_type, node_main_info, node_extra_info) = self.popup_obj OM = ObjectManager() obj = OM.get(node_main_info) try: unit = uom.get_unit(obj.unit) dim = uom.get_unit_dimension(unit.dimension) qc = uom.get_quantity_class(dim.name) UNITS_OPTIONS = OrderedDict() for mu in qc.memberUnit: UNITS_OPTIONS[mu] = mu except: msg = 'Unit ' + obj.unit + ' cannot be converted.' wx.MessageBox(msg, 'Warning', wx.OK | wx.ICON_WARNING) return # UIM = UIManager() dlg = UIM.create('dialog_controller', title='Unit conversion') # try: ctn_details = dlg.view.AddCreateContainer('StaticBox', label='Object details', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, label='Name: ' + obj.name) # dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, label='Type id: ' + obj.tid) dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, label='Object id: ' + str(obj.oid)) dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, label='Current unit: ' + obj.unit) # ctn_new_unit = dlg.view.AddCreateContainer('StaticBox', label='New unit', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddChoice(ctn_new_unit, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, widget_name='new_unit', options=UNITS_OPTIONS) # dlg.view.SetSize((300, 330)) answer = dlg.view.ShowModal() # if answer == wx.ID_OK: results = dlg.get_results() new_unit_name = results.get('new_unit') new_data = uom.convert(obj.data, obj.unit, new_unit_name) obj._data = new_data obj.unit = new_unit_name # UIM = UIManager() # controller = UIM.get(self._controller_uid) # controller.reload_object(obj.uid) except Exception: pass finally: UIM.remove(dlg.uid)
def deactivatePlugin(self): if not self.is_activated: return if self._menu_item_uid: log.debug('Plugin {} will try to remove itself from Menu'.format( self.name)) _UIM = UIManager() _UIM.remove(self._menu_item_uid) self._menu_item_uid = None log.debug('Plugin {} was removed from Menu'.format(self.name)) self.plugin_object.deactivate() log.debug('Deactivated plugin: {}'.format(self.name))
def remove_selected_tracks(self): """ Remove selected :class:`~GRIPy-3.ui.mvc_classes.TrackController` on :class:`WellPlot`. """ UIM = UIManager() selected_tracks = UIM.exec_query('track_controller', self.uid, 'selected=True', orderby='pos', reverse=True) for track in selected_tracks: UIM.remove(track.uid)
def create_properties_dialog(obj_uid, size=None): if not size: size = (300, 330) UIM = UIManager() try: dlg = UIM.create('object_properties_dialog_controller') # print(dlg) dlg.obj_uid = obj_uid dlg.view.SetSize(size) dlg.view.ShowModal() except Exception as e: print('\nERROR create_properties_dialog:', e) raise finally: UIM.remove(dlg.uid)
def _set_float_mode(self, new_value, old_value): UIM = UIManager() controller = UIM.get(self._controller_uid) parent_uid = UIM._getparentuid(controller.uid) if new_value: controller.unsubscribe(self._set_title, 'change.title') controller.unsubscribe(self._set_pos, 'change.pos') fc = UIM.create('frame_controller', parent_uid, title=controller.title) UIM.reparent(self._controller_uid, fc.uid) fc.view.Show() else: mwc_uid = UIM._getparentuid(parent_uid) mwc = UIM.get(mwc_uid) UIM.reparent(self._controller_uid, mwc.uid) UIM.remove(parent_uid) controller.subscribe(self._set_title, 'change.title') controller.subscribe(self._set_pos, 'change.pos')
def on_change_plottype(self, new_value, old_value): UIM = UIManager() repr_ctrl = self.get_representation() label = self.get_label() # if repr_ctrl: UIM.remove(repr_ctrl.uid) if label: label.destroy() # if new_value is not None: repr_tid = _PLOTTYPES_REPRESENTATIONS.get(new_value) try: # track_ctrl_uid = UIM._getparentuid(self.uid) track_ctrl = UIM.get(track_ctrl_uid) # if not track_ctrl.overview: label = track_ctrl._append_track_label( toc_uid=track_ctrl_uid ) # data_obj = self.get_data_object() label.set_title(data_obj.name) label.set_subtitle(data_obj.datatype) # self._label = label # else: self._label = None # # TODO: rever linha abaixo state = self._get_log_state() repr_ctrl = UIM.create(repr_tid, self.uid, **state) repr_ctrl.draw() # except Exception as e: print ('ERROR on_change_plottype', e) self.plottype = None raise
def GrainEntry(self): UIM = UIManager() dlg = UIM.create('dialog_controller', title='Rock creator') cont_grain = dlg.view.AddCreateContainer('StaticBox', label='Grain Parts', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) cont_matr = dlg.view.AddCreateContainer('StaticBox', label='Matrix Parts', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) json_file = '\\Temp\\min.json' # fullpath_json = 'C:\\Users\\rtabelini\\Documents\\Github\\GRIPy'+json_file fullpath_json = cwd() + json_file dictmin = app.app_utils.read_json_file(fullpath_json) def on_change_mineral(name, old_value, new_value, **kwargs): print('new\n', name, new_value, new_value['name'], dictmin.iterkeys()) if name == 'mineralgrain': textctrl_k = dlg.view.get_object('kmod1') textctrl_g = dlg.view.get_object('gmod1') textctrl_rho = dlg.view.get_object('dens1') elif name == 'mineralmatrix': textctrl_k = dlg.view.get_object('kmod2') textctrl_g = dlg.view.get_object('gmod2') textctrl_rho = dlg.view.get_object('dens2') if new_value['name'] in dictmin.iterkeys(): textctrl_k.set_value(new_value['K']) textctrl_g.set_value(new_value['G']) textctrl_rho.set_value(new_value['Dens']) dlg.view.AddChoice(cont_grain, widget_name='mineralgrain', options=dictmin, flag=wx.EXPAND) choice_grain = dlg.view.get_object('mineralgrain') choice_grain.set_trigger(on_change_mineral) dlg.view.AddChoice(cont_matr, widget_name='mineralmatrix', options=dictmin, flag=wx.EXPAND) choice_matrix = dlg.view.get_object('mineralmatrix') choice_matrix.set_trigger(on_change_mineral) gr_frac = dlg.view.AddCreateContainer('BoxSizer', cont_grain, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(gr_frac, proportion=1, initial='Fraction ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(gr_frac, proportion=1, widget_name='frac1', initial='0.8', flag=wx.ALIGN_RIGHT) gr_poro = dlg.view.AddCreateContainer('BoxSizer', cont_grain, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(gr_poro, proportion=1, initial='Porosity ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(gr_poro, proportion=1, widget_name='poro1', initial='0.20', flag=wx.ALIGN_RIGHT) gr_kmod = dlg.view.AddCreateContainer('BoxSizer', cont_grain, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(gr_kmod, proportion=1, widget_name='K_Modulus', initial='K Modulus (GPa) ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(gr_kmod, proportion=1, widget_name='kmod1', initial='36.5', flag=wx.ALIGN_RIGHT) gr_gmod = dlg.view.AddCreateContainer('BoxSizer', cont_grain, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(gr_gmod, proportion=1, widget_name='G_Modulus', initial='G Modulus (GPa) ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(gr_gmod, proportion=1, widget_name='gmod1', initial='78.6', flag=wx.ALIGN_RIGHT) gr_dens = dlg.view.AddCreateContainer('BoxSizer', cont_grain, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(gr_dens, proportion=1, widget_name='Density', initial='Density (g/cc) ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(gr_dens, proportion=1, widget_name='dens1', initial='2.65', flag=wx.ALIGN_RIGHT) mtr_frac = dlg.view.AddCreateContainer('BoxSizer', cont_matr, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(mtr_frac, proportion=1, widget_name='fraction2', initial='Fraction ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(mtr_frac, proportion=1, widget_name='frac2', initial='0.2', flag=wx.ALIGN_LEFT) mtr_poro = dlg.view.AddCreateContainer('BoxSizer', cont_matr, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(mtr_poro, proportion=1, initial='Porosity ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(mtr_poro, proportion=1, widget_name='poro2', initial='0.10', flag=wx.ALIGN_RIGHT) mtr_kmod = dlg.view.AddCreateContainer('BoxSizer', cont_matr, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(mtr_kmod, proportion=1, widget_name='K_Modulus2', initial='K Modulus (GPa) ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(mtr_kmod, proportion=1, widget_name='kmod2', initial='36.5', flag=wx.ALIGN_LEFT) mtr_gmod = dlg.view.AddCreateContainer('BoxSizer', cont_matr, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(mtr_gmod, proportion=1, widget_name='G_Modulus2', initial='G Modulus (GPa) ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(mtr_gmod, proportion=1, widget_name='gmod2', initial='78.6', flag=wx.ALIGN_LEFT) mtr_dens = dlg.view.AddCreateContainer('BoxSizer', cont_matr, orient=wx.HORIZONTAL, proportion=1, flag=wx.EXPAND | wx.ALL, border=5) dlg.view.AddStaticText(mtr_dens, proportion=1, widget_name='Density2', initial='Density (g/cc) ', flag=wx.ALIGN_RIGHT) dlg.view.AddTextCtrl(mtr_dens, proportion=1, widget_name='dens2', initial='2.65', flag=wx.ALIGN_LEFT) # try: if dlg.view.ShowModal() == wx.ID_OK: results = dlg.get_results() gr_f = results.get('frac1') mtr_f = results.get('frac2') ngrain = results.get('mineralgrain')['name'] nmatrix = results.get('mineralmatrix')['name'] gr_phi = results.get('poro1') gr_k = results.get('kmod1') gr_mi = results.get('gmod1') gr_rho = results.get('dens1') mtr_phi = results.get('poro2') mtr_k = results.get('kmod2') mtr_mi = results.get('gmod2') mtr_rho = results.get('dens2') # kk = RP.VRHill (gr_k, gr_f, mtr_k) # g = RP.VRHill (gr_mi, gr_f, mtr_mi) print('\ngrd', gr_k, gr_f, mtr_k, type(float(mtr_k))) rocktype = self.OM.new( 'rocktype', fracgrain=gr_f, fracmatrix=mtr_f, grain=ngrain, matrix=nmatrix, k=10, mi=20) #vp=vp, vs=vs, rho = rho, k=k, mi=mi, poi=poi return rocktype except Exception as e: print('ERROR:', str(e)) finally: UIM.remove(dlg.uid)
def _remove_object_helper(self, *args, **kwargs): UIM = UIManager() UIM.remove(args[0])
def do_STFT(*args, **kwargs): toc = kwargs.get('toc') if not toc: raise Exception('Trabalhando somente com o TrackObjectController.') # OM = ObjectManager() UIM = UIManager() dlg = UIM.create('dialog_controller', title='Short Time Fourier Transform') # try: ctn_spec_type = dlg.view.AddCreateContainer('StaticBox', label='Spectrogram type', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddChoice(ctn_spec_type, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, widget_name='spectrogram_type', options=SPECGRAM_TYPES) # ctn_win_size = dlg.view.AddCreateContainer( 'StaticBox', label='Window size (samples)', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddSpinCtrl(ctn_win_size, proportion=0, flag=wx.EXPAND, widget_name='window_size', max=1024, initial=256) # ctn_overlap_size = dlg.view.AddCreateContainer( 'StaticBox', label='Overlap size (samples)', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddSpinCtrl(ctn_overlap_size, proportion=0, flag=wx.EXPAND, widget_name='noverlap', max=512, initial=128) # dlg.view.SetSize((230, 260)) result = dlg.view.ShowModal() # if result == wx.ID_OK: results = dlg.get_results() if results.get('spectrogram_type'): # print('\ndo_STFT:', toc.get_data_object_uid()) # di_uid, di_data = toc.get_last_dimension_index() data_index = OM.get(di_uid) unit = uom.get_unit(data_index.unit) dim = uom.get_unit_dimension(unit.dimension) print(unit.dimension, dim, dim.name) if dim.name == 'time': print('\nConvertendo {} de {} para {}.'.format( dim.name, data_index.unit, 's')) di_data = uom.convert(di_data, data_index.unit, 's') elif dim.name == 'length': print('\nConvertendo {} de {} para {}.'.format( dim.name, data_index.unit, 'm')) di_data = uom.convert(di_data, data_index.unit, 'm') else: print('\nNao converteu') # new_data = uom.convert(obj.data, obj.unit, new_unit_name) # start_value = di_data[0] step_value = di_data[1] - di_data[0] # print('start_value: {} - step_value: {}'.format( start_value, step_value)) # dm_data = toc.get_filtered_data() # # STFT(x, window_size, noverlap, time_start, Ts, mode='psd'): # print('start_value, step_value:', start_value, step_value) spec_type = results.get('spectrogram_type') stft_data, freq_values, index_values = STFT( dm_data, results.get('window_size'), results.get('noverlap'), start_value, step_value, mode=spec_type) # freq_values *= 1000 # # print ('\n\nRetornou') data_out = np.zeros((len(di_data), len(freq_values))) stft_index_step = index_values[1] - index_values[0] stft_index_start = index_values[0] - (stft_index_step / 2) stft_index_end = index_values[-1] + (stft_index_step / 2) # # print('Orig shape:', dm_data.shape) # print('Freq Index Shape:', len(freq_values), len(index_values), stft_data.shape) # print('Freqs:', np.nanmin(freq_values), np.nanmax(freq_values)) # print('Indexes:', index_values) # # print ('\n\n', stft_index_start, stft_index_end) for idx, time in enumerate(di_data): if time >= stft_index_start and time < stft_index_end: stft_index_idx = int( (time - stft_index_start) // stft_index_step) # print(idx, time, stft_index_start, stft_index_step, stft_index_idx) data_out[idx] = stft_data[stft_index_idx] # print '\n\n' data_out = data_out.T # print() # print('data_out.shape:', data_out.shape) # print() # if spec_type == 'PHASE': spec_type = 'PHASE_UNWRAPPED' elif spec_type == 'ANGLE': spec_type = 'PHASE' # spectogram = OM.new('spectogram', data_out, name=toc.get_data_name() + '_STFT', datatype=results.get('spectrogram_type')) if not OM.add(spectogram, toc.get_data_object_uid()): msg = 'Object was not added. tid={\'spectogram\'}' raise Exception(msg) # freq_index = OM.new('data_index', freq_values, name='Frequency', unit='Hz', datatype='FREQUENCY') if not OM.add(freq_index, spectogram.uid): raise Exception('Frequency Index was not added.') # spectogram._create_data_index_map([freq_index.uid], [di_uid]) except Exception as e: print('ERROR:', e) # pass finally: UIM.remove(dlg.uid)
def do_CWT(*args, **kwargs): toc = kwargs.get('toc') if not toc: raise Exception('Trabalhando somente com o TrackObjectController.') # # obj = args[0] UIM = UIManager() dlg = UIM.create('dialog_controller', title='Continuous Wavelet Transform') # try: ctn_wavelet = dlg.view.AddCreateContainer('StaticBox', label='Wavelet', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddChoice(ctn_wavelet, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, widget_name='wavelet', options=WAVELET_TYPES) # ctn_scale_res = dlg.view.AddCreateContainer('StaticBox', label='Scale resolution', orient=wx.VERTICAL, proportion=0, flag=wx.EXPAND | wx.TOP, border=5) dlg.view.AddTextCtrl(ctn_scale_res, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, widget_name='dj', initial='0.125') # dlg.view.SetSize((230, 260)) result = dlg.view.ShowModal() if result == wx.ID_OK: results = dlg.get_results() print(results) dj = None try: dj = float(results.get('dj')) except: pass if dj is None: return wavelet = results.get('wavelet') if wavelet == 'morlet': func = MorletWavelet() elif wavelet == 'ricker': func = RickerWavelet() elif wavelet == 'dog3': func = DOGWavelet(m=3) elif wavelet == 'dog4': func = DOGWavelet(m=4) elif wavelet == 'dog5': func = DOGWavelet(m=5) elif wavelet == 'dog6': func = DOGWavelet(m=6) elif wavelet == 'paul2': func = PaulWavelet(m=2) elif wavelet == 'paul3': func = PaulWavelet(m=3) elif wavelet == 'paul4': func = PaulWavelet(m=4) elif wavelet == 'paul5': func = PaulWavelet(m=5) elif wavelet == 'paul6': func = PaulWavelet(m=6) else: raise Exception() # TODO: Rever tudo isso abaixo valid_data = obj.data[np.isfinite(obj.data)] valid_index_data = obj.get_indexes().data[np.isfinite(obj.data)] # wt = WaveletTransform(valid_data, dj=dj, wavelet=func, dt=obj.step, time=valid_index_data) # OM = ObjectManager() seismic = OM.new('scalogram', wt.wavelet_power, name=obj.name + '_CWT', unit='m', domain='depth', sample_rate=wt.time[1] - wt.time[0], datum=wt.time[0], samples=len(wt.time), frequencies=wt.fourier_frequencies, periods=wt.fourier_periods, scales=wt.scales) OM.add(seismic) print(wt.wavelet_transform.shape) # except Exception: pass finally: UIM.remove(dlg.uid)