Merge branch 'develop' of ariadne.geophysik.ruhr-uni-bochum.de:/data/git/pylot into develop
This commit is contained in:
		
						commit
						d8a764db31
					
				| @ -43,7 +43,7 @@ from obspy import UTCDateTime | ||||
| from pylot.core.io.data import Data | ||||
| from pylot.core.io.inputs import FilterOptions, AutoPickParameter | ||||
| from pylot.core.pick.autopick import autopickevent | ||||
| from pylot.core.io.phases import picks_from_evt | ||||
| from pylot.core.io.phases import picks_to_dict | ||||
| from pylot.core.loc.nll import locate as locateNll | ||||
| from pylot.core.util.defaults import FILTERDEFAULTS, COMPNAME_MAP,\ | ||||
|     AUTOMATIC_DEFAULTS | ||||
| @ -735,7 +735,7 @@ class MainWindow(QMainWindow): | ||||
|         return rval | ||||
| 
 | ||||
|     def updatePicks(self, type='manual'): | ||||
|         picks = picks_from_evt(evt=self.getData().getEvtData()) | ||||
|         picks = picks_to_dict(evt=self.getData().getEvtData()) | ||||
|         if type == 'manual': | ||||
|             self.picks.update(picks) | ||||
|         elif type == 'auto': | ||||
|  | ||||
							
								
								
									
										66
									
								
								autoPyLoT.py
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								autoPyLoT.py
									
									
									
									
									
								
							| @ -55,15 +55,15 @@ def autoPyLoT(inputfile): | ||||
|     # getting information on data structure | ||||
| 
 | ||||
|     if parameter.hasParam('datastructure'): | ||||
|         datastructure = DATASTRUCTURE[parameter.getParam('datastructure')]() | ||||
|         dsfields = {'root': parameter.getParam('rootpath'), | ||||
|                     'dpath': parameter.getParam('datapath'), | ||||
|                     'dbase': parameter.getParam('database')} | ||||
|         datastructure = DATASTRUCTURE[parameter.get('datastructure')]() | ||||
|         dsfields = {'root': parameter.get('rootpath'), | ||||
|                     'dpath': parameter.get('datapath'), | ||||
|                     'dbase': parameter.get('database')} | ||||
| 
 | ||||
|         exf = ['root', 'dpath', 'dbase'] | ||||
| 
 | ||||
|         if parameter.hasParam('eventID'): | ||||
|             dsfields['eventID'] = parameter.getParam('eventID') | ||||
|             dsfields['eventID'] = parameter.get('eventID') | ||||
|             exf.append('eventID') | ||||
| 
 | ||||
|         datastructure.modifyFields(**dsfields) | ||||
| @ -73,20 +73,20 @@ def autoPyLoT(inputfile): | ||||
|         if parameter.hasParam('nllocbin'): | ||||
|             locflag = 1 | ||||
|             # get NLLoc-root path | ||||
|             nllocroot = parameter.getParam('nllocroot') | ||||
|             nllocroot = parameter.get('nllocroot') | ||||
|             # get path to NLLoc executable | ||||
|             nllocbin = parameter.getParam('nllocbin') | ||||
|             nllocbin = parameter.get('nllocbin') | ||||
|             nlloccall = '%s/NLLoc' % nllocbin | ||||
|             # get name of phase file | ||||
|             phasef = parameter.getParam('phasefile') | ||||
|             phasef = parameter.get('phasefile') | ||||
|             phasefile = '%s/obs/%s' % (nllocroot, phasef) | ||||
|             # get name of NLLoc-control file | ||||
|             ctrf = parameter.getParam('ctrfile') | ||||
|             ctrf = parameter.get('ctrfile') | ||||
|             ctrfile = '%s/run/%s' % (nllocroot, ctrf) | ||||
|             # pattern of NLLoc ttimes from location grid | ||||
|             ttpat = parameter.getParam('ttpatter') | ||||
|             ttpat = parameter.get('ttpatter') | ||||
|             # pattern of NLLoc-output file | ||||
|             nllocoutpatter = parameter.getParam('outpatter') | ||||
|             nllocoutpatter = parameter.get('outpatter') | ||||
|             maxnumit = 3  # maximum number of iterations for re-picking | ||||
|         else: | ||||
|             locflag = 0 | ||||
| @ -140,10 +140,10 @@ def autoPyLoT(inputfile): | ||||
|                             # get latest NLLoc-location file if several are available | ||||
|                             nllocfile = max(glob.glob(locsearch), key=os.path.getctime) | ||||
|                             # calculating seismic moment Mo and moment magnitude Mw | ||||
|                             finalpicks = M0Mw(wfdat, None, None, parameter.getParam('iplot'), \ | ||||
|                                               nllocfile, picks, parameter.getParam('rho'), \ | ||||
|                                               parameter.getParam('vp'), parameter.getParam('Qp'), \ | ||||
|                                               parameter.getParam('invdir')) | ||||
|                             finalpicks = M0Mw(wfdat, None, None, parameter.get('iplot'), \ | ||||
|                                               nllocfile, picks, parameter.get('rho'), \ | ||||
|                                               parameter.get('vp'), parameter.get('Qp'), \ | ||||
|                                               parameter.get('invdir')) | ||||
|                         else: | ||||
|                             print("autoPyLoT: No NLLoc-location file available!") | ||||
|                             print("No source parameter estimation possible!") | ||||
| @ -182,10 +182,10 @@ def autoPyLoT(inputfile): | ||||
|                                     nlloccounter = maxnumit | ||||
| 
 | ||||
