def __init__(self): super(NoiseFrame, self).__init__() self.setupUi(self) self.setWindowTitle('Seismic Ambient Noise') self.setWindowIcon(pqg.QIcon(':\icons\map-icon.png')) # Settings dialog self.settings_dialog = SettingsDialogNoise(self) # Parameters settings self.parameters = ParametersSettings() # Create tabs and add them to tabWidget # TODO: sharing parameters and settings this way. Should they be shared? # Or they are only specific to EGFFrame? self.egf_frame = EGFFrame(self.parameters, self.settings_dialog) self.ft_frame = FrequencyTimeFrame() self.tabWidget.addTab(self.egf_frame, 'EGFs') self.tabWidget.addTab(self.ft_frame, 'Frequency Time Analysis') # Help Documentation self.help = HelpDoc() # Actions self.actionSet_Parameters.triggered.connect( self.open_parameters_settings) self.actionOpen_Settings.triggered.connect(self.settings_dialog.show) # Shortcuts self.shortcut_open = pw.QShortcut(pqg.QKeySequence('Ctrl+L'), self) self.shortcut_open.activated.connect(self.open_parameters_settings)
def __init__(self, parent=None): super(PPSDsGeneratorDialog, self).__init__(parent) self.setupUi(self) self.inventory = {} self.ppsds = None self.progressbar = pw.QProgressDialog(self) self.progressbar.setWindowTitle('PPSD Running') self.progressbar.setLabelText(" Computing PPSDs ") self.progressbar.setWindowIcon(pqg.QIcon(':\icons\map-icon.png')) self.progressbar.close() # Binding self.root_path_bind = BindPyqtObject(self.rootPathForm) self.dataless_path_bind = BindPyqtObject(self.datalessPathForm, self.onChange_metadata_path) # Bind buttons self.selectDirBtn.clicked.connect( lambda: self.on_click_select_directory(self.root_path_bind)) self.datalessBtn.clicked.connect( lambda: self.on_click_select_metadata_file(self.dataless_path_bind )) # Action Buttons self.processBtn.clicked.connect( lambda: self._ppsd_thread(self.process_ppsds)) self.continueBtn.clicked.connect( lambda: self._ppsd_thread(self.ppsd_continue)) self.saveBtn.clicked.connect(lambda: self.saveDB()) self.loadBtn.clicked.connect(lambda: self.load_ppsd_db()) #self.load_metadataBtn.clicked.connect(lambda: self.load_metadata()) self.add_dataBtn.clicked.connect(lambda: self.add_data())
def __init__(self, parameters, settings): super(EGFFrame, self).__init__() self.setupUi(self) self.parameters = parameters self.settings_dialog = settings self.progressbar = pw.QProgressDialog(self) self.progressbar.setWindowTitle('Ambient Noise Tomography') self.progressbar.setLabelText(" Computing ") self.progressbar.setWindowIcon(pqg.QIcon(':\icons\map-icon.png')) self.progressbar.close() self.inventory = {} self.files = [] self.total_items = 0 self.items_per_page = 1 self.__dataless_manager = None self.__metadata_manager = None self.st = None self.output = None self.root_path_bind = BindPyqtObject(self.rootPathForm, self.onChange_root_path) self.root_path_bind2 = BindPyqtObject(self.rootPathForm2, self.onChange_root_path) self.metadata_path_bind = BindPyqtObject(self.datalessPathForm, self.onChange_metadata_path) self.updateBtn.clicked.connect(self.plot_egfs) self.output_bind = BindPyqtObject(self.outPathForm, self.onChange_root_path) self.pagination = Pagination(self.pagination_widget, self.total_items, self.items_per_page) self.pagination.set_total_items(0) self.canvas = MatplotlibCanvas(self.plotMatWidget, nrows=self.items_per_page, constrained_layout=False) self.canvas.set_xlabel(0, "Time (s)") self.canvas.figure.tight_layout() # Bind buttons self.readFilesBtn.clicked.connect(lambda: self.get_now_files()) self.selectDirBtn.clicked.connect( lambda: self.on_click_select_directory(self.root_path_bind)) self.selectDirBtn2.clicked.connect( lambda: self.on_click_select_directory(self.root_path_bind2)) self.metadata_path_bind = BindPyqtObject(self.datalessPathForm, self.onChange_metadata_path) self.selectDatalessDirBtn.clicked.connect( lambda: self.on_click_select_file(self.metadata_path_bind)) self.outputBtn.clicked.connect( lambda: self.on_click_select_directory(self.output_bind)) self.preprocessBtn.clicked.connect(self.run_preprocess) self.cross_stackBtn.clicked.connect(self.stack) self.mapBtn.clicked.connect(self.map)
def __init__(self, parent: pw.QWidget = None): super(SyntheticsAnalisysFrame, self).__init__(parent) self.setupUi(self) ParentWidget.set_parent(parent, self) self.setWindowTitle('Synthetics Analysis Frame') self.setWindowIcon(pqg.QIcon(':\icons\pen-icon.png')) #Initialize parametrs for plot rotation self._z = {} self._r = {} self._t = {} self._st = {} self.inventory = {} parameters = {} self._generator = SyntheticsGeneratorDialog(self) # 3C_Component self.focmec_canvas = FocCanvas(self.widget_fp) self.canvas = MatplotlibCanvas(self.plotMatWidget_3C) self.canvas.set_new_subplot(3, ncols=1) # Map self.cartopy_canvas = CartopyCanvas(self.map_widget) # binds self.root_path_bind_3C = BindPyqtObject(self.rootPathForm_3C, self.onChange_root_path_3C) self.vertical_form_bind = BindPyqtObject(self.verticalQLineEdit) self.north_form_bind = BindPyqtObject(self.northQLineEdit) self.east_form_bind = BindPyqtObject(self.eastQLineEdit) self.generation_params_bind = BindPyqtObject(self.paramsPathLineEdit) # accept drops self.vertical_form_bind.accept_dragFile(drop_event_callback=self.drop_event) self.north_form_bind.accept_dragFile(drop_event_callback=self.drop_event) self.east_form_bind.accept_dragFile(drop_event_callback=self.drop_event) self.generation_params_bind.accept_dragFile(drop_event_callback=self.drop_event) self.paramsPathLineEdit.textChanged.connect(self._generationParamsChanged) # Add file selector to the widget self.file_selector = FilesView(self.root_path_bind_3C.value, parent=self.fileSelectorWidget) self.file_selector.setDragEnabled(True) self.selectDirBtn_3C.clicked.connect(self.on_click_select_directory_3C) self.plotBtn.clicked.connect(self.on_click_rotate) ### self.stationsBtn.clicked.connect(self.stationsInfo) ### self.actionGenerate_synthetics.triggered.connect(lambda : self._generator.show())
def __init__(self): super(RealTimeFrame, self).__init__() self.setupUi(self) self.setWindowIcon(pqg.QIcon(':\\icons\\map-icon.png')) self.widget_map = None self.settings_dialog = SettingsDialog(self) self.inventory = {} self.files = [] self.events_times = [] self.total_items = 0 self.items_per_page = 1 self.__dataless_manager = None self.__metadata_manager = None self.st = None self.client = None self.stations_available = [] self.data_dict = {} self.dataless_not_found = set( ) # a set of mseed files that the dataless couldn't find. self.metadata_path_bind = BindPyqtObject(self.datalessPathForm, self.onChange_metadata_path) self.canvas = MatplotlibCanvas(self.plotMatWidget, nrows=self.numTracesCB.value(), constrained_layout=False) self.canvas.figure.tight_layout() self.timer_outdated = pyc.QTimer() self.timer_outdated.setInterval(1000) # 1 second self.timer_outdated.timeout.connect(self.outdated_stations) # Binding self.root_path_bind = BindPyqtObject(self.rootPathForm) self.dataless_path_bind = BindPyqtObject(self.datalessPathForm) # Bind self.selectDirBtn.clicked.connect( lambda: self.on_click_select_directory(self.root_path_bind)) #self.selectDatalessDirBtn.clicked.connect(lambda: self.on_click_select_directory(self.dataless_path_bind)) self.metadata_path_bind = BindPyqtObject(self.datalessPathForm, self.onChange_metadata_path) self.selectDatalessDirBtn.clicked.connect( lambda: self.on_click_select_metadata_file(self.metadata_path_bind )) self.actionSet_Parameters.triggered.connect( lambda: self.open_parameters_settings()) self.mapBtn.clicked.connect(self.show_map) # self.__metadata_manager = MetadataManager(self.dataless_path_bind.value) self.actionSet_Parameters.triggered.connect( lambda: self.open_parameters_settings()) self.actionArray_Anlysis.triggered.connect(self.open_array_analysis) self.actionMoment_Tensor_Inversion.triggered.connect( self.open_moment_tensor) self.actionTime_Frequency_Analysis.triggered.connect( self.time_frequency_analysis) self.actionReceiver_Functions.triggered.connect( self.open_receiver_functions) self.actionOpen_Settings.triggered.connect( lambda: self.settings_dialog.show()) self.actionOpen_Help.triggered.connect(lambda: self.open_help()) self.RetrieveBtn.clicked.connect(self.retrieve_data) self.stopBtn.clicked.connect(self.stop) # Parameters settings self.parameters = ParametersSettings() # Earth Model Viewer self.earthmodel = EarthModelViewer() # help Documentation self.help = HelpDoc()
def __init__(self): super(EventLocationFrame, self).__init__() self.setupUi(self) self.setWindowTitle('Events Location') self.setWindowIcon(pqg.QIcon(':\icons\compass-icon.png')) self.cb = None el_columns = [getattr(EventLocationModel, c) for c in EventLocationModel.__table__.columns.keys()[1:]] fp_columns = [getattr(FirstPolarityModel, c) for c in FirstPolarityModel.__table__.columns.keys()[2:]] mti_columns = [getattr(MomentTensorModel, c) for c in MomentTensorModel.__table__.columns.keys()[2:]] columns = [*el_columns, *fp_columns, *mti_columns] col_names = ['Origin Time', 'Transformation', 'RMS', 'Latitude', 'Longitude', 'Depth', 'Uncertainty', 'Max. Hor. Error', 'Min. Hor. Error', 'Ellipse Az.', 'No. Phases', 'Az. Gap', 'Max. Dist.', 'Min. Dist.', 'Mb', 'Mb Error', 'Ms', 'Ms Error', 'Ml', 'Ml Error', 'Mw', 'Mw Error', 'Mc', 'Mc Error', 'Strike', 'Dip', 'Rake', 'Misfit', 'Az. Gap', 'Stat. Pol. Count', 'Latitude_mti', 'Longitude_mti', 'Depth_mti', 'VR', 'CN', 'dc', 'clvd', 'iso', 'Mw_mt', 'Mo', 'Strike_mt', 'dip_mt', 'rake_mt', 'mrr', 'mtt', 'mpp', 'mrt', 'mrp', 'mtp'] entities = [EventLocationModel, FirstPolarityModel, MomentTensorModel] self.model = SQLAlchemyModel(entities, columns, col_names, self) self.model.addJoinArguments(EventLocationModel.first_polarity, isouter=True) self.model.addJoinArguments(EventLocationModel.moment_tensor, isouter=True) self.model.revertAll() sortmodel = pyc.QSortFilterProxyModel() sortmodel.setSourceModel(self.model) self.tableView.setModel(sortmodel) self.tableView.setSortingEnabled(True) self.tableView.sortByColumn(0, qt.AscendingOrder) self.tableView.setSelectionBehavior(pw.QAbstractItemView.SelectRows) self.tableView.setContextMenuPolicy(qt.ActionsContextMenu) remove_action = pw.QAction("Remove selected location(s)", self) remove_action.triggered.connect(self._onRemoveRowsTriggered) self.tableView.addAction(remove_action) self.tableView.setItemDelegateForColumn(0, DateTimeFormatDelegate('dd/MM/yyyy hh:mm:ss.zzz')) self.tableView.resizeColumnsToContents() self.tableView.doubleClicked.connect(self._plot_foc_mec) valLat = MinMaxValidator(self.minLat, self.maxLat) valLon = MinMaxValidator(self.minLon, self.maxLon) valDepth = MinMaxValidator(self.minDepth, self.maxDepth) valMag = MinMaxValidator(self.minMag, self.maxMag) valOrig = MinMaxValidator(self.minOrig, self.maxOrig, 'dateTimeChanged', 'dateTime') self._validators = [valLat, valLon, valDepth, valMag, valOrig] for validator in self._validators: validator.validChanged.connect(self._checkQueryParameters) self.minOrig.setDisplayFormat('dd/MM/yyyy hh:mm:ss.zzz') self.maxOrig.setDisplayFormat('dd/MM/yyyy hh:mm:ss.zzz') self.actionRead_hyp_folder.triggered.connect(self._readHypFolder) self.actionRead_last_location.triggered.connect(self._readLastLocation) self.btnRefreshQuery.clicked.connect(self._refreshQuery) self.btnShowAll.clicked.connect(self._showAll) self.PlotMapBtn.clicked.connect(self.__plot_map)