Decrease indentation in pick_s_phase
Instead of checking if(condition){DoSomething()}; check if (!condition){ErrorOut()}; DoSomething();.
This allows to decrease the indentation of the potentially large codeblock DoSomething().
			
			
This commit is contained in:
		
							parent
							
								
									02873938cb
								
							
						
					
					
						commit
						6d26338f2e
					
				| @ -920,108 +920,114 @@ class AutopickStation(object): | ||||
|         if not slope: | ||||
|             slope = 0 | ||||
| 
 | ||||
|         if slope >= self.s_params.minAICSslope and aicarhpick.getSNR() >= self.s_params.minAICSSNR and aicarhpick.getpick() is not None: | ||||
|             self.s_results.aicSflag = 1 | ||||
|             msg = 'AIC S-pick passes quality control: Slope: {0} counts/s, ' \ | ||||
|                   'SNR: {1}\nGo on with refined picking ...\n' \ | ||||
|                   'autopickstation: re-filtering horizontal traces ' \ | ||||
|                   '...'.format(aicarhpick.getSlope(), aicarhpick.getSNR()) | ||||
|             self.vprint(msg) | ||||
|         if slope < self.s_params.minAICSslope: | ||||
|             error_msg = error_msg = 'AIC S onset slope to small: got {}, min {}'.format(slope, self.s_params.minAICSslope) | ||||
|             raise PickingFailedException(error_msg) | ||||
|         if aicarhpick.getSNR() < self.s_params.minAICSSNR: | ||||
|             error_msg = 'AIC S onset SNR to small: got {}, min {}'.format(aicarhpick.getSNR(), self.s_params.minAICSSNR) | ||||
|             raise PickingFailedException(error_msg) | ||||
|         if aicarhpick.getpick() is None: | ||||
|             error_msg = 'Invalid AIC S pick!' | ||||
|             raise PickingFailedException(error_msg) | ||||
|         #if slope >= self.s_params.minAICSslope and aicarhpick.getSNR() >= self.s_params.minAICSSNR and aicarhpick.getpick() is not None: | ||||
|         self.s_results.aicSflag = 1 | ||||
|         msg = 'AIC S-pick passes quality control: Slope: {0} counts/s, ' \ | ||||
|               'SNR: {1}\nGo on with refined picking ...\n' \ | ||||
|               'autopickstation: re-filtering horizontal traces ' \ | ||||
|               '...'.format(aicarhpick.getSlope(), aicarhpick.getSNR()) | ||||
|         self.vprint(msg) | ||||
| 
 | ||||
|             # recalculate cf from refiltered trace in vicinity of initial onset | ||||
|             start = round(aicarhpick.getpick() - self.s_params.Srecalcwin) | ||||
|             stop = round(aicarhpick.getpick() + self.s_params.Srecalcwin) | ||||
|             cuttimesh2 = (start, stop) | ||||
|         # recalculate cf from refiltered trace in vicinity of initial onset | ||||
|         start = round(aicarhpick.getpick() - self.s_params.Srecalcwin) | ||||
|         stop = round(aicarhpick.getpick() + self.s_params.Srecalcwin) | ||||
|         cuttimesh2 = (start, stop) | ||||
| 
 | ||||