|                             # calculating seismic moment Mo and moment magnitude Mw | ||||
|                             finalpicks = M0Mw(wfdat, None, None, parameter.getParam('iplot'), \ | ||||
|                                               nllocfile, picks, parameter.getParam('rho'), \ | ||||
|                                               parameter.getParam('vp'), parameter.getParam('Qp'), \ | ||||
|                                               parameter.getParam('invdir')) | ||||
|                             finalpicks = M0Mw(wfdat, None, None, parameter.get('iplot'), \ | ||||
|                                               nllocfile, picks, parameter.get('rho'), \ | ||||
|                                               parameter.get('vp'), parameter.get('Qp'), \ | ||||
|                                               parameter.get('invdir')) | ||||
|                             # get network moment magntiude | ||||
|                             netMw = [] | ||||
|                             for key in finalpicks.getpicdic(): | ||||
| @ -222,8 +222,8 @@ def autoPyLoT(inputfile): | ||||
| 
 | ||||
|         # single event processing | ||||
|         else: | ||||
|             data.setWFData(glob.glob(os.path.join(datapath, parameter.getParam('eventID'), '*'))) | ||||
|             print("Working on event {0}".format(parameter.getParam('eventID'))) | ||||
|             data.setWFData(glob.glob(os.path.join(datapath, parameter.get('eventID'), '*'))) | ||||
|             print("Working on event {0}".format(parameter.get('eventID'))) | ||||
|             print(data) | ||||
| 
 | ||||
|             wfdat = data.getWFData()  # all available streams | ||||
| @ -238,7 +238,7 @@ def autoPyLoT(inputfile): | ||||
|                 picksExport(picks, 'NLLoc', phasefile) | ||||
| 
 | ||||
|                 # For locating the event the NLLoc-control file has to be modified! | ||||
|                 nllocout = '%s_%s' % (parameter.getParam('eventID'), nllocoutpatter) | ||||
|                 nllocout = '%s_%s' % (parameter.get('eventID'), nllocoutpatter) | ||||
|                 # create comment line for NLLoc-control file | ||||
|                 modifyInputFile(ctrf, nllocroot, nllocout, phasef, ttpat) | ||||
| 
 | ||||
| @ -261,10 +261,10 @@ def autoPyLoT(inputfile): | ||||
|                         # get latest NLLOc-location file if several are available | ||||
|                         nllocfile = max(glob.glob(locsearch), key=os.path.getctime) | ||||
|                         # calculating seismic moment Mo and moment magnitude Mw | ||||
|                         finalpicks = M0Mw(wfdat, None, None, parameter.getParam('iplot'), \ | ||||
|                                           nllocfile, picks, parameter.getParam('rho'), \ | ||||
|                                           parameter.getParam('vp'), parameter.getParam('Qp'), \ | ||||
|                                           parameter.getParam('invdir')) | ||||
|                         finalpicks = M0Mw(wfdat, None, None, parameter.get('iplot'), \ | ||||
|                                           nllocfile, picks, parameter.get('rho'), \ | ||||
|                                           parameter.get('vp'), parameter.get('Qp'), \ | ||||
|                                           parameter.get('invdir')) | ||||
|                     else: | ||||
|                         print("autoPyLoT: No NLLoc-location file available!") | ||||
|                         print("No source parameter estimation possible!") | ||||
| @ -303,10 +303,10 @@ def autoPyLoT(inputfile): | ||||
|                                 nlloccounter = maxnumit | ||||
| 
 | ||||
