def __init__(self):
     in_storage = StorageFactory().get_storage(
         'sql_storage',
         hostname=settings.get_db_host_name(),
         username=settings.get_db_user_name(),
         password=settings.get_db_password(),
         database_name=settings.db)
     zones = ZoneDataset(in_storage=in_storage)
     print "Read and Write ZoneDataset."
     out_storage = StorageFactory().build_storage_for_dataset(
         type='flt_storage', storage_location=settings.dir)
     ReadWriteADataset(zones,
                       out_storage=out_storage,
                       out_table_name=settings.zonesubdir)
Exemple #2
0
    def test_getting_several_emme2_data_into_travel_data_set(self):
        if self._has_travel_model:
            num_zones = 30

            zone_storage = StorageFactory().get_storage('dict_storage')
            zone_table_name = 'zone'
            zone_storage.write_table(
                table_name=zone_table_name,
                table_data={'zone_id': array(range(num_zones)) + 1},
            )

            zone_set = ZoneDataset(in_storage=zone_storage,
                                   in_table_name=zone_table_name)
            matrix_attribute_map = {
                'au1tim': 'single_vehicle_to_work_travel_time',
                'biketm': 'bike_to_work_travel_time'
            }
            tm_output = TravelModelOutput()
            travel_data_set = tm_output.get_travel_data_set(
                zone_set, matrix_attribute_map, self.real_bank_path)
            self.assertEqual(
                travel_data_set.get_attribute(
                    'single_vehicle_to_work_travel_time').size,
                num_zones * num_zones)
            self.assertEqual(
                travel_data_set.get_attribute('bike_to_work_travel_time').size,
                num_zones * num_zones)
            from numpy import ma
            self.assertEqual(
                False,
                ma.allclose(
                    travel_data_set.get_attribute(
                        'single_vehicle_to_work_travel_time'),
                    travel_data_set.get_attribute('bike_to_work_travel_time')))
        else:
            logger.log_warning('Test skipped. TRAVELMODELROOT environment '
                               'variable not found.')
Exemple #3
0
coef, result = hlcm_psrc.estimate(specification,
                                  agents_psrc,
                                  agents_index=idx,
                                  estimate_config=Resources(
                                      {"estimation_size_agents": 0.01}),
                                  debuglevel=4)

result = hlcm_psrc.run(specification,
                       coef,
                       agents_psrc,
                       agents_index=sample(range(agents_psrc.size()), 500),
                       debuglevel=4)

storage = StorageFactory().get_storage('sql_storage', storage_location=db)

zones_psrc = ZoneDataset(in_storage=storage)
hlcm_psrc_zones = HouseholdLocationChoiceModelCreator().get_model(
    location_set=zones_psrc,
    sampler="opus_core.samplers.weighted_sampler",
    sample_size_locations=10,
    choices="opus_core.random_choices_from_index",
    compute_capacity_flag=False,
    estimate_config=Resources({"weights_for_estimation_string": None}))

specification = EquationSpecification(
    variables=("urbansim.zone.number_of_jobs", "urbansim.household.income"),
    coefficients=("NOJ", "INC"))

agents_psrc.compute_variables(["urbansim.household.zone_id"],
                              resources=Resources({"gridcell":
                                                   locations_psrc}))
