Modified for improved class Picker.py
This commit is contained in:
		
							parent
							
								
									f6922fafef
								
							
						
					
					
						commit
						714e70de69
					
				| @ -2,7 +2,7 @@ | |||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| 
 | 
 | ||||||
| """ | """ | ||||||
|    Script to run PyLoT modules CharFuns.py and Picker.py. |    Script to run autoPyLoT-script "makeCF.py". | ||||||
|    Only for test purposes! |    Only for test purposes! | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| @ -10,24 +10,26 @@ from obspy.core import read | |||||||
| import matplotlib.pyplot as plt   | import matplotlib.pyplot as plt   | ||||||
| import numpy as np | import numpy as np | ||||||
| from pylot.core.pick.CharFuns import CharacteristicFunction | from pylot.core.pick.CharFuns import CharacteristicFunction | ||||||
| from pylot.core.pick.Picker import AutoPicking | from pylot.core.pick.Picker import Picker | ||||||
| import glob | import glob | ||||||
| import argparse | import argparse | ||||||
| 
 | 
 | ||||||
| def run_makeCF(project, database, event, iplot, station=None): | def run_makeCF(project, database, event, iplot, station=None): | ||||||
|     #parameters for CF calculation |     #parameters for CF calculation | ||||||
|     t2 = 7              #length of moving window for HOS calculation [sec] |     t2 = 7                   #length of moving window for HOS calculation [sec] | ||||||
|     p = 4               #order of statistics |     p = 4                    #order of HOS | ||||||
|     cuttimes = [10, 50] #start and end time for CF calculation |     cuttimes = [10, 50]      #start and end time for CF calculation | ||||||
|     bpz = [2, 30]       #corner frequencies of bandpass filter, vertical component |     bpz = [2, 30]            #corner frequencies of bandpass filter, vertical component | ||||||
|     bph = [2, 15]       #corner frequencies of bandpass filter, horizontal components |     bph = [2, 15]            #corner frequencies of bandpass filter, horizontal components | ||||||
|     tdetz= 1.2          #length of AR-determination window [sec], vertical component |     tdetz= 1.2               #length of AR-determination window [sec], vertical component | ||||||
|     tdeth= 0.8          #length of AR-determination window [sec], horizontal components |     tdeth= 0.8               #length of AR-determination window [sec], horizontal components | ||||||
|     tpredz = 0.4        #length of AR-prediction window [sec], vertical component |     tpredz = 0.4             #length of AR-prediction window [sec], vertical component | ||||||
|     tpredh = 0.4        #length of AR-prediction window [sec], horizontal components |     tpredh = 0.4             #length of AR-prediction window [sec], horizontal components | ||||||
|     addnoise = 0.001    #add noise to seismogram for stable AR prediction |     addnoise = 0.001         #add noise to seismogram for stable AR prediction | ||||||
|     arzorder = 2        #chosen order of AR process, vertical component |     arzorder = 2             #chosen order of AR process, vertical component | ||||||
|     arhorder = 4        #chosen order of AR process, horizontal components |     arhorder = 4             #chosen order of AR process, horizontal components | ||||||
|  |     TSNR = [5, 0.5, 1, 0.03]  #window lengths [s] for calculating SNR for earliest/latest pick and quality assessment | ||||||
|  |                              #[noise window, safety gap, signal window, slope determination window] | ||||||
|     #get waveform data |     #get waveform data | ||||||
|     if station: |     if station: | ||||||
|        dpz = '/DATA/%s/EVENT_DATA/LOCAL/%s/%s/%s*HZ.msd' % (project, database, event, station) |        dpz = '/DATA/%s/EVENT_DATA/LOCAL/%s/%s/%s*HZ.msd' % (project, database, event, station) | ||||||
| @ -66,12 +68,12 @@ def run_makeCF(project, database, event, iplot, station=None): | |||||||
|           aiccf = AICcf(st_copy, cuttimes) #instance of AICcf |           aiccf = AICcf(st_copy, cuttimes) #instance of AICcf | ||||||
|           ############################################################## |           ############################################################## | ||||||
|           #get prelimenary onset time from AIC-HOS-CF using subclass AICPicker of class AutoPicking |           #get prelimenary onset time from AIC-HOS-CF using subclass AICPicker of class AutoPicking | ||||||
|           aicpick = AICPicker(aiccf, None, [5, 0.5, 1], 3, 10, None, 0.1) |           aicpick = AICPicker(aiccf, None, TSNR, 3, 10, None, 0.1) | ||||||
|           ############################################################## |           ############################################################## | ||||||
|           #get refined onset time from HOS-CF using class Picker |           #get refined onset time from HOS-CF using class Picker | ||||||
|           hospick = PragPicker(hoscf, None, [5, 0.5, 1], 2, 10, 0.001, 0.2, aicpick.getpick()) |           hospick = PragPicker(hoscf, None, TSNR, 2, 10, 0.001, 0.2, aicpick.getpick()) | ||||||
|           #get earliest and latest possible picks |           #get earliest and latest possible picks | ||||||
|           hosELpick = EarlLatePicker(hoscf, 1.5, [5, 0.5, 1], None, 10, None, None, hospick.getpick()) |           hosELpick = EarlLatePicker(hoscf, 1.5, TSNR, None, 10, None, None, hospick.getpick()) | ||||||
|           ############################################################## |           ############################################################## | ||||||
|           #calculate ARZ-CF using subclass ARZcf of class CharcteristicFunction |           #calculate ARZ-CF using subclass ARZcf of class CharcteristicFunction | ||||||
|           #get stream object of filtered data |           #get stream object of filtered data | ||||||
| @ -86,12 +88,12 @@ def run_makeCF(project, database, event, iplot, station=None): | |||||||
|           araiccf = AICcf(st_copy, cuttimes, tpredz, 0, tdetz) #instance of AICcf |           araiccf = AICcf(st_copy, cuttimes, tpredz, 0, tdetz) #instance of AICcf | ||||||
|           ############################################################## |           ############################################################## | ||||||
|           #get onset time from AIC-ARZ-CF using subclass AICPicker of class AutoPicking |           #get onset time from AIC-ARZ-CF using subclass AICPicker of class AutoPicking | ||||||
|           aicarzpick = AICPicker(araiccf, 1.5, [5, 0.5, 2], 2, 10, None, 0.1) |           aicarzpick = AICPicker(araiccf, 1.5, TSNR, 2, 10, None, 0.1) | ||||||
|           ############################################################## |           ############################################################## | ||||||
|           #get refined onset time from ARZ-CF using class Picker |           #get refined onset time from ARZ-CF using class Picker | ||||||
|           arzpick = PragPicker(arzcf, 1.5, [5, 0.5, 2], 2.0, 10, 0.1, 0.05, aicarzpick.getpick()) |           arzpick = PragPicker(arzcf, 1.5, TSNR, 2.0, 10, 0.1, 0.05, aicarzpick.getpick()) | ||||||
|           #get earliest and latest possible picks |           #get earliest and latest possible picks | ||||||
|           arzELpick = EarlLatePicker(arzcf, 1.5, [5, 0.5, 1], None, 10, None, None, arzpick.getpick()) |           arzELpick = EarlLatePicker(arzcf, 1.5, TSNR, None, 10, None, None, arzpick.getpick()) | ||||||
|     elif not wfzfiles: |     elif not wfzfiles: | ||||||
|        print 'No vertical component data found!' |        print 'No vertical component data found!' | ||||||
| 
 | 
 | ||||||