|                         # calculating seismic moment Mo and moment magnitude Mw | ||||
|                         finalpicks = M0Mw(wfdat, None, None, parameter.getParam('iplot'), \ | ||||
|                                           nllocfile, picks, parameter.getParam('rho'), \ | ||||
|                                           parameter.getParam('vp'), parameter.getParam('Qp'), \ | ||||
|                                           parameter.getParam('invdir')) | ||||
|                         finalpicks = M0Mw(wfdat, None, None, parameter.get('iplot'), \ | ||||
|                                           nllocfile, picks, parameter.get('rho'), \ | ||||
|                                           parameter.get('vp'), parameter.get('Qp'), \ | ||||
|                                           parameter.get('invdir')) | ||||
|                         # get network moment magntiude | ||||
|                         netMw = [] | ||||
|                         for key in finalpicks.getpicdic(): | ||||
| @ -319,7 +319,7 @@ def autoPyLoT(inputfile): | ||||
|             ########################################################## | ||||
|             # write phase files for various location routines | ||||
|             # HYPO71 | ||||
|             hypo71file = '%s/%s/autoPyLoT_HYPO71.pha' % (datapath, parameter.getParam('eventID')) | ||||
|             hypo71file = '%s/%s/autoPyLoT_HYPO71.pha' % (datapath, parameter.get('eventID')) | ||||
|             if hasattr(finalpicks, 'getpicdic'): | ||||
|                 if finalpicks.getpicdic() is not None: | ||||
|                     writephases(finalpicks.getpicdic(), 'HYPO71', hypo71file) | ||||
| @ -330,13 +330,13 @@ def autoPyLoT(inputfile): | ||||
|             else: | ||||
|                 writephases(picks, 'HYPO71', hypo71file) | ||||
|                 data.applyEVTData(picks) | ||||
|             fnqml =  '%s/%s/autoPyLoT' % (datapath, parameter.getParam('eventID')) | ||||
|             fnqml =  '%s/%s/autoPyLoT' % (datapath, parameter.get('eventID')) | ||||
|             data.exportEvent(fnqml) | ||||
| 
 | ||||
|             endsplash = '''------------------------------------------\n' | ||||
|                            -----Finished event %s!-----\n' | ||||
|                            ------------------------------------------'''.format \ | ||||
|                             (version=_getVersionString()) % parameter.getParam('eventID') | ||||
|                             (version=_getVersionString()) % parameter.get('eventID') | ||||
|             print(endsplash) | ||||
|             if locflag == 0: | ||||
|                 print("autoPyLoT was running in non-location mode!") | ||||
|  | ||||
| @ -3,13 +3,13 @@ | ||||
| 
 | ||||
| import os | ||||
| import glob | ||||
| import warnings | ||||
| 
 | ||||
| from obspy.io.xseed import Parser | ||||
| from obspy.core import read, Stream, UTCDateTime | ||||
| from obspy import read_events, read_inventory | ||||
| from obspy.core.event import Event, ResourceIdentifier, Pick, WaveformStreamID | ||||
| 
 | ||||
| from pylot.core.io.phases import readPILOTEvent | ||||
| from pylot.core.io.phases import readPILOTEvent, picks_from_dict | ||||
| from pylot.core.util.utils import fnConstructor, getGlobalTimes | ||||
| from pylot.core.util.errors import FormatError, OverwriteError | ||||
| 
 | ||||
| @ -414,35 +414,8 @@ class Data(object): | ||||
|             firstonset = None | ||||
|             if self.getEvtData().picks: | ||||
|                 raise OverwriteError('Actual picks would be overwritten!') | ||||
|             for station, onsets in picks.items(): | ||||
|                 print('Reading picks on station %s' % station) | ||||
|                 for label, phase in onsets.items(): | ||||
|                     if not isinstance(phase, dict): | ||||
|                         continue | ||||
|                     onset = phase['mpp'] | ||||
|                     epp = phase['epp'] | ||||
|                     lpp = phase['lpp'] | ||||
|                     error = phase['spe'] | ||||
|                     try: | ||||
|                         picker = phase['picker'] | ||||
|                     except KeyError as e: | ||||
|                         warnings.warn(str(e), Warning) | ||||
|                         picker = 'Unknown' | ||||
|                     pick = Pick() | ||||
|                     pick.time = onset | ||||
|                     pick.time_errors.lower_uncertainty = onset - epp | ||||
|                     pick.time_errors.upper_uncertainty = lpp - onset | ||||
|                     pick.time_errors.uncertainty = error | ||||
|                     pick.phase_hint = label | ||||
|                     pick.method_id = ResourceIdentifier(id=picker) | ||||
|                     pick.waveform_id = WaveformStreamID(station_code=station) | ||||
|                     self.getEvtData().picks.append(pick) | ||||
|                     try: | ||||
|                         polarity = phase['fm'] | ||||
|                     except KeyError as e: | ||||
|                         print('No polarity information found for %s' % phase) | ||||
|                     if firstonset is None or firstonset > onset: | ||||
|                         firstonset = onset | ||||
|             picks, firstonset = picks_from_dict(picks) | ||||
|             self.getEvtData().picks = picks | ||||
| 
 | ||||
