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)
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')
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)