| @ -127,12 +129,12 @@ def run_makeCF(project, database, event, iplot, station=None): | |||||||
|           arhaiccf = AICcf(H_copy, cuttimes, tpredh, 0, tdeth) #instance of AICcf |           arhaiccf = AICcf(H_copy, cuttimes, tpredh, 0, tdeth) #instance of AICcf | ||||||
|           ############################################################## |           ############################################################## | ||||||
|           #get onset time from AIC-ARH-CF using subclass AICPicker of class AutoPicking |           #get onset time from AIC-ARH-CF using subclass AICPicker of class AutoPicking | ||||||
|           aicarhpick = AICPicker(arhaiccf, 1.5, [5, 0.5, 2], 4, 10, None, 0.1) |           aicarhpick = AICPicker(arhaiccf, 1.5, TSNR, 4, 10, None, 0.1) | ||||||
|           ############################################################### |           ############################################################### | ||||||
|           #get refined onset time from ARH-CF using class Picker |           #get refined onset time from ARH-CF using class Picker | ||||||
|           arhpick = PragPicker(arhcf, 1.5, [5, 0.5, 2], 2.5, 10, 0.1, 0.05, aicarhpick.getpick()) |           arhpick = PragPicker(arhcf, 1.5, TSNR, 2.5, 10, 0.1, 0.05, aicarhpick.getpick()) | ||||||
|           #get earliest and latest possible picks |           #get earliest and latest possible picks | ||||||
|           arhELpick = EarlLatePicker(arhcf, 1.5, [5, 0.5, 1], None, 10, None, None, arhpick.getpick()) |           arhELpick = EarlLatePicker(arhcf, 1.5, TSNR, None, 10, None, None, arhpick.getpick()) | ||||||
| 
 | 
 | ||||||