|             if 'smi:local' in self.getID() and firstonset: | ||||
|                 fonset_str = firstonset.strftime('%Y_%m_%d_%H_%M_%S') | ||||
| @ -501,7 +474,7 @@ class GenericDataStructure(object): | ||||
|         if not self.extraAllowed(): | ||||
|             kwargs = self.updateNotAllowed(kwargs) | ||||
| 
 | ||||
|         for key, value in kwargs.iteritems(): | ||||
|         for key, value in kwargs.items(): | ||||
|             key = str(key).lower() | ||||
|             if value is not None: | ||||
|                 if type(value) not in (str, int, float): | ||||
|  | ||||
| @ -131,7 +131,7 @@ class AutoPickParameter(object): | ||||
|             return True | ||||
|         return False | ||||
| 
 | ||||
|     def getParam(self, *args): | ||||
|     def get(self, *args): | ||||
|         try: | ||||
|             for param in args: | ||||
|                 try: | ||||
|  | ||||
| @ -2,7 +2,8 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| import os | ||||
| 
 | ||||
| import glob | ||||
| import warnings | ||||
| import scipy.io as sio | ||||
| import obspy.core.event as ope | ||||
| from obspy.core import UTCDateTime | ||||
| @ -173,7 +174,7 @@ def convert_pilot_times(time_array): | ||||
|     return UTCDateTime(*times) | ||||
| 
 | ||||
| 
 | ||||
| def picks_from_obs(fn): | ||||
| def picksdict_from_obs(fn): | ||||
|     picks = dict() | ||||
|     station_name = str() | ||||
|     for line in open(fn, 'r'): | ||||
| @ -191,7 +192,7 @@ def picks_from_obs(fn): | ||||
|     return picks | ||||
| 
 | ||||
| 
 | ||||
