Ejemplo n.º 1
0
    def run_ensemble(self):
        """
        Run an ensemble of models for each suppression policy nad generate the
        output report / results dataset.
        """
        for suppression_policy_name, suppression_policy in self.suppression_policies.items():

            _logger.info(f'Running simulation ensemble for {self.state_name} {self.fips} {suppression_policy_name}')

            if self.run_mode is RunMode.CAN_INFERENCE_DERIVED:
                model_ensemble = [self._load_model_for_fips(scenario=suppression_policy)]

            else:
                raise ValueError(f'Run mode {self.run_mode.value} not supported.')

            if self.agg_level is AggregationLevel.COUNTY:
                self.all_outputs['county_metadata'] = self.county_metadata
                self.all_outputs['county_metadata']['age_distribution'] = list(self.all_outputs['county_metadata']['age_distribution'])
                self.all_outputs['county_metadata']['age_bins'] = list(self.all_outputs['county_metadata']['age_distribution'])

            self.all_outputs[f'{suppression_policy_name}'] = self._generate_output_for_suppression_policy(model_ensemble)

        if self.generate_report and self.output_file_report:
            report = CountyReport(self.fips,
                                  model_ensemble=model_ensemble,
                                  county_outputs=self.all_outputs,
                                  filename=self.output_file_report,
                                  summary=self.summary)
            report.generate_and_save()

        with open(self.output_file_data, 'w') as f:
            json.dump(self.all_outputs, f)
Ejemplo n.º 2
0
    def run_ensemble(self):
        """
        Run an ensemble of models for each suppression policy nad generate the
        output report / results dataset.
        """
        for suppression_policy_name, suppression_policy in self.suppression_policies.items(
        ):

            logging.info(
                f'Running simulation ensemble for {self.state_name} {self.fips} {suppression_policy_name}'
            )

            if suppression_policy_name == 'suppression_policy__inferred':

                artifact_path = get_run_artifact_path(
                    self.fips, RunArtifact.MLE_FIT_MODEL)
                if os.path.exists(artifact_path):
                    with open(artifact_path, 'rb') as f:
                        model_ensemble = [pickle.load(f)]
                else:
                    logging.warning(
                        f'No MLE model found for {self.state_name}: {self.fips}. Skipping.'
                    )
            else:
                parameter_sampler = ParameterEnsembleGenerator(
                    fips=self.fips,
                    N_samples=self.n_samples,
                    t_list=self.t_list,
                    suppression_policy=suppression_policy)
                parameter_ensemble = parameter_sampler.sample_seir_parameters(
                    override_params=self.override_params)
                model_ensemble = list(
                    map(self._run_single_simulation, parameter_ensemble))

            if self.agg_level is AggregationLevel.COUNTY:
                self.all_outputs['county_metadata'] = self.county_metadata
                self.all_outputs['county_metadata']['age_distribution'] = list(
                    self.all_outputs['county_metadata']['age_distribution'])
                self.all_outputs['county_metadata']['age_bins'] = list(
                    self.all_outputs['county_metadata']['age_distribution'])

            self.all_outputs[
                f'{suppression_policy_name}'] = self._generate_output_for_suppression_policy(
                    model_ensemble)

        if self.generate_report and self.output_file_report:
            report = CountyReport(self.fips,
                                  model_ensemble=model_ensemble,
                                  county_outputs=self.all_outputs,
                                  filename=self.output_file_report,
                                  summary=self.summary)
            report.generate_and_save()

        with open(self.output_file_data, 'w') as f:
            json.dump(self.all_outputs, f)
Ejemplo n.º 3
0
    def run_ensemble(self):
        """
        Run an ensemble of models for each suppression policy nad generate the
        output report / results dataset.
        """

        for suppression_policy in self.suppression_policy:
            logging.info(f'Generating For Policy {suppression_policy}')

            parameter_ensemble = ParameterEnsembleGenerator(
                fips=self.fips,
                N_samples=self.n_samples,
                t_list=self.t_list,
                suppression_policy=generate_empirical_distancing_policy(
                    t_list=self.t_list,
                    fips=self.fips,
                    future_suppression=suppression_policy)
            ).sample_seir_parameters()

            model_ensemble = list(
                map(self._run_single_simulation, parameter_ensemble))

            logging.info(
                f'Generating Report for suppression policy {suppression_policy}'
            )
            self.all_outputs[f'suppression_policy__{suppression_policy}'] = \
                self._generate_output_for_suppression_policy(model_ensemble, suppression_policy)

        if self.generate_report:
            report = CountyReport(self.fips,
                                  model_ensemble=model_ensemble,
                                  county_outputs=self.all_outputs,
                                  filename=self.output_file_report,
                                  summary=self.summary)
            report.generate_and_save()

        with open(self.output_file_data, 'w') as f:
            json.dump(self.all_outputs, f)