refactor: rename writephases; add write hash to write_phases
This commit is contained in:
		
							parent
							
								
									eb077e4bd6
								
							
						
					
					
						commit
						cb457fc7ec
					
				| @ -329,7 +329,7 @@ def picks_from_picksdict(picks, creation_info=None): | |||||||
|     return picks_list |     return picks_list | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def writephases(arrivals, fformat, filename, parameter=None, eventinfo=None): | def write_phases(arrivals, fformat, filename, parameter=None, eventinfo=None): | ||||||
|     """ |     """ | ||||||
|     Writes earthquake phase data to different file formats. |     Writes earthquake phase data to different file formats. | ||||||
| 
 | 
 | ||||||
| @ -459,6 +459,84 @@ def writephases(arrivals, fformat, filename, parameter=None, eventinfo=None): | |||||||
|                                     fid.write('{:<4}  {:6.2f}  {:6.2f}{}\n'.format(stat, az, inz, value['P']['fm'])) |                                     fid.write('{:<4}  {:6.2f}  {:6.2f}{}\n'.format(stat, az, inz, value['P']['fm'])) | ||||||
|                                     break |                                     break | ||||||
| 
 | 
 | ||||||
|  |     def write_hash(): | ||||||
|  |         # Define filenames for HASH driver 1 and 2 | ||||||
|  |         filename1 = f"{filename}drv1.phase" | ||||||
|  |         filename2 = f"{filename}drv2.phase" | ||||||
|  | 
 | ||||||
|  |         print(f"Writing phases to {filename1} for HASH-driver 1") | ||||||
|  |         print(f"Writing phases to {filename2} for HASH-driver 2") | ||||||
|  | 
 | ||||||
|  |         # Open files for writing | ||||||
|  |         with open(filename1, 'w') as fid1, open(filename2, 'w') as fid2: | ||||||
|  |             # Get event information needed for HASH-input file | ||||||
|  |             try: | ||||||
|  |                 eventsource = eventinfo.origins[0] | ||||||
|  |             except IndexError: | ||||||
|  |                 print("No source origin calculated yet, thus no cnv-file creation possible!") | ||||||
|  |                 return | ||||||
|  | 
 | ||||||
|  |             event = parameter.get('eventID') | ||||||
|  |             hashID = event.split('.')[0][1:5] | ||||||
|  |             latdeg = eventsource['latitude'] | ||||||
|  |             latmin = (eventsource['latitude'] * 60) / 10000 | ||||||
|  |             londeg = eventsource['longitude'] | ||||||
|  |             lonmin = (eventsource['longitude'] * 60) / 10000 | ||||||
|  | 
 | ||||||
|  |             erh = (eventsource.origin_uncertainty['min_horizontal_uncertainty'] + | ||||||
|  |                    eventsource.origin_uncertainty['max_horizontal_uncertainty']) / 2000 | ||||||
|  |             erz = eventsource.depth_errors['uncertainty'] | ||||||
|  | 
 | ||||||
|  |             stime = eventsource['time'] | ||||||
|  |             syear = stime.year % 100  # Calculate two-digit year | ||||||
|  | 
 | ||||||
|  |             picks = eventinfo.picks | ||||||
|  | 
 | ||||||
|  |             # Write header line including event information for HASH-driver 1 | ||||||
|  |             fid1.write(f"{syear:02d}{stime.month:02d}{stime.day:02d}{stime.hour:02d}{stime.minute:02d}" | ||||||
|  |                        f"{stime.second:05.2f}{latdeg:2d}N{latmin:05.2f}{londeg:3d}E{lonmin:05.2f}" | ||||||
|  |                        f"{eventsource['depth']:6.2f}{eventinfo.magnitudes[0]['mag']:4.2f}{erh:5.2f}{erz:5.2f}{hashID}\n") | ||||||
|  | 
 | ||||||
|  |             # Write header line including event information for HASH-driver 2 | ||||||
|  |             fid2.write(f"{syear:02d}{stime.month:02d}{stime.day:02d}{stime.hour:02d}{stime.minute:02d}" | ||||||
|  |                        f"{stime.second:05.2f}{latdeg}N{latmin:05.2f}{londeg}E{lonmin:6.2f}{eventsource['depth']:5.2f}" | ||||||
|  |                        f"{eventsource['quality']['used_phase_count']:3d}{erh:5.2f}{erz:5.2f}" | ||||||
|  |                        f"{eventinfo.magnitudes[0]['mag']:4.2f}{hashID}\n") | ||||||
|  | 
 | ||||||
|  |             # Write phase lines | ||||||
|  |             for key, arrival in arrivals.items(): | ||||||
|  |                 if 'P' in arrival and arrival['P']['weight'] < 4 and arrival['P']['fm'] is not None: | ||||||
|  |                     stat = key | ||||||
|  |                     ccode = arrival['P']['channel'] | ||||||
|  |                     ncode = arrival['P']['network'] | ||||||
|  |                     Pqual = 'I' if arrival['P']['weight'] < 2 else 'E' | ||||||
|  | 
 | ||||||