| def picks_from_evt(evt): | ||||
| def picks_to_dict(evt): | ||||
|     ''' | ||||
|     Takes an Event object and return the pick dictionary commonly used within | ||||
|     PyLoT | ||||
| @ -228,6 +229,82 @@ def picks_from_evt(evt): | ||||
|         picks[station] = onsets.copy() | ||||
|     return picks | ||||
| 
 | ||||
| def picks_from_dict(picks): | ||||
|     firstonset = None | ||||
|     for station, onsets in picks.items(): | ||||
|         print('Reading picks on station %s' % station) | ||||
|         for label, phase in onsets.items(): | ||||
|             if not isinstance(phase, dict): | ||||
|                 continue | ||||
|             onset = phase['mpp'] | ||||
|             epp = phase['epp'] | ||||
|             lpp = phase['lpp'] | ||||
|             error = phase['spe'] | ||||
|             try: | ||||
|                 picker = phase['picker'] | ||||
|             except KeyError as e: | ||||
|                 warnings.warn(str(e), Warning) | ||||
|                 picker = 'Unknown' | ||||
|             pick = ope.Pick() | ||||
|             pick.time = onset | ||||
|             pick.time_errors.lower_uncertainty = onset - epp | ||||
|             pick.time_errors.upper_uncertainty = lpp - onset | ||||
|             pick.time_errors.uncertainty = error | ||||
|             pick.phase_hint = label | ||||
|             pick.method_id = ope.ResourceIdentifier(id=picker) | ||||
|             pick.waveform_id = ope.WaveformStreamID(station_code=station) | ||||
|             try: | ||||
|                 polarity = phase['fm'] | ||||
|                 if polarity == 'U' or '+': | ||||
|                     pick.polarity = 'positive' | ||||
|                 elif polarity == 'D' or '-': | ||||
|                     pick.polarity = 'negative' | ||||
|                 else: | ||||
|                     pick.polarity = 'undecidable' | ||||
|             except KeyError as e: | ||||
|                 print('No polarity information found for %s' % phase) | ||||
|             if firstonset is None or firstonset > onset: | ||||
|                 firstonset = onset | ||||
| 
 | ||||
| 
 | ||||
| def reassess_pilot_event(root_dir, event_id): | ||||
|     from obspy import read | ||||
|     from pylot.core.util.defaults import AUTOMATIC_DEFAULTS | ||||
|     from pylot.core.io.inputs import AutoPickParameter | ||||
|     from pylot.core.pick.utils import earllatepicker | ||||
| 
 | ||||
|     default = AutoPickParameter(AUTOMATIC_DEFAULTS) | ||||
| 
 | ||||
|     search_base = os.path.join(root_dir, event_id) | ||||
|     phases_file = glob.glob(os.path.join(search_base, 'PHASES.mat')) | ||||
|     picks_dict = picks_from_pilot(phases_file) | ||||
|     for station in picks_dict.keys(): | ||||
|         fn_pattern = os.path.join(search_base, '{0}*'.format(station)) | ||||
|         try: | ||||
|             st = read(fn_pattern) | ||||
|         except TypeError as e: | ||||
|             print(e.message) | ||||
|             st = read(fn_pattern, format='GSE2') | ||||
|         if not st: | ||||
|             raise RuntimeError('no waveform data found for station {station}'.format(station=station)) | ||||
|         for phase in picks_dict[station].keys(): | ||||
|             try: | ||||
|                 mpp = picks_dict[station][phase]['mpp'] | ||||
|             except KeyError as e: | ||||
|                 print(e.message, station) | ||||
|                 continue | ||||
|             epp, lpp, spe = earllatepicker(st, | ||||
|                                            default.get('nfac{0}'.format(phase)), | ||||
|                                            default.get('tsnrz' if phase == 'P' else 'tsnrh'), | ||||
|                                            mpp | ||||
|                                            ) | ||||
|             picks_dict[station][phase] = dict(epp=epp, mpp=mpp, lpp=lpp, spe=spe) | ||||
|     # create Event object for export | ||||
|     evt = ope.Event(resource_id=event_id) | ||||
|     evt.picks = picks_from_dict(picks_dict) | ||||
|     # write phase information to file | ||||
|     evt.write('{0}.xml'.format(event_id), format='QUAKEML') | ||||
| 
 | ||||
| 
 | ||||
| def writephases(arrivals, fformat, filename): | ||||
|     ''' | ||||
|  | ||||
| @ -28,9 +28,9 @@ def autopickevent(data, param): | ||||
| 
 | ||||
|     # get some parameters for quality control from | ||||
|     # parameter input file (usually autoPyLoT.in). | ||||
|     wdttolerance = param.getParam('wdttolerance') | ||||
|     mdttolerance = param.getParam('mdttolerance') | ||||
|     iplot = param.getParam('iplot') | ||||
|     wdttolerance = param.get('wdttolerance') | ||||
|     mdttolerance = param.get('mdttolerance') | ||||
|     iplot = param.get('iplot') | ||||
|     for n in range(len(data)): | ||||
|         station = data[n].stats.station | ||||
|         if station not in stations: | ||||
| @ -66,60 +66,60 @@ def autopickstation(wfstream, pickparam, verbose=False): | ||||
|     # read your autoPyLoT.in for details! | ||||
| 
 | ||||
