本文整理汇总了Python中openquake.baselib.general.AccumDict.rup_data方法的典型用法代码示例。如果您正苦于以下问题:Python AccumDict.rup_data方法的具体用法?Python AccumDict.rup_data怎么用?Python AccumDict.rup_data使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类openquake.baselib.general.AccumDict
的用法示例。
在下文中一共展示了AccumDict.rup_data方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: compute_ruptures
# 需要导入模块: from openquake.baselib.general import AccumDict [as 别名]
# 或者: from openquake.baselib.general.AccumDict import rup_data [as 别名]
def compute_ruptures(sources, src_filter, gsims, monitor):
"""
:param sources:
List of commonlib.source.Source tuples
:param src_filter:
a source site filter
:param gsims:
a list of GSIMs for the current tectonic region model
:param monitor:
monitor instance
:returns:
a dictionary src_group_id -> [Rupture instances]
"""
# NB: by construction each block is a non-empty list with
# sources of the same src_group_id
grp_id = sources[0].src_group_id
trt = sources[0].tectonic_region_type
eb_ruptures = []
calc_times = []
rup_mon = monitor('filtering ruptures', measuremem=False)
num_samples = monitor.samples
num_events = 0
# Compute and save stochastic event sets
for src, s_sites in src_filter(sources):
t0 = time.time()
if s_sites is None:
continue
max_dist = src_filter.integration_distance[trt]
rupture_filter = functools.partial(
filter_sites_by_distance_to_rupture,
integration_distance=max_dist, sites=s_sites)
num_occ_by_rup = sample_ruptures(
src, monitor.ses_per_logic_tree_path, num_samples,
monitor.seed)
# NB: the number of occurrences is very low, << 1, so it is
# more efficient to filter only the ruptures that occur, i.e.
# to call sample_ruptures *before* the filtering
for ebr in build_eb_ruptures(
src, num_occ_by_rup, rupture_filter, monitor.seed, rup_mon):
eb_ruptures.append(ebr)
num_events += ebr.multiplicity
dt = time.time() - t0
calc_times.append((src.id, dt))
res = AccumDict({grp_id: eb_ruptures})
res.num_events = num_events
res.calc_times = calc_times
res.rup_data = {grp_id: calc.RuptureData(trt, gsims).to_array(eb_ruptures)}
return res
示例2: compute_ruptures
# 需要导入模块: from openquake.baselib.general import AccumDict [as 别名]
# 或者: from openquake.baselib.general.AccumDict import rup_data [as 别名]
def compute_ruptures(sources, sitecol, siteidx, rlzs_assoc, monitor):
"""
:param sources:
List of commonlib.source.Source tuples
:param sitecol:
a :class:`openquake.hazardlib.site.SiteCollection` instance
:param siteidx:
always equal to 0
:param rlzs_assoc:
a :class:`openquake.commonlib.source.RlzsAssoc` instance
:param monitor:
monitor instance
:returns:
a dictionary src_group_id -> [Rupture instances]
"""
assert siteidx == 0, (
'siteidx can be nonzero only for the classical_tiling calculations: '
'tiling with the EventBasedRuptureCalculator is an error')
# NB: by construction each block is a non-empty list with
# sources of the same src_group_id
src_group_id = sources[0].src_group_id
oq = monitor.oqparam
trt = sources[0].tectonic_region_type
max_dist = oq.maximum_distance[trt]
cmaker = ContextMaker(rlzs_assoc.gsims_by_grp_id[src_group_id])
params = sorted(cmaker.REQUIRES_RUPTURE_PARAMETERS)
rup_data_dt = numpy.dtype(
[('rupserial', U32), ('multiplicity', U16),
('numsites', U32), ('occurrence_rate', F32)] + [
(param, F32) for param in params])
eb_ruptures = []
rup_data = []
calc_times = []
rup_mon = monitor('filtering ruptures', measuremem=False)
num_samples = rlzs_assoc.samples[src_group_id]
# Compute and save stochastic event sets
for src in sources:
t0 = time.time()
s_sites = src.filter_sites_by_distance_to_source(max_dist, sitecol)
if s_sites is None:
continue
rupture_filter = functools.partial(
filter_sites_by_distance_to_rupture,
integration_distance=max_dist, sites=s_sites)
num_occ_by_rup = sample_ruptures(
src, oq.ses_per_logic_tree_path, num_samples,
rlzs_assoc.seed)
# NB: the number of occurrences is very low, << 1, so it is
# more efficient to filter only the ruptures that occur, i.e.
# to call sample_ruptures *before* the filtering
for ebr in build_eb_ruptures(
src, num_occ_by_rup, rupture_filter, oq.random_seed, rup_mon):
nsites = len(ebr.indices)
try:
rate = ebr.rupture.occurrence_rate
except AttributeError: # for nonparametric sources
rate = numpy.nan
rc = cmaker.make_rupture_context(ebr.rupture)
ruptparams = tuple(getattr(rc, param) for param in params)
rup_data.append((ebr.serial, len(ebr.etags), nsites, rate) +
ruptparams)
eb_ruptures.append(ebr)
dt = time.time() - t0
calc_times.append((src.id, dt))
res = AccumDict({src_group_id: eb_ruptures})
res.calc_times = calc_times
res.rup_data = numpy.array(rup_data, rup_data_dt)
res.trt = trt
return res
示例3: compute_ruptures
# 需要导入模块: from openquake.baselib.general import AccumDict [as 别名]
# 或者: from openquake.baselib.general.AccumDict import rup_data [as 别名]
def compute_ruptures(sources, sitecol, gsims, monitor):
"""
:param sources:
List of commonlib.source.Source tuples
:param sitecol:
a :class:`openquake.hazardlib.site.SiteCollection` instance
:param gsims:
a list of GSIMs for the current tectonic region model
:param monitor:
monitor instance
:returns:
a dictionary src_group_id -> [Rupture instances]
"""
# NB: by construction each block is a non-empty list with
# sources of the same src_group_id
src_group_id = sources[0].src_group_id
trt = sources[0].tectonic_region_type
max_dist = monitor.maximum_distance[trt]
cmaker = ContextMaker(gsims)
params = sorted(cmaker.REQUIRES_RUPTURE_PARAMETERS)
rup_data_dt = numpy.dtype(
[('rupserial', U32), ('multiplicity', U16),
('numsites', U32), ('occurrence_rate', F64)] + [
(param, F64) for param in params])
eb_ruptures = []
rup_data = []
calc_times = []
rup_mon = monitor('filtering ruptures', measuremem=False)
num_samples = monitor.samples
num_events = 0
# Compute and save stochastic event sets
for src in sources:
t0 = time.time()
s_sites = src.filter_sites_by_distance_to_source(max_dist, sitecol)
if s_sites is None:
continue
rupture_filter = functools.partial(
filter_sites_by_distance_to_rupture,
integration_distance=max_dist, sites=s_sites)
num_occ_by_rup = sample_ruptures(
src, monitor.ses_per_logic_tree_path, num_samples,
monitor.seed)
# NB: the number of occurrences is very low, << 1, so it is
# more efficient to filter only the ruptures that occur, i.e.
# to call sample_ruptures *before* the filtering
for ebr in build_eb_ruptures(
src, num_occ_by_rup, rupture_filter, monitor.seed, rup_mon):
nsites = len(ebr.indices)
try:
rate = ebr.rupture.occurrence_rate
except AttributeError: # for nonparametric sources
rate = numpy.nan
rc = cmaker.make_rupture_context(ebr.rupture)
ruptparams = tuple(getattr(rc, param) for param in params)
rup_data.append((ebr.serial, ebr.multiplicity, nsites, rate) +
ruptparams)
eb_ruptures.append(ebr)
num_events += ebr.multiplicity
dt = time.time() - t0
calc_times.append((src.id, dt))
res = AccumDict({src_group_id: eb_ruptures})
res.num_events = num_events
res.calc_times = calc_times
res.rup_data = numpy.array(rup_data, rup_data_dt)
res.trt = trt
return res