|  |                     for pick in picks: | ||||||
|  |                         if pick.waveform_id.station_code == stat: | ||||||
|  |                             resid_picks = pick.get('resource_id') | ||||||
|  |                             for origin_arrival in eventinfo.origins[0].arrivals: | ||||||
|  |                                 if (origin_arrival.get('pick_id') == resid_picks and | ||||||
|  |                                         origin_arrival.phase == 'P'): | ||||||
|  |                                     if len(stat) > 4:  # HASH handles only 4-character station IDs | ||||||
|  |                                         stat = stat[1:5] | ||||||
|  | 
 | ||||||
|  |                                     az = origin_arrival.get('azimuth') | ||||||
|  |                                     inz = origin_arrival.get('takeoff_angle') | ||||||
|  |                                     dist = origin_arrival.get('distance') | ||||||
|  | 
 | ||||||
|  |                                     # Write phase line for HASH-driver 1 | ||||||
|  |                                     fid1.write(f"{stat:<4}{Pqual}P{arrival['P']['fm']}{arrival['P']['weight']:d}" | ||||||
|  |                                                f"{dist:3.1f}{inz:03d}{az:03d}{ccode}\n") | ||||||
|  | 
 | ||||||
|  |                                     # Write phase line for HASH-driver 2 | ||||||
|  |                                     fid2.write(f"{stat:<4} {ncode} {ccode} {Pqual} {arrival['P']['fm']}\n") | ||||||
|  |                                     break | ||||||
|  | 
 | ||||||
|  |             fid1.write(f"{'':<36}{hashID}") | ||||||
|  | 
 | ||||||
|  |     # Prefer Manual Picks over automatic ones if possible | ||||||
|  |     arrivals = chooseArrivals(arrivals)  # Function not defined, assumed to exist | ||||||
|  | 
 | ||||||
|     if fformat == 'NLLoc': |     if fformat == 'NLLoc': | ||||||
|         write_nlloc() |         write_nlloc() | ||||||
|     elif fformat == 'HYPO71': |     elif fformat == 'HYPO71': | ||||||
| @ -471,7 +549,8 @@ def writephases(arrivals, fformat, filename, parameter=None, eventinfo=None): | |||||||
|         write_hypodd() |         write_hypodd() | ||||||
|     elif fformat == 'FOCMEC': |     elif fformat == 'FOCMEC': | ||||||
|         write_focmec() |         write_focmec() | ||||||
| 
 |     elif fformat == 'HASH': | ||||||