|     # special parameters for P picking | ||||
|     algoP = pickparam.getParam('algoP') | ||||
|     iplot = pickparam.getParam('iplot') | ||||
|     pstart = pickparam.getParam('pstart') | ||||
|     pstop = pickparam.getParam('pstop') | ||||
|     thosmw = pickparam.getParam('tlta') | ||||
|     tsnrz = pickparam.getParam('tsnrz') | ||||
|     hosorder = pickparam.getParam('hosorder') | ||||
|     bpz1 = pickparam.getParam('bpz1') | ||||
|     bpz2 = pickparam.getParam('bpz2') | ||||
|     pickwinP = pickparam.getParam('pickwinP') | ||||
|     tsmoothP = pickparam.getParam('tsmoothP') | ||||
|     ausP = pickparam.getParam('ausP') | ||||
|     nfacP = pickparam.getParam('nfacP') | ||||
|     tpred1z = pickparam.getParam('tpred1z') | ||||
|     tdet1z = pickparam.getParam('tdet1z') | ||||
|     Parorder = pickparam.getParam('Parorder') | ||||
|     addnoise = pickparam.getParam('addnoise') | ||||
|     Precalcwin = pickparam.getParam('Precalcwin') | ||||
|     minAICPslope = pickparam.getParam('minAICPslope') | ||||
|     minAICPSNR = pickparam.getParam('minAICPSNR') | ||||
|     timeerrorsP = pickparam.getParam('timeerrorsP') | ||||
|     algoP = pickparam.get('algoP') | ||||
|     iplot = pickparam.get('iplot') | ||||
|     pstart = pickparam.get('pstart') | ||||
|     pstop = pickparam.get('pstop') | ||||
|     thosmw = pickparam.get('tlta') | ||||
|     tsnrz = pickparam.get('tsnrz') | ||||
|     hosorder = pickparam.get('hosorder') | ||||
|     bpz1 = pickparam.get('bpz1') | ||||
|     bpz2 = pickparam.get('bpz2') | ||||
|     pickwinP = pickparam.get('pickwinP') | ||||
|     tsmoothP = pickparam.get('tsmoothP') | ||||
|     ausP = pickparam.get('ausP') | ||||
|     nfacP = pickparam.get('nfacP') | ||||
|     tpred1z = pickparam.get('tpred1z') | ||||
|     tdet1z = pickparam.get('tdet1z') | ||||
|     Parorder = pickparam.get('Parorder') | ||||
|     addnoise = pickparam.get('addnoise') | ||||
|     Precalcwin = pickparam.get('Precalcwin') | ||||
|     minAICPslope = pickparam.get('minAICPslope') | ||||
|     minAICPSNR = pickparam.get('minAICPSNR') | ||||
|     timeerrorsP = pickparam.get('timeerrorsP') | ||||
|     # special parameters for S picking | ||||
|     algoS = pickparam.getParam('algoS') | ||||
|     sstart = pickparam.getParam('sstart') | ||||
|     sstop = pickparam.getParam('sstop') | ||||
|     bph1 = pickparam.getParam('bph1') | ||||
|     bph2 = pickparam.getParam('bph2') | ||||
|     tsnrh = pickparam.getParam('tsnrh') | ||||
|     pickwinS = pickparam.getParam('pickwinS') | ||||
|     tpred1h = pickparam.getParam('tpred1h') | ||||
|     tdet1h = pickparam.getParam('tdet1h') | ||||
|     tpred2h = pickparam.getParam('tpred2h') | ||||
|     tdet2h = pickparam.getParam('tdet2h') | ||||
|     Sarorder = pickparam.getParam('Sarorder') | ||||
|     aictsmoothS = pickparam.getParam('aictsmoothS') | ||||
|     tsmoothS = pickparam.getParam('tsmoothS') | ||||
|     ausS = pickparam.getParam('ausS') | ||||
|     minAICSslope = pickparam.getParam('minAICSslope') | ||||
|     minAICSSNR = pickparam.getParam('minAICSSNR') | ||||
|     Srecalcwin = pickparam.getParam('Srecalcwin') | ||||
|     nfacS = pickparam.getParam('nfacS') | ||||
|     timeerrorsS = pickparam.getParam('timeerrorsS') | ||||
|     algoS = pickparam.get('algoS') | ||||
|     sstart = pickparam.get('sstart') | ||||
|     sstop = pickparam.get('sstop') | ||||
|     bph1 = pickparam.get('bph1') | ||||
|     bph2 = pickparam.get('bph2') | ||||
|     tsnrh = pickparam.get('tsnrh') | ||||
|     pickwinS = pickparam.get('pickwinS') | ||||
|     tpred1h = pickparam.get('tpred1h') | ||||
|     tdet1h = pickparam.get('tdet1h') | ||||
|     tpred2h = pickparam.get('tpred2h') | ||||
|     tdet2h = pickparam.get('tdet2h') | ||||
|     Sarorder = pickparam.get('Sarorder') | ||||
|     aictsmoothS = pickparam.get('aictsmoothS') | ||||
|     tsmoothS = pickparam.get('tsmoothS') | ||||
|     ausS = pickparam.get('ausS') | ||||
|     minAICSslope = pickparam.get('minAICSslope') | ||||
|     minAICSSNR = pickparam.get('minAICSSNR') | ||||
|     Srecalcwin = pickparam.get('Srecalcwin') | ||||
|     nfacS = pickparam.get('nfacS') | ||||
|     timeerrorsS = pickparam.get('timeerrorsS') | ||||
|     # parameters for first-motion determination | ||||
|     minFMSNR = pickparam.getParam('minFMSNR') | ||||
|     fmpickwin = pickparam.getParam('fmpickwin') | ||||
|     minfmweight = pickparam.getParam('minfmweight') | ||||
|     minFMSNR = pickparam.get('minFMSNR') | ||||
|     fmpickwin = pickparam.get('fmpickwin') | ||||
|     minfmweight = pickparam.get('minfmweight') | ||||
|     # parameters for checking signal length | ||||
|     minsiglength = pickparam.getParam('minsiglength') | ||||
|     minpercent = pickparam.getParam('minpercent') | ||||
|     nfacsl = pickparam.getParam('noisefactor') | ||||
|     minsiglength = pickparam.get('minsiglength') | ||||
|     minpercent = pickparam.get('minpercent') | ||||
|     nfacsl = pickparam.get('noisefactor') | ||||
|     # parameter to check for spuriously picked S onset | ||||
|     zfac = pickparam.getParam('zfac') | ||||
|     zfac = pickparam.get('zfac') | ||||
|     # path to inventory-, dataless- or resp-files | ||||
|     invdir = pickparam.getParam('invdir') | ||||
|     invdir = pickparam.get('invdir') | ||||
| 
 | ||||
