def save_hazard_curves(self): """ Post-execution actions. At the moment, all we do is finalize the hazard curve results. """ imtls = self.hc.intensity_measure_types_and_levels points = self.hc.points_to_compute() sorted_imts = sorted(imtls) curves_by_imt = dict((imt, []) for imt in sorted_imts) individual_curves = self.job.get_param( 'individual_curves', missing=True) for rlz in self._get_realizations(): if individual_curves: # create a multi-imt curve multicurve = models.Output.objects.create_output( self.job, "hc-multi-imt-rlz-%s" % rlz.id, "hazard_curve_multi") models.HazardCurve.objects.create( output=multicurve, lt_realization=rlz, investigation_time=self.hc.investigation_time) with self.monitor('building curves per realization'): imt_curves = zip( sorted_imts, models.build_curves(rlz, self.curves)) for imt, curves in imt_curves: if individual_curves: self.save_curves_for_rlz_imt( rlz, imt, imtls[imt], points, curves) curves_by_imt[imt].append(curves) self.curves = {} # save memory for the post-processing phase if self.hc.mean_hazard_curves or self.hc.quantile_hazard_curves: self.curves_by_imt = curves_by_imt
def save_hazard_curves(self): """ Post-execution actions. At the moment, all we do is finalize the hazard curve results. """ imtls = self.hc.intensity_measure_types_and_levels points = self.hc.points_to_compute() sorted_imts = sorted(imtls) curves_by_imt = dict((imt, []) for imt in sorted_imts) for rlz in self._get_realizations(): # create a multi-imt curve multicurve = models.Output.objects.create_output( self.job, "hc-multi-imt-rlz-%s" % rlz.id, "hazard_curve_multi") models.HazardCurve.objects.create( output=multicurve, lt_realization=rlz, investigation_time=self.hc.investigation_time) with self.monitor('building curves per realization'): imt_curves = zip( sorted_imts, models.build_curves(rlz, self.curves)) for imt, curves in imt_curves: curves_by_imt[imt].append(curves) # create a new `HazardCurve` 'container' record for each # realization for each intensity measure type hc_im_type, sa_period, sa_damping = from_string(imt) # save output hco = models.Output.objects.create( oq_job=self.job, display_name="Hazard Curve rlz-%s-%s" % (rlz.id, imt), output_type='hazard_curve', ) # save hazard_curve haz_curve = models.HazardCurve.objects.create( output=hco, lt_realization=rlz, investigation_time=self.hc.investigation_time, imt=hc_im_type, imls=imtls[imt], sa_period=sa_period, sa_damping=sa_damping, ) # save hazard_curve_data logs.LOG.info('saving %d hazard curves for %s, imt=%s', len(points), hco, imt) writer.CacheInserter.saveall([models.HazardCurveData( hazard_curve=haz_curve, poes=list(poes), location='POINT(%s %s)' % (p.longitude, p.latitude), weight=rlz.weight) for p, poes in zip(points, curves)]) self.curves = {} # save memory for the post-processing phase if self.hc.mean_hazard_curves or self.hc.quantile_hazard_curves: self.curves_by_imt = curves_by_imt
def save_hazard_curves(self): """ Post-execution actions. At the moment, all we do is finalize the hazard curve results. """ if not self.acc: return imtls = self.oqparam.imtls points = models.HazardSite.objects.filter( hazard_calculation=self.job).order_by('id') sorted_imts = sorted(imtls) curves_by_imt = dict((imt, []) for imt in sorted_imts) individual_curves = self.job.get_param( 'individual_curves', missing=True) for rlz in self._realizations: if individual_curves: # create a multi-imt curve multicurve = models.Output.objects.create_output( self.job, "hc-multi-imt-rlz-%s" % rlz.id, "hazard_curve_multi") models.HazardCurve.objects.create( output=multicurve, lt_realization=rlz, investigation_time=self.oqparam.investigation_time) with self.monitor('building curves per realization'): the_curves = models.build_curves(rlz, self.acc) if isinstance(the_curves, float) and the_curves == 0: the_curves = self.zeros for imt, curves in zip(sorted_imts, the_curves): if individual_curves: self.save_curves_for_rlz_imt( rlz, imt, imtls[imt], points, curves) curves_by_imt[imt].append(curves) self.acc = {} # save memory for the post-processing phase if self.mean_hazard_curves or self.quantile_hazard_curves: self.curves_by_imt = curves_by_imt
def save_hazard_curves(self): """ Post-execution actions. At the moment, all we do is finalize the hazard curve results. """ if not self.acc: return imtls = self.oqparam.imtls points = models.HazardSite.objects.filter( hazard_calculation=self.job).order_by('id') sorted_imts = sorted(imtls) curves_by_imt = dict((imt, []) for imt in sorted_imts) individual_curves = self.job.get_param('individual_curves', missing=True) for rlz in self._realizations: if individual_curves: # create a multi-imt curve multicurve = models.Output.objects.create_output( self.job, "hc-multi-imt-rlz-%s" % rlz.id, "hazard_curve_multi") models.HazardCurve.objects.create( output=multicurve, lt_realization=rlz, investigation_time=self.oqparam.investigation_time) with self.monitor('building curves per realization'): imt_curves = zip(sorted_imts, models.build_curves(rlz, self.acc)) for imt, curves in imt_curves: if individual_curves: self.save_curves_for_rlz_imt(rlz, imt, imtls[imt], points, curves) curves_by_imt[imt].append(curves) self.acc = {} # save memory for the post-processing phase if self.mean_hazard_curves or self.quantile_hazard_curves: self.curves_by_imt = curves_by_imt