|             # refilter waveform with larger bandpass | ||||
|             if self.s_params.algoS == 'ARH': | ||||
|                 trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|                 trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|                 h_copy = hdat.copy() | ||||
|                 h_copy[0].data = trH1_filt.data | ||||
|                 h_copy[1].data = trH2_filt.data | ||||
|             elif self.s_params.algoS == 'AR3': | ||||
|                 trH3_filt, _ = self.prepare_wfstream(self.zstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|                 trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|                 trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|                 h_copy = hdat.copy() | ||||
|                 h_copy[0].data = trH3_filt.data | ||||
|                 h_copy[1].data = trH1_filt.data | ||||
|                 h_copy[2].data = trH2_filt.data | ||||
|         # refilter waveform with larger bandpass | ||||
|         if self.s_params.algoS == 'ARH': | ||||
|             trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|             trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|             h_copy = hdat.copy() | ||||
|             h_copy[0].data = trH1_filt.data | ||||
|             h_copy[1].data = trH2_filt.data | ||||
|         elif self.s_params.algoS == 'AR3': | ||||
|             trH3_filt, _ = self.prepare_wfstream(self.zstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|             trH1_filt, _ = self.prepare_wfstream(self.estream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|             trH2_filt, _ = self.prepare_wfstream(self.nstream, freqmin=self.s_params.bph2[0], freqmax=self.s_params.bph2[1]) | ||||
|             h_copy = hdat.copy() | ||||
|             h_copy[0].data = trH3_filt.data | ||||
|             h_copy[1].data = trH1_filt.data | ||||
|             h_copy[2].data = trH2_filt.data | ||||
| 
 | ||||
|             # save filtered traces for plotting | ||||
|             self.estream_bph2 = trH1_filt | ||||
|             self.nstream_bph2 = trH2_filt | ||||
|         # save filtered traces for plotting | ||||
|         self.estream_bph2 = trH1_filt | ||||
|         self.nstream_bph2 = trH2_filt | ||||
| 
 | ||||
|             # calculate second cf | ||||
|             if self.s_params.algoS == 'ARH': | ||||
|                 arhcf2 = ARHcf(h_copy, cuttimesh2, self.s_params.tpred2h, self.s_params.Sarorder, self.s_params.tdet2h, self.p_params.addnoise) | ||||
|             elif self.s_params.algoS == 'AR3': | ||||
|                 arhcf2 = AR3Ccf(h_copy, cuttimesh2, self.s_params.tpred2h, self.s_params.Sarorder, self.s_params.tdet2h, self.p_params.addnoise) | ||||
|             # save cf for later plotting | ||||
|             self.arhcf2 = arhcf2 | ||||
|         # calculate second cf | ||||
|         if self.s_params.algoS == 'ARH': | ||||
|             arhcf2 = ARHcf(h_copy, cuttimesh2, self.s_params.tpred2h, self.s_params.Sarorder, self.s_params.tdet2h, self.p_params.addnoise) | ||||
|         elif self.s_params.algoS == 'AR3': | ||||
|             arhcf2 = AR3Ccf(h_copy, cuttimesh2, self.s_params.tpred2h, self.s_params.Sarorder, self.s_params.tdet2h, self.p_params.addnoise) | ||||
|         # save cf for later plotting | ||||
|         self.arhcf2 = arhcf2 | ||||
| 
 | ||||
|             # get refined onset time from CF2 | ||||
|             fig, linecolor = get_fig_from_figdict(self.fig_dict, 'refSpick') | ||||
|             refSpick = PragPicker(arhcf2, self.s_params.tsnrh, self.s_params.pickwinS, self.iplot, self.s_params.ausS, self.s_params.tsmoothS, aicarhpick.getpick(), fig, linecolor) | ||||
|             # save refSpick for later plotitng | ||||
|             self.refSpick = refSpick | ||||
|             self.s_results.mpickS = refSpick.getpick() | ||||
|         # get refined onset time from CF2 | ||||
|         fig, linecolor = get_fig_from_figdict(self.fig_dict, 'refSpick') | ||||
|         refSpick = PragPicker(arhcf2, self.s_params.tsnrh, self.s_params.pickwinS, self.iplot, self.s_params.ausS, self.s_params.tsmoothS, aicarhpick.getpick(), fig, linecolor) | ||||
|         # save refSpick for later plotitng | ||||
|         self.refSpick = refSpick | ||||
|         self.s_results.mpickS = refSpick.getpick() | ||||
| 
 | ||||
|             if self.s_results.mpickS is not None: | ||||
|                 # quality assessment | ||||
|                 # get earliest/latest possible pick and symmetrized uncertainty | ||||
|                 h_copy[0].data = trH1_filt.data | ||||
|                 if self.iplot: | ||||
|                     fig, linecolor = get_fig_from_figdict(self.fig_dict, 'el_S1pick') | ||||
|                 epickS1, lpickS1, Serror1 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, self.s_results.mpickS, self.iplot, fig=fig, linecolor=linecolor) | ||||
|         if self.s_results.mpickS is not None: | ||||
|             # quality assessment | ||||
|             # get earliest/latest possible pick and symmetrized uncertainty | ||||
|             h_copy[0].data = trH1_filt.data | ||||
|             if self.iplot: | ||||
|                 fig, linecolor = get_fig_from_figdict(self.fig_dict, 'el_S1pick') | ||||
|             epickS1, lpickS1, Serror1 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, self.s_results.mpickS, self.iplot, fig=fig, linecolor=linecolor) | ||||
| 
 | ||||
|                 h_copy[0].data = trH2_filt.data | ||||
|                 if self.iplot: | ||||
|                     fig, linecolor = get_fig_from_figdict(self.fig_dict, 'el_S2pick') | ||||
|                 else: | ||||
|                     # why is it set to empty here? DA | ||||
|                     linecolor = '' | ||||
|                 epickS2, lpickS2, Serror2 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, self.s_results.mpickS, self.iplot, fig=fig, linecolor=linecolor) | ||||
|             h_copy[0].data = trH2_filt.data | ||||
|             if self.iplot: | ||||
|                 fig, linecolor = get_fig_from_figdict(self.fig_dict, 'el_S2pick') | ||||
|             else: | ||||
|                 # why is it set to empty here? DA | ||||
|                 linecolor = '' | ||||
|             epickS2, lpickS2, Serror2 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, self.s_results.mpickS, self.iplot, fig=fig, linecolor=linecolor) | ||||
| 
 | ||||
