[bugfix] fixed some bugs resulting from restructuring of serial/parallel picking
This commit is contained in:
parent
319343499b
commit
3b52b7a28f
@ -53,7 +53,7 @@ def autoPyLoT(input_dict=None, parameter=None, inputfile=None, fnames=None, even
|
|||||||
:type savepath: str
|
:type savepath: str
|
||||||
:param savexml: export results in XML file if True
|
:param savexml: export results in XML file if True
|
||||||
:type savexml: bool
|
:type savexml: bool
|
||||||
:param station: list of station names or 'all' to pick all stations
|
:param station: choose specific station name or 'all' to pick all stations
|
||||||
:type station: str
|
:type station: str
|
||||||
:param iplot: logical variable for plotting: 0=none, 1=partial, 2=all
|
:param iplot: logical variable for plotting: 0=none, 1=partial, 2=all
|
||||||
:type iplot: int
|
:type iplot: int
|
||||||
@ -149,8 +149,8 @@ def autoPyLoT(input_dict=None, parameter=None, inputfile=None, fnames=None, even
|
|||||||
datastructure.modifyFields(**dsfields)
|
datastructure.modifyFields(**dsfields)
|
||||||
datastructure.setExpandFields(exf)
|
datastructure.setExpandFields(exf)
|
||||||
|
|
||||||
# check if default location routine NLLoc is available
|
# check if default location routine NLLoc is available and all stations are used
|
||||||
if real_None(parameter['nllocbin']):
|
if real_None(parameter['nllocbin']) and station=='all':
|
||||||
locflag = 1
|
locflag = 1
|
||||||
# get NLLoc-root path
|
# get NLLoc-root path
|
||||||
nllocroot = parameter.get('nllocroot')
|
nllocroot = parameter.get('nllocroot')
|
||||||
|
@ -70,21 +70,14 @@ def autopickevent(data, param, iplot=0, fig_dict=None, fig_dict_wadatijack=None,
|
|||||||
|
|
||||||
for station in stations:
|
for station in stations:
|
||||||
topick = data.select(station=station)
|
topick = data.select(station=station)
|
||||||
|
input_tuples.append((topick, param, apverbose, iplot, fig_dict, metadata, origin))
|
||||||
if iplot is None or iplot == 'None' or iplot == 0:
|
|
||||||
input_tuples.append((topick, param, apverbose, metadata, origin))
|
|
||||||
if iplot > 0:
|
|
||||||
all_onsets[station] = autopickstation(topick, param, verbose=apverbose,
|
|
||||||
iplot=iplot, fig_dict=fig_dict,
|
|
||||||
metadata=metadata, origin=origin)[0]
|
|
||||||
|
|
||||||
if iplot > 0:
|
if iplot > 0:
|
||||||
print('iPlot Flag active: NO MULTIPROCESSING possible.')
|
print('iPlot Flag active: NO MULTIPROCESSING possible.')
|
||||||
return all_onsets
|
ncores = 1
|
||||||
|
|
||||||
# rename str for ncores in case ncores == 0 (use all cores)
|
# rename ncores for string representation in case ncores == 0 (use all cores)
|
||||||
ncores_str = ncores if ncores != 0 else 'all available'
|
ncores_str = ncores if ncores != 0 else 'all available'
|
||||||
|
|
||||||
print('Autopickstation: Distribute autopicking for {} '
|
print('Autopickstation: Distribute autopicking for {} '
|
||||||
'stations on {} cores.'.format(len(input_tuples), ncores_str))
|
'stations on {} cores.'.format(len(input_tuples), ncores_str))
|
||||||
|
|
||||||
@ -93,7 +86,6 @@ def autopickevent(data, param, iplot=0, fig_dict=None, fig_dict_wadatijack=None,
|
|||||||
else:
|
else:
|
||||||
results = parallel_picking(input_tuples, ncores)
|
results = parallel_picking(input_tuples, ncores)
|
||||||
|
|
||||||
|
|
||||||
for result, station in results:
|
for result, station in results:
|
||||||
if type(result) == dict:
|
if type(result) == dict:
|
||||||
all_onsets[station] = result
|
all_onsets[station] = result
|
||||||
@ -102,6 +94,10 @@ def autopickevent(data, param, iplot=0, fig_dict=None, fig_dict_wadatijack=None,
|
|||||||
result = 'Picker exited unexpectedly.'
|
result = 'Picker exited unexpectedly.'
|
||||||
print('Could not pick a station: {}\nReason: {}'.format(station, result))
|
print('Could not pick a station: {}\nReason: {}'.format(station, result))
|
||||||
|
|
||||||
|
# no Wadati/JK for single station (also valid for tuning mode)
|
||||||
|
if len(stations) == 1:
|
||||||
|
return all_onsets
|
||||||
|
|
||||||
# quality control
|
# quality control
|
||||||
# median check and jackknife on P-onset times
|
# median check and jackknife on P-onset times
|
||||||
jk_checked_onsets = checkPonsets(all_onsets, mdttolerance, jackfactor, iplot, fig_dict_wadatijack)
|
jk_checked_onsets = checkPonsets(all_onsets, mdttolerance, jackfactor, iplot, fig_dict_wadatijack)
|
||||||
@ -132,10 +128,12 @@ def call_autopickstation(input_tuple):
|
|||||||
:return: dictionary containing P pick, S pick and station name
|
:return: dictionary containing P pick, S pick and station name
|
||||||
:rtype: dict
|
:rtype: dict
|
||||||
"""
|
"""
|
||||||
wfstream, pickparam, verbose, metadata, origin = input_tuple
|
wfstream, pickparam, verbose, iplot, fig_dict, metadata, origin = input_tuple
|
||||||
|
if fig_dict:
|
||||||
|
print('Running in interactive mode')
|
||||||
# multiprocessing not possible with interactive plotting
|
# multiprocessing not possible with interactive plotting
|
||||||
try:
|
try:
|
||||||
return autopickstation(wfstream, pickparam, verbose, iplot=0, metadata=metadata, origin=origin)
|
return autopickstation(wfstream, pickparam, verbose, fig_dict=fig_dict, iplot=iplot, metadata=metadata, origin=origin)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return e, wfstream[0].stats.station
|
return e, wfstream[0].stats.station
|
||||||
|
|
||||||
|
@ -118,8 +118,12 @@ def gen_Pool(ncores=0):
|
|||||||
"""
|
"""
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
|
|
||||||
if ncores == 0:
|
ncores_max = multiprocessing.cpu_count()
|
||||||
ncores = multiprocessing.cpu_count()
|
|
||||||
|
if ncores == 0 or ncores > ncores_max:
|
||||||
|
ncores = ncores_max
|
||||||
|
if ncores > ncores_max:
|
||||||
|
print('Reduced number of requested CPU slots to available number: {}'.format(ncores))
|
||||||
|
|
||||||
print('gen_Pool: Generated multiprocessing Pool with {} cores\n'.format(ncores))
|
print('gen_Pool: Generated multiprocessing Pool with {} cores\n'.format(ncores))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user