|  |         write_hash() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def chooseArrivals(arrivals): | def chooseArrivals(arrivals): | ||||||
| @ -591,7 +670,7 @@ def getQualitiesfromxml(path, errorsP, errorsS, plotflag=1, figure=None, verbosi | |||||||
|                 mstation = pick.waveform_id.station_code |                 mstation = pick.waveform_id.station_code | ||||||
|                 mstation_ext = mstation + '_' |                 mstation_ext = mstation + '_' | ||||||
|                 for mpick in arrivals_copy: |                 for mpick in arrivals_copy: | ||||||
|                     phase = identifyPhase(loopIdentifyPhase(pick.phase_hint)) # MP MP catch if this fails? |                     phase = identifyPhase(loopIdentifyPhase(pick.phase_hint))  # MP MP catch if this fails? | ||||||
|                     if ((mpick.waveform_id.station_code == mstation) or |                     if ((mpick.waveform_id.station_code == mstation) or | ||||||
|                         (mpick.waveform_id.station_code == mstation_ext)) and \ |                         (mpick.waveform_id.station_code == mstation_ext)) and \ | ||||||
|                             (mpick.method_id.id.split('/')[1] == 'auto') and \ |                             (mpick.method_id.id.split('/')[1] == 'auto') and \ | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| 
 | 
 | ||||||
| from pylot.core.io.phases import writephases | from pylot.core.io.phases import write_phases | ||||||
| from pylot.core.util.version import get_git_version as _getVersionString | from pylot.core.util.version import get_git_version as _getVersionString | ||||||
| 
 | 
 | ||||||
| __version__ = _getVersionString() | __version__ = _getVersionString() | ||||||
| @ -25,4 +25,4 @@ def export(picks, fnout, parameter, eventinfo): | |||||||
|     :type eventinfo:  list object |     :type eventinfo:  list object | ||||||
|     ''' |     ''' | ||||||
|     # write phases to FOCMEC-phase file |     # write phases to FOCMEC-phase file | ||||||
|     writephases(picks, 'FOCMEC', fnout, parameter, eventinfo) |     write_phases(picks, 'FOCMEC', fnout, parameter, eventinfo) | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| 
 | 
 | ||||||
| from pylot.core.io.phases import writephases | from pylot.core.io.phases import write_phases | ||||||
| from pylot.core.util.version import get_git_version as _getVersionString | from pylot.core.util.version import get_git_version as _getVersionString | ||||||
| 
 | 
 | ||||||
| __version__ = _getVersionString() | __version__ = _getVersionString() | ||||||
| @ -25,4 +25,4 @@ def export(picks, fnout, parameter, eventinfo): | |||||||
|     :type eventinfo:  list object |     :type eventinfo:  list object | ||||||
|     ''' |     ''' | ||||||
|     # write phases to HASH-phase file |     # write phases to HASH-phase file | ||||||
|     writephases(picks, 'HASH', fnout, parameter, eventinfo) |     write_phases(picks, 'HASH', fnout, parameter, eventinfo) | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| 
 | 
 | ||||||
| from pylot.core.io.phases import writephases | from pylot.core.io.phases import write_phases | ||||||
| from pylot.core.util.version import get_git_version as _getVersionString | from pylot.core.util.version import get_git_version as _getVersionString | ||||||
| 
 | 
 | ||||||
| __version__ = _getVersionString() | __version__ = _getVersionString() | ||||||
| @ -22,4 +22,4 @@ def export(picks, fnout, parameter): | |||||||
|     :type parameter:  object |     :type parameter:  object | ||||||
|     ''' |     ''' | ||||||
|     # write phases to HYPO71-phase file |     # write phases to HYPO71-phase file | ||||||
|     writephases(picks, 'HYPO71', fnout, parameter) |     write_phases(picks, 'HYPO71', fnout, parameter) | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| 
 | 
 | ||||||
| from pylot.core.io.phases import writephases | from pylot.core.io.phases import write_phases | ||||||
| from pylot.core.util.version import get_git_version as _getVersionString | from pylot.core.util.version import get_git_version as _getVersionString | ||||||
| 
 | 
 | ||||||
| __version__ = _getVersionString() | __version__ = _getVersionString() | ||||||
| @ -25,4 +25,4 @@ def export(picks, fnout, parameter, eventinfo): | |||||||
|     :type eventinfo:  list object |     :type eventinfo:  list object | ||||||
|     ''' |     ''' | ||||||
|     # write phases to hypoDD-phase file |     # write phases to hypoDD-phase file | ||||||
|     writephases(picks, 'HYPODD', fnout, parameter, eventinfo) |     write_phases(picks, 'HYPODD', fnout, parameter, eventinfo) | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| 
 | 
 | ||||||
| from pylot.core.io.phases import writephases | from pylot.core.io.phases import write_phases | ||||||
| from pylot.core.util.version import get_git_version as _getVersionString | from pylot.core.util.version import get_git_version as _getVersionString | ||||||
| 
 | 
 | ||||||
| __version__ = _getVersionString() | __version__ = _getVersionString() | ||||||
| @ -22,4 +22,4 @@ def export(picks, fnout, parameter): | |||||||
|     :type parameter:  object |     :type parameter:  object | ||||||
|     ''' |     ''' | ||||||
|     # write phases to HYPOSAT-phase file |     # write phases to HYPOSAT-phase file | ||||||
|     writephases(picks, 'HYPOSAT', fnout, parameter) |     write_phases(picks, 'HYPOSAT', fnout, parameter) | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ import subprocess | |||||||
| 
 | 
 | ||||||
| from obspy import read_events | from obspy import read_events | ||||||
| 
 | 
 | ||||||
| from pylot.core.io.phases import writephases | from pylot.core.io.phases import write_phases | ||||||
| from pylot.core.util.gui import which | from pylot.core.util.gui import which | ||||||
| from pylot.core.util.utils import getPatternLine, runProgram | from pylot.core.util.utils import getPatternLine, runProgram | ||||||
| from pylot.core.util.version import get_git_version as _getVersionString | from pylot.core.util.version import get_git_version as _getVersionString | ||||||
| @ -34,7 +34,7 @@ def export(picks, fnout, parameter): | |||||||
|     :type parameter:  object |     :type parameter:  object | ||||||
|     ''' |     ''' | ||||||
|     # write phases to NLLoc-phase file |     # write phases to NLLoc-phase file | ||||||
|     writephases(picks, 'NLLoc', fnout, parameter) |     write_phases(picks, 'NLLoc', fnout, parameter) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def modify_inputs(ctrfn, root, nllocoutn, phasefn, tttn): | def modify_inputs(ctrfn, root, nllocoutn, phasefn, tttn): | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| # -*- coding: utf-8 -*- | # -*- coding: utf-8 -*- | ||||||
| 
 | 
 | ||||||
| from pylot.core.io.phases import writephases | from pylot.core.io.phases import write_phases | ||||||
| from pylot.core.util.version import get_git_version as _getVersionString | from pylot.core.util.version import get_git_version as _getVersionString | ||||||
| 
 | 
 | ||||||
| __version__ = _getVersionString() | __version__ = _getVersionString() | ||||||
| @ -25,4 +25,4 @@ def export(picks, fnout, eventinfo, parameter=None): | |||||||
|     :type parameter:  object |     :type parameter:  object | ||||||
|     ''' |     ''' | ||||||
|     # write phases to VELEST-phase file |     # write phases to VELEST-phase file | ||||||
|     writephases(picks, 'VELEST', fnout, parameter, eventinfo) |     write_phases(picks, 'VELEST', fnout, parameter, eventinfo) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user