|                 if epickS1 is not None and epickS2 is not None: | ||||
|                     if self.s_params.algoS == 'ARH': | ||||
|                         # get earliest pick of both earliest possible picks | ||||
|                         epick = [epickS1, epickS2] | ||||
|                         lpick = [lpickS1, lpickS2] | ||||
|                         pickerr = [Serror1, Serror2] | ||||
|             if epickS1 is not None and epickS2 is not None: | ||||
|                 if self.s_params.algoS == 'ARH': | ||||
|                     # get earliest pick of both earliest possible picks | ||||
|                     epick = [epickS1, epickS2] | ||||
|                     lpick = [lpickS1, lpickS2] | ||||
|                     pickerr = [Serror1, Serror2] | ||||
|                     ipick = np.argmin(epick) | ||||
|                 if self.s_params.algoS == 'AR3': | ||||
|                     epickS3, lpickS3, Serror3 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, self.s_results.mpickS, self.iplot) | ||||
|                     # get earliest of all three picks | ||||
|                     epick = [epickS1, epickS2, epickS3] | ||||
|                     lpick = [lpickS1, lpickS2, lpickS3] | ||||
|                     pickerr = [Serror1, Serror2, Serror3] | ||||
| 
 | ||||
|                     if epickS3 is not None: | ||||
|                         ipick = np.argmin(epick) | ||||
|                     if self.s_params.algoS == 'AR3': | ||||
|                         epickS3, lpickS3, Serror3 = earllatepicker(h_copy, self.s_params.nfacS, self.s_params.tsnrh, self.s_results.mpickS, self.iplot) | ||||
|                         # get earliest of all three picks | ||||
|                         epick = [epickS1, epickS2, epickS3] | ||||
|                         lpick = [lpickS1, lpickS2, lpickS3] | ||||
|                         pickerr = [Serror1, Serror2, Serror3] | ||||
|                     else: | ||||
|                         ipick = np.argmin([epickS1, epickS2]) | ||||
|                 self.s_results.epickS = epick[ipick] | ||||
|                 self.s_results.lpickS = lpick[ipick] | ||||
|                 self.s_results.Serror = pickerr[ipick] | ||||
| 
 | ||||
|                         if epickS3 is not None: | ||||
|                             ipick = np.argmin(epick) | ||||
|                         else: | ||||
|                             ipick = np.argmin([epickS1, epickS2]) | ||||
|                     self.s_results.epickS = epick[ipick] | ||||
|                     self.s_results.lpickS = lpick[ipick] | ||||
|                     self.s_results.Serror = pickerr[ipick] | ||||
|                 msg = 'autopickstation: Refined S-Pick: {} s | S-Error: {} s'.format(self.s_results.mpickS, self.s_results.Serror) | ||||
|                 print(msg) | ||||
| 
 | ||||
|                     msg = 'autopickstation: Refined S-Pick: {} s | S-Error: {} s'.format(self.s_results.mpickS, self.s_results.Serror) | ||||
|                     print(msg) | ||||
|                 # get SNR | ||||
|                 self.s_results.SNRS, self.s_results.SNRSdB, self.s_results.Snoiselevel = getSNR(h_copy, self.s_params.tsnrh, self.s_results.mpickS) | ||||
| 
 | ||||
|                     # get SNR | ||||
|                     self.s_results.SNRS, self.s_results.SNRSdB, self.s_results.Snoiselevel = getSNR(h_copy, self.s_params.tsnrh, self.s_results.mpickS) | ||||
|                 self.s_results.Sweight = get_quality_class(self.s_results.Serror, self.s_params.timeerrorsS) | ||||
| 
 | ||||
|                     self.s_results.Sweight = get_quality_class(self.s_results.Serror, self.s_params.timeerrorsS) | ||||
|                 print('autopickstation: S-weight: {0}, SNR: {1}, ' | ||||
|                       'SNR[dB]: {2}\n' | ||||
|                       '##################################################' | ||||
|                       ''.format(self.s_results.Sweight, self.s_results.SNRS, self.s_results.SNRSdB)) | ||||
| 
 | ||||
|                     print('autopickstation: S-weight: {0}, SNR: {1}, ' | ||||
|                           'SNR[dB]: {2}\n' | ||||
|                           '##################################################' | ||||
|                           ''.format(self.s_results.Sweight, self.s_results.SNRS, self.s_results.SNRSdB)) | ||||
| 
 | ||||
|         else: | ||||
|             print('autopickstation: No horizontal component data available or ' | ||||
|                   'bad P onset, skipping S picking!') | ||||
| 
 | ||||
| def get_fig_from_figdict(figdict, figkey): | ||||
|     """ | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user