|     # initialize output | ||||
|     Pweight = 4  # weight for P onset | ||||
| @ -857,39 +857,39 @@ def iteratepicker(wf, NLLocfile, picks, badpicks, pickparameter): | ||||
|         wf2pick = wf.select(station=badpicks[i][0]) | ||||
| 
 | ||||
|         # modify some picking parameters | ||||
|         pstart_old = pickparameter.getParam('pstart') | ||||
|         pstop_old = pickparameter.getParam('pstop') | ||||
|         sstop_old = pickparameter.getParam('sstop') | ||||
|         pickwinP_old = pickparameter.getParam('pickwinP') | ||||
|         Precalcwin_old = pickparameter.getParam('Precalcwin') | ||||
|         noisefactor_old = pickparameter.getParam('noisefactor') | ||||
|         zfac_old = pickparameter.getParam('zfac') | ||||
|         pstart_old = pickparameter.get('pstart') | ||||
|         pstop_old = pickparameter.get('pstop') | ||||
|         sstop_old = pickparameter.get('sstop') | ||||
|         pickwinP_old = pickparameter.get('pickwinP') | ||||
|         Precalcwin_old = pickparameter.get('Precalcwin') | ||||
|         noisefactor_old = pickparameter.get('noisefactor') | ||||
|         zfac_old = pickparameter.get('zfac') | ||||
|         pickparameter.setParam( | ||||
|             pstart=max([0, badpicks[i][1] - wf2pick[0].stats.starttime \ | ||||
|                         - pickparameter.getParam('tlta')])) | ||||
|         pickparameter.setParam(pstop=pickparameter.getParam('pstart') + \ | ||||
|                                      (3 * pickparameter.getParam('tlta'))) | ||||
|         pickparameter.setParam(sstop=pickparameter.getParam('sstop') / 2) | ||||
|         pickparameter.setParam(pickwinP=pickparameter.getParam('pickwinP') / 2) | ||||
|                         - pickparameter.get('tlta')])) | ||||
|         pickparameter.setParam(pstop=pickparameter.get('pstart') + \ | ||||
|                                      (3 * pickparameter.get('tlta'))) | ||||
|         pickparameter.setParam(sstop=pickparameter.get('sstop') / 2) | ||||
|         pickparameter.setParam(pickwinP=pickparameter.get('pickwinP') / 2) | ||||
|         pickparameter.setParam( | ||||
|             Precalcwin=pickparameter.getParam('Precalcwin') / 2) | ||||
|             Precalcwin=pickparameter.get('Precalcwin') / 2) | ||||
|         pickparameter.setParam(noisefactor=1.0) | ||||
|         pickparameter.setParam(zfac=1.0) | ||||
|         print( | ||||
|             "iteratepicker: The following picking parameters have been modified for iterative picking:") | ||||
|         print( | ||||
|             "pstart: %fs => %fs" % (pstart_old, pickparameter.getParam('pstart'))) | ||||
|             "pstart: %fs => %fs" % (pstart_old, pickparameter.get('pstart'))) | ||||
|         print( | ||||
|             "pstop: %fs => %fs" % (pstop_old, pickparameter.getParam('pstop'))) | ||||
|             "pstop: %fs => %fs" % (pstop_old, pickparameter.get('pstop'))) | ||||
|         print( | ||||
|             "sstop: %fs => %fs" % (sstop_old, pickparameter.getParam('sstop'))) | ||||
|             "sstop: %fs => %fs" % (sstop_old, pickparameter.get('sstop'))) | ||||
|         print("pickwinP: %fs => %fs" % ( | ||||
|             pickwinP_old, pickparameter.getParam('pickwinP'))) | ||||
|             pickwinP_old, pickparameter.get('pickwinP'))) | ||||
|         print("Precalcwin: %fs => %fs" % ( | ||||
|             Precalcwin_old, pickparameter.getParam('Precalcwin'))) | ||||
|             Precalcwin_old, pickparameter.get('Precalcwin'))) | ||||
|         print("noisefactor: %f => %f" % ( | ||||
|             noisefactor_old, pickparameter.getParam('noisefactor'))) | ||||
|         print("zfac: %f => %f" % (zfac_old, pickparameter.getParam('zfac'))) | ||||
|             noisefactor_old, pickparameter.get('noisefactor'))) | ||||
|         print("zfac: %f => %f" % (zfac_old, pickparameter.get('zfac'))) | ||||
| 
 | ||||
