示例#1
0
    def test_setup_tasks_with_1imt(self):
        """
        setup_tasks should create tasks for 1 imt and mean curves
        calculation
        """

        # Arrange
        calculation = mock.Mock()
        calculation.individual_curves_per_location = mock.Mock(
            return_value=self.curves_per_location)

        calculation.intensity_measure_types_and_levels = {
            'SA(10)': range(1, 10)
            }
        calculation.mean_hazard_curves = True
        calculation.should_compute_quantile_curves.return_value = None

        # Act
        tasks = setup_tasks(
            mock.Mock(), calculation, self.curve_finder, self.writers,
            self.chunk_size)

        # Assert
        self.assertEqual(5, len(tasks))
        self.assertEqual(
            1, self.writers['mean_curves'].call_count)
        self.assertEqual(
            0, self.writers['quantile_curves'].call_count)
示例#2
0
    def post_process(self):
        """
        If requested, perform additional processing of GMFs to produce hazard
        curves.
        """
        logs.LOG.debug('> starting post processing')

        if self.hc.hazard_curves_from_gmfs:
            post_processing.do_post_process(self.job)

            # If `mean_hazard_curves` is True and/or `quantile_hazard_curves`
            # has some value (not an empty list), do this additional
            # post-processing.
            if self.hc.mean_hazard_curves or self.hc.quantile_hazard_curves:
                tasks = cls_post_processing.setup_tasks(
                    self.job, self.job.hazard_calculation,
                    curve_finder=models.HazardCurveData.objects,
                    writers=dict(mean_curves=MeanCurveWriter,
                                 quantile_curves=QuantileCurveWriter))

                utils_tasks.distribute(
                        cls_post_processing.do_post_process,
                        ("post_processing_task", tasks),
                        tf_args=dict(job_id=self.job.id))

        logs.LOG.debug('< done with post processing')
示例#3
0
    def test_setup_tasks_with_2imt(self):
        """
        setup_tasks should creat tasks for 2 imt and for mean and
        quantile calculation
        """

        # Arrange
        calculation = mock.Mock()
        calculation.individual_curves_per_location = mock.Mock(
            return_value=self.curves_per_location)

        calculation.intensity_measure_types_and_levels = {
            'PGA': range(1, 10),
            'SA(10)': range(1, 10)
            }
        calculation.mean_hazard_curves = True
        calculation.quantile_hazard_curves = [0.5, 0.3]
        calculation.should_compute_hazard_curves.return_value = True

        # Act
        tasks = setup_tasks(
            mock.Mock(), calculation, self.curve_finder, self.writers,
            self.chunk_size)

        # Assert
        self.assertEqual(30, len(tasks))
        self.assertEqual(2, self.writers['mean_curves'].call_count)
        self.assertEqual(4, self.writers['quantile_curves'].call_count)