def save_loss_curves(self, result): """ Saving loss curves in the datastore. :param result: aggregated result of the task classical_risk """ ltypes = self.riskmodel.loss_types loss_curves = numpy.zeros((self.N, self.R), self.loss_curve_dt) for l, r, aid, lcurve in result['loss_curves']: loss_curves_lt = loss_curves[ltypes[l]] for i, name in enumerate(loss_curves_lt.dtype.names): if name.startswith('avg'): loss_curves_lt[name][aid, r] = lcurve[i] else: base.set_array(loss_curves_lt[name][aid, r], lcurve[i]) self.datastore['loss_curves-rlzs'] = loss_curves # loss curves stats if self.R > 1: stat_curves = numpy.zeros((self.N, self.Q1), self.loss_curve_dt) for l, aid, statcurve in result['stat_curves']: stat_curves_lt = stat_curves[ltypes[l]] for name in stat_curves_lt.dtype.names: for s in range(self.Q1): if name.startswith('avg'): stat_curves_lt[name][aid, s] = statcurve[name][s] else: base.set_array(stat_curves_lt[name][aid, s], statcurve[name][s]) self.datastore['loss_curves-stats'] = stat_curves
def save_loss_curves(self, result): """ Saving loss curves in the datastore. :param result: aggregated result of the task classical_risk """ ltypes = self.riskmodel.loss_types loss_curves = numpy.zeros((self.N, self.R), self.loss_curve_dt) for l, r, aid, lcurve in result['loss_curves']: loss_curves_lt = loss_curves[ltypes[l]] for i, name in enumerate(loss_curves_lt.dtype.names): if name.startswith('avg'): loss_curves_lt[name][aid, r] = lcurve[i] else: base.set_array(loss_curves_lt[name][aid, r], lcurve[i]) self.datastore['loss_curves-rlzs'] = loss_curves # loss curves stats if self.R > 1: stat_curves = numpy.zeros((self.N, self.Q1), self.loss_curve_dt) for l, aid, statcurve in result['stat_curves']: stat_curves_lt = stat_curves[ltypes[l]] for name in stat_curves_lt.dtype.names: for s in range(self.Q1): if name.startswith('avg'): stat_curves_lt[name][aid, s] = statcurve[name][s] else: base.set_array(stat_curves_lt[name][aid, s], statcurve[name][s]) self.datastore['loss_curves-stats'] = stat_curves
def post_execute(self, result): """ Saving loss curves in the datastore. :param result: aggregated result of the task classical_risk """ loss_ratios = { cb.loss_type: cb.curve_resolution for cb in self.riskmodel.curve_builder if cb.user_provided } self.loss_curve_dt = scientific.build_loss_curve_dt( loss_ratios, self.oqparam.conditional_loss_poes, self.I) ltypes = self.riskmodel.loss_types loss_curves = numpy.zeros((self.N, self.R), self.loss_curve_dt) for l, r, aid, lcurve in result['loss_curves']: loss_curves_lt = loss_curves[ltypes[l]] for i, name in enumerate(loss_curves_lt.dtype.names): if name.startswith('avg'): loss_curves_lt[name][aid, r] = lcurve[i] else: # 'losses', 'poes' base.set_array(loss_curves_lt[name][aid, r], lcurve[i]) self.datastore['loss_curves-rlzs'] = loss_curves self.datastore.set_nbytes('loss_curves-rlzs') # loss curves stats if self.R > 1: stat_curves = numpy.zeros((self.N, self.S), self.loss_curve_dt) for l, aid, losses, statpoes, statloss in result['stat_curves']: stat_curves_lt = stat_curves[ltypes[l]] for s in range(self.S): stat_curves_lt['avg'][aid, s] = statloss[s] base.set_array(stat_curves_lt['poes'][aid, s], statpoes[s]) base.set_array(stat_curves_lt['losses'][aid, s], losses) self.datastore['loss_curves-stats'] = stat_curves self.datastore.set_nbytes('loss_curves-stats')
def post_execute(self, result): """ Saving loss curves in the datastore. :param result: aggregated result of the task classical_risk """ curve_res = { cp.loss_type: cp.curve_resolution for cp in self.crmodel.curve_params if cp.user_provided } self.loss_curve_dt = scientific.build_loss_curve_dt( curve_res, insured_losses=False) ltypes = self.crmodel.loss_types # loss curves stats are generated always stats = list(self.oqparam.hazard_stats()) stat_curves = numpy.zeros((self.A, self.S), self.loss_curve_dt) avg_losses = numpy.zeros((self.A, self.S, self.L), F32) for li, a, losses, statpoes, statloss in result['stat_curves']: stat_curves_lt = stat_curves[ltypes[li]] for s in range(self.S): avg_losses[a, s, li] = statloss[s] base.set_array(stat_curves_lt['poes'][a, s], statpoes[s]) base.set_array(stat_curves_lt['losses'][a, s], losses) self.datastore['avg_losses-stats'] = avg_losses self.datastore.set_shape_descr('avg_losses-stats', asset_id=self.assetcol['id'], stat=stats, loss_type=self.oqparam.loss_types) self.datastore['loss_curves-stats'] = stat_curves self.datastore.set_attrs('loss_curves-stats', stat=stats) if self.R > 1: # individual realizations saved only if many loss_curves = numpy.zeros((self.A, self.R), self.loss_curve_dt) avg_losses = numpy.zeros((self.A, self.R, self.L), F32) for li, r, a, (losses, poes, avg) in result['loss_curves']: lc = loss_curves[a, r][ltypes[li]] avg_losses[a, r, li] = avg base.set_array(lc['losses'], losses) base.set_array(lc['poes'], poes) self.datastore['avg_losses-rlzs'] = avg_losses self.datastore.set_shape_descr('avg_losses-rlzs', asset_id=self.assetcol['id'], rlz=numpy.arange(self.R), loss_type=self.oqparam.loss_types) self.datastore['loss_curves-rlzs'] = loss_curves
def post_execute(self, result): """ Saving loss curves in the datastore. :param result: aggregated result of the task classical_risk """ curve_res = { cp.loss_type: cp.curve_resolution for cp in self.riskmodel.curve_params if cp.user_provided } self.loss_curve_dt = scientific.build_loss_curve_dt( curve_res, self.oqparam.insured_losses) ltypes = self.riskmodel.loss_types # loss curves stats are generated always stats = [encode(n) for (n, f) in self.oqparam.risk_stats()] stat_curves = numpy.zeros((self.A, self.S), self.loss_curve_dt) avg_losses = numpy.zeros((self.A, self.R, self.L * self.I), F32) for l, a, losses, statpoes, statloss in result['stat_curves']: stat_curves_lt = stat_curves[ltypes[l]] for s in range(self.S): avg_losses[a, s, l] = statloss[s] base.set_array(stat_curves_lt['poes'][a, s], statpoes[s]) base.set_array(stat_curves_lt['losses'][a, s], losses) self.datastore['avg_losses-stats'] = avg_losses self.datastore.set_attrs('avg_losses-stats', stats=stats) self.datastore['loss_curves-stats'] = stat_curves self.datastore.set_attrs('loss_curves-stats', stats=stats) if self.R > 1: # individual realizations saved only if many loss_curves = numpy.zeros((self.A, self.R), self.loss_curve_dt) avg_losses = numpy.zeros((self.A, self.R, self.L * self.I), F32) for l, r, a, (losses, poes, avg) in result['loss_curves']: lc = loss_curves[a, r][ltypes[l]] avg_losses[a, r, l] = avg base.set_array(lc['losses'], losses) base.set_array(lc['poes'], poes) self.datastore['avg_losses-rlzs'] = avg_losses self.datastore['loss_curves-rlzs'] = loss_curves
def post_execute(self, result): """ Saving loss curves in the datastore. :param result: aggregated result of the task classical_risk """ curve_res = {cp.loss_type: cp.curve_resolution for cp in self.riskmodel.curve_params if cp.user_provided} self.loss_curve_dt = scientific.build_loss_curve_dt( curve_res, insured_losses=False) ltypes = self.riskmodel.loss_types # loss curves stats are generated always stats = encode(list(self.oqparam.hazard_stats())) stat_curves = numpy.zeros((self.A, self.S), self.loss_curve_dt) avg_losses = numpy.zeros((self.A, self.S, self.L), F32) for l, a, losses, statpoes, statloss in result['stat_curves']: stat_curves_lt = stat_curves[ltypes[l]] for s in range(self.S): avg_losses[a, s, l] = statloss[s] base.set_array(stat_curves_lt['poes'][a, s], statpoes[s]) base.set_array(stat_curves_lt['losses'][a, s], losses) self.datastore['avg_losses-stats'] = avg_losses self.datastore.set_attrs('avg_losses-stats', stats=stats) self.datastore['loss_curves-stats'] = stat_curves self.datastore.set_attrs('loss_curves-stats', stats=stats) if self.R > 1: # individual realizations saved only if many loss_curves = numpy.zeros((self.A, self.R), self.loss_curve_dt) avg_losses = numpy.zeros((self.A, self.R, self.L), F32) for l, r, a, (losses, poes, avg) in result['loss_curves']: lc = loss_curves[a, r][ltypes[l]] avg_losses[a, r, l] = avg base.set_array(lc['losses'], losses) base.set_array(lc['poes'], poes) self.datastore['avg_losses-rlzs'] = avg_losses self.datastore['loss_curves-rlzs'] = loss_curves