Exemple #4
0
    def get_resources(self, data_dictionary, dataset):
        """Create resources for computing a variable. """
        resources = Resources()

        for key in data_dictionary.keys():
            if key in self.datasets:
                data = data_dictionary[key]

                storage = StorageFactory().get_storage('dict_storage')

                if self.id_names[key] not in data_dictionary[key].keys(
                ) and not isinstance(self.id_names[key], list):
                    data[self.id_names[key]] = arange(
                        1,
                        len(data_dictionary[key][data_dictionary[key].keys()
                                                 [0]]) + 1)  # add id array

                id_name = self.id_names[key]
                storage.write_table(table_name='data', table_data=data)

                if key == "gridcell":
                    gc = GridcellDataset(in_storage=storage,
                                         in_table_name='data')

                    # add relative_x and relative_y
                    gc.get_id_attribute()
                    n = int(ceil(sqrt(gc.size())))
                    if "relative_x" not in data.keys():
                        x = (indices((n, n)) + 1)[1].ravel()
                        gc.add_attribute(x[0:gc.size()],
                                         "relative_x",
                                         metadata=1)
                    if "relative_y" not in data.keys():
                        y = (indices((n, n)) + 1)[0].ravel()
                        gc.add_attribute(y[0:gc.size()],
                                         "relative_y",
                                         metadata=1)
                    resources.merge({key: gc})

                elif key == "household":
                    resources.merge({
                        key:
                        HouseholdDataset(in_storage=storage,
                                         in_table_name='data')
                    })
                elif key == "development_project":
                    resources.merge({
                        key:
                        DevelopmentProjectDataset(in_storage=storage,
                                                  in_table_name='data')
                    })
                elif key == "development_event":
                    resources.merge({
                        key:
                        DevelopmentEventDataset(in_storage=storage,
                                                in_table_name='data')
                    })
                elif key == "neighborhood":
                    resources.merge({
                        key:
                        NeighborhoodDataset(in_storage=storage,
                                            in_table_name='data')
                    })
                elif key == "job":
                    resources.merge({
                        key:
                        JobDataset(in_storage=storage, in_table_name='data')
                    })
                elif key == "zone":
                    resources.merge({
                        key:
                        ZoneDataset(in_storage=storage, in_table_name='data')
                    })
                elif key == "travel_data":
                    resources.merge({
                        key:
                        TravelDataDataset(in_storage=storage,
                                          in_table_name='data')
                    })
                elif key == "faz":
                    resources.merge({
                        key:
                        FazDataset(in_storage=storage, in_table_name='data')
                    })
                elif key == "fazdistrict":
                    resources.merge({
                        key:
                        FazdistrictDataset(in_storage=storage,
                                           in_table_name='data')
                    })
                elif key == "race":
                    resources.merge({
                        key:
                        RaceDataset(in_storage=storage, in_table_name='data')
                    })
                elif key == "county":
                    resources.merge({
                        key:
                        CountyDataset(in_storage=storage, in_table_name='data')
                    })
                elif key == "large_area":
                    resources.merge({
                        key:
                        LargeAreaDataset(in_storage=storage,
                                         in_table_name='data')
                    })
                elif key == "development_group":
                    resources.merge({
                        key:
                        DevelopmentGroupDataset(in_storage=storage,
                                                in_table_name='data')
                    })
                elif key == "employment_sector_group":
                    resources.merge({
                        key:
                        EmploymentSectorGroupDataset(in_storage=storage,
                                                     in_table_name='data')
                    })
                elif key == "plan_type_group":
                    resources.merge({
                        key:
                        PlanTypeGroupDataset(in_storage=storage,
                                             in_table_name='data')
                    })
                elif key == "building":
                    resources.merge({
                        key:
                        BuildingDataset(in_storage=storage,
                                        in_table_name='data')
                    })

            else:
                resources.merge({key: data_dictionary[key]})

        if dataset in self.interactions:
            if dataset == "household_x_gridcell":
                resources.merge({
                    "dataset":
                    HouseholdXGridcellDataset(dataset1=resources["household"],
                                              dataset2=resources["gridcell"])
                })
            if dataset == "job_x_gridcell":
                resources.merge({
                    "dataset":
                    JobXGridcellDataset(dataset1=resources["job"],
                                        dataset2=resources["gridcell"])
                })
            if dataset == "household_x_zone":
                resources.merge({
                    "dataset":
                    HouseholdXZoneDataset(dataset1=resources["household"],
                                          dataset2=resources["zone"])
                })
            if dataset == "household_x_neighborhood":
                resources.merge({
                    "dataset":
                    HouseholdXNeighborhoodDataset(
                        dataset1=resources["household"],
                        dataset2=resources["neighborhood"])
                })
            if dataset == "development_project_x_gridcell":
                resources.merge({
                    "dataset":
                    DevelopmentProjectXGridcellDataset(
                        dataset1=resources["development_project"],
                        dataset2=resources["gridcell"])
                })

        else:
            resources.merge({"dataset": resources[dataset]})
        resources.merge({"check_variables": '*', "debug": 4})
        return resources