|           #create stream with 3 traces |           #create stream with 3 traces | ||||||
|           #merge streams |           #merge streams | ||||||
| @ -155,7 +157,7 @@ def run_makeCF(project, database, event, iplot, station=None): | |||||||
|           #calculate AR3C-CF using subclass AR3Ccf of class CharacteristicFunction |           #calculate AR3C-CF using subclass AR3Ccf of class CharacteristicFunction | ||||||
|           ar3ccf = AR3Ccf(AllC, cuttimes, tpredz, arhorder, tdetz, addnoise) #instance of AR3Ccf |           ar3ccf = AR3Ccf(AllC, cuttimes, tpredz, arhorder, tdetz, addnoise) #instance of AR3Ccf | ||||||
|           #get earliest and latest possible pick from initial ARH-pick |           #get earliest and latest possible pick from initial ARH-pick | ||||||
|           ar3cELpick = EarlLatePicker(ar3ccf, 1.5, [5, 0.5, 1], None, 10, None, None, arhpick.getpick()) |           ar3cELpick = EarlLatePicker(ar3ccf, 1.5, TSNR, None, 10, None, None, arhpick.getpick()) | ||||||
|           ############################################################## |           ############################################################## | ||||||
|           if iplot: |           if iplot: | ||||||
|              #plot vertical trace |              #plot vertical trace | ||||||
| @ -187,7 +189,8 @@ def run_makeCF(project, database, event, iplot, station=None): | |||||||
|              plt.ylim([-1.5, 1.5]) |              plt.ylim([-1.5, 1.5]) | ||||||
|              plt.xlabel('Time [s]') |              plt.xlabel('Time [s]') | ||||||
|              plt.ylabel('Normalized Counts') |              plt.ylabel('Normalized Counts') | ||||||
|              plt.title([tr.stats.station, tr.stats.channel]) |              plt.title('%s, %s, AIC-SNR=%7.2f, AIC-Slope=%12.2f' % (tr.stats.station, \ | ||||||
|  |                         tr.stats.channel, aicpick.getSNR(), aicpick.getSlope())) | ||||||
|              plt.suptitle(tr.stats.starttime) |              plt.suptitle(tr.stats.starttime) | ||||||
|              plt.legend([p1, p2, p3, p4, p5], ['Data', 'HOS-CF', 'HOSAIC-CF', 'ARZ-CF', 'ARZAIC-CF'])  |              plt.legend([p1, p2, p3, p4, p5], ['Data', 'HOS-CF', 'HOSAIC-CF', 'ARZ-CF', 'ARZAIC-CF'])  | ||||||
|              #plot horizontal traces |              #plot horizontal traces | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user