def test_same_distribution_after_business_subtraction_control_for_business(self):
        """Removes 1,750 sector_1 businesses and 500 sector 15 businesses.
        Test that the distribution (in %) of sector 1 businesses and sector 15 businesses across buildings before and after the subtraction are
        relatively equal.
        """
        storage = StorageFactory().get_storage('dict_storage')

        business_table_name = 'business_set'
        storage.write_table(table_name=business_table_name, table_data=self.business_data)
        business_set = BusinessDataset(in_storage=storage, in_table_name=business_table_name)

        ect_set_table_name = 'ect_set'
        storage.write_table(table_name=ect_set_table_name, table_data=self.annual_business_control_totals_data)
        ect_set = EmploymentControlTotalDataset(in_storage=storage, in_table_name=ect_set_table_name)

        # unplace half of the  businesses
        business_set.modify_attribute(name="building_id", data=zeros(int(business_set.size()/2)), index=arange(int(business_set.size()/2)))
        #run model 
        model = BusinessTransitionModel()
        model.run(year=2000, business_set=business_set, control_totals=ect_set)
        results = business_set.size()
        should_be = [10750]
        self.assertEqual(ma.allequal(should_be, results), True, "Error in total number of businesses.")

        def run_model():
            storage = StorageFactory().get_storage('dict_storage')

            business_set_table_name = 'business_set'
            storage.write_table(
                table_name=business_set_table_name,
                table_data=self.business_data,
                )

            business_set = BusinessDataset(in_storage=storage, in_table_name=business_set_table_name)

            model = BusinessTransitionModel()
            model.run(year=2000, business_set=business_set, control_totals=ect_set)
            # check that the distribution of businesses is the same before and after subtracting businesses
            results = self.get_count_all_sectors_and_buildings(business_set)
            return results

        expected_results = array([4000.0/7000.0*5250.0, 1000, 1000.0/3000.0*2500, 2000.0/7000.0*5250.0, 1000,
                                  1000/3000.0*2500, 1000.0/7000.0*5250.0, 1000, 1000/3000.0*2500])

        self.run_stochastic_test(__file__, run_model, expected_results, 10)
Exemplo n.º 2
0
    def test_same_distribution_after_business_subtraction_control_for_business(
            self):
        """Removes 1,750 sector_1 businesses and 500 sector 15 businesses.
        Test that the distribution (in %) of sector 1 businesses and sector 15 businesses across buildings before and after the subtraction are
        relatively equal.
        """
        storage = StorageFactory().get_storage('dict_storage')

        business_table_name = 'business_set'
        storage.write_table(table_name=business_table_name,
                            table_data=self.business_data)
        business_set = BusinessDataset(in_storage=storage,
                                       in_table_name=business_table_name)

        ect_set_table_name = 'ect_set'
        storage.write_table(
            table_name=ect_set_table_name,
            table_data=self.annual_business_control_totals_data)
        ect_set = EmploymentControlTotalDataset(
            in_storage=storage, in_table_name=ect_set_table_name)

        # unplace half of the  businesses
        business_set.modify_attribute(name="building_id",
                                      data=zeros(int(business_set.size() / 2)),
                                      index=arange(int(business_set.size() /
                                                       2)))
        #run model
        model = BusinessTransitionModel()
        model.run(year=2000, business_set=business_set, control_totals=ect_set)
        results = business_set.size()
        should_be = [10750]
        self.assertEqual(ma.allequal(should_be, results), True,
                         "Error in total number of businesses.")

        def run_model():
            storage = StorageFactory().get_storage('dict_storage')

            business_set_table_name = 'business_set'
            storage.write_table(
                table_name=business_set_table_name,
                table_data=self.business_data,
            )

            business_set = BusinessDataset(
                in_storage=storage, in_table_name=business_set_table_name)

            model = BusinessTransitionModel()
            model.run(year=2000,
                      business_set=business_set,
                      control_totals=ect_set)
            # check that the distribution of businesses is the same before and after subtracting businesses
            results = self.get_count_all_sectors_and_buildings(business_set)
            return results

        expected_results = array([
            4000.0 / 7000.0 * 5250.0, 1000, 1000.0 / 3000.0 * 2500,
            2000.0 / 7000.0 * 5250.0, 1000, 1000 / 3000.0 * 2500,
            1000.0 / 7000.0 * 5250.0, 1000, 1000 / 3000.0 * 2500
        ])

        self.run_stochastic_test(__file__, run_model, expected_results, 10)