|         # repick station | ||||
|         newpicks = autopickstation(wf2pick, pickparameter) | ||||
|  | ||||
| @ -9,7 +9,7 @@ import matplotlib.pyplot as plt | ||||
| 
 | ||||
| from obspy import read_events | ||||
| 
 | ||||
| from pylot.core.io.phases import picks_from_evt | ||||
| from pylot.core.io.phases import picks_to_dict | ||||
| from pylot.core.util.pdf import ProbabilityDensityFunction | ||||
| from pylot.core.util.version import get_git_version as _getVersionString | ||||
| 
 | ||||
| @ -227,7 +227,7 @@ class PDFDictionary(object): | ||||
|         if len(cat) > 1: | ||||
|             raise NotImplementedError('reading more than one event at the same ' | ||||
|                                       'time is not implemented yet! Sorry!') | ||||
|         return PDFDictionary(picks_from_evt(cat[0])) | ||||
|         return PDFDictionary(picks_to_dict(cat[0])) | ||||
| 
 | ||||
|     def pdf_data(self, type='exp'): | ||||
|         """ | ||||
|  | ||||
| @ -938,6 +938,10 @@ def checkZ4S(X, pick, zfac, checkwin, iplot): | ||||
|     return returnflag | ||||
| 
 | ||||
| 
 | ||||
| def reassess_pilot_event(): | ||||
|     pass | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     import doctest | ||||
| 
 | ||||
|  | ||||
| @ -2,17 +2,24 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
| 
 | ||||
| import argparse | ||||
| 
 | ||||
| from pylot.core.pick.utils import reassess_pilot_event | ||||
| from pylot.core.util.version import get_git_version as _getVersionString | ||||
| from pylot.core.io.phases import reasses_pilot_event | ||||
| from pylot.core.io.phases import reassess_pilot_event | ||||
| 
 | ||||
| __version__ = _getVersionString() | ||||
| __author__ = 'sebastianw' | ||||
| 
 | ||||
| def reassess_pilot_event(): | ||||
|     pass | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     parser = argparse.ArgumentParser() | ||||
| 
 | ||||
|     parser.add_argument( | ||||
|         '--directory', '-d', type=str, help='specifies the root directory (in ' | ||||
|                                             'most cases PILOT database folder)' | ||||
|     ) | ||||
|     parser.add_argument( | ||||
|         '--eventid', '-i', type=str, help='PILOT event identifier' | ||||
|     ) | ||||
| 
 | ||||
|     args = parser.parse_args() | ||||
|     reasses_pilot_event(args.id) | ||||
|     reassess_pilot_event(args.dir, args.id) | ||||
|  | ||||
							
								
								
									
										3
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								setup.py
									
									
									
									
									
								
							| @ -1,3 +1,5 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding: utf-8 -*- | ||||
| from distutils.core import setup | ||||
| 
 | ||||
| setup( | ||||
| @ -6,6 +8,7 @@ setup( | ||||
|     packages=['pylot', 'pylot.core', 'pylot.core.loc', 'pylot.core.pick', | ||||
|               'pylot.core.io', 'pylot.core.util', 'pylot.core.active', | ||||
|               'pylot.core.analysis', 'pylot.testing'], | ||||
|     requires=['obspy', 'PySide'], | ||||
|     url='dummy', | ||||
|     license='LGPLv3', | ||||
|     author='Sebastian Wehling-Benatelli', | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user