Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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