def test_versioning_with_disaggregate(self):
     storage = StorageFactory().get_storage('dict_storage')
     storage.write_table(table_name='zones',
         table_data={
             'id':array([1,2,3,4]),
             'id2':array([1,2,1,2])
             }
         )
     storage.write_table(table_name='faz',
         table_data={
             'my_variable':array([4,8]), 
             'id2':array([1,2])
             }
         )
     ds = Dataset(in_storage=storage, in_table_name='zones', id_name="id", dataset_name="myzone")
     ds2 = Dataset(in_storage=storage, in_table_name='faz', id_name="id2", dataset_name="myfaz")
     dataset_pool = DatasetPool()
     dataset_pool._add_dataset('myzone', ds)
     dataset_pool._add_dataset('myfaz', ds2)
     var = "my_var = myzone.disaggregate(10.0*myfaz.my_variable)"
     ds.modify_attribute("id2", array([2,1,2,1])) # should have version 1
     ds.compute_variables([var], dataset_pool=dataset_pool)
     self.assert_(ds.get_version("my_var")==0)
     ds.compute_variables([var], dataset_pool=dataset_pool)
     self.assert_(ds.get_version("my_var")==0) # version should stay the same, i.e. it should not recompute
     ds.touch_attribute("id2") # has version 2
     ds.compute_variables([var], dataset_pool=dataset_pool)
     self.assert_(ds.get_version("my_var")==1) # version should be 1, i.e. it should recompute when id changes
 def test_versioning_with_aggregate(self):
     storage = StorageFactory().get_storage('dict_storage')
     storage.write_table(table_name='households',
                         table_data={
                             'my_variable': array([4, 8, 2, 1, 40, 23, 78]),
                             'id0': arange(7) + 1,
                             'id1': array([1, 3, 1, 2, 3, 2, 1])
                         })
     storage.write_table(table_name='fazes',
                         table_data={
                             'id1': array([1, 2, 3]),
                             'id2': array([1, 2, 1])
                         })
     storage.write_table(table_name='fazdistr',
                         table_data={'id2': array([1, 2])})
     ds0 = Dataset(in_storage=storage,
                   in_table_name='households',
                   id_name="id0",
                   dataset_name="myhousehold")
     ds1 = Dataset(in_storage=storage,
                   in_table_name='fazes',
                   id_name="id1",
                   dataset_name="myfaz")
     ds2 = Dataset(in_storage=storage,
                   in_table_name='fazdistr',
                   id_name="id2",
                   dataset_name="myfazdistr")
     dataset_pool = DatasetPool()
     dataset_pool._add_dataset('myhousehold', ds0)
     dataset_pool._add_dataset('myfaz', ds1)
     dataset_pool._add_dataset('myfazdistr', ds2)
     ds0.modify_attribute("id1", array([1, 3, 1, 2, 3, 2,
                                        1]))  # has version 1
     variable = 'my_var = myfazdistr.aggregate(10.0*myhousehold.my_variable, intermediates=[myfaz])'
     ds2.compute_variables([variable], dataset_pool=dataset_pool)
     self.assert_(ds2.get_version("my_var") == 0)
     ds2.compute_variables([variable], dataset_pool=dataset_pool)
     self.assert_(
         ds2.get_version("my_var") ==
         0)  # version should stay the same, i.e. it should not recompute
     ds0.touch_attribute("id1")  # has version 2
     ds2.compute_variables([variable], dataset_pool=dataset_pool)
     self.assert_(
         ds2.get_version("my_var") ==
         1)  # version should be 1, i.e. it should recompute when id changes
     ds1.touch_attribute("id2")  # has version 1
     ds2.compute_variables([variable], dataset_pool=dataset_pool)
     self.assert_(
         ds2.get_version("my_var") ==
         2)  # version should be 2, i.e. it should recompute when id changes
 def test_versioning_with_aggregate(self):
     storage = StorageFactory().get_storage('dict_storage')
     storage.write_table(table_name='households',
         table_data={
             'my_variable':array([4,8,2,1,40,23,78]), 
             'id0':arange(7)+1,
             'id1':array([1,3,1,2,3,2,1])
             }
         )
     storage.write_table(table_name='fazes',
         table_data={
             'id1':array([1,2,3]), 
             'id2':array([1,2,1])
             }
         )
     storage.write_table(table_name='fazdistr',
         table_data={
             'id2':array([1,2])
             }
         )
     ds0 = Dataset(in_storage=storage, in_table_name='households', id_name="id0", dataset_name="myhousehold")
     ds1 = Dataset(in_storage=storage, in_table_name='fazes', id_name="id1", dataset_name="myfaz")             
     ds2 = Dataset(in_storage=storage, in_table_name='fazdistr', id_name="id2", dataset_name="myfazdistr")
     dataset_pool = DatasetPool()
     dataset_pool._add_dataset('myhousehold', ds0)
     dataset_pool._add_dataset('myfaz',ds1)
     dataset_pool._add_dataset('myfazdistr',ds2)
     ds0.modify_attribute("id1", array([1,3,1,2,3,2,1])) # has version 1
     variable = 'my_var = myfazdistr.aggregate(10.0*myhousehold.my_variable, intermediates=[myfaz])'
     ds2.compute_variables([variable], dataset_pool=dataset_pool)
     self.assert_(ds2.get_version("my_var")==0)
     ds2.compute_variables([variable], dataset_pool=dataset_pool)
     self.assert_(ds2.get_version("my_var")==0) # version should stay the same, i.e. it should not recompute
     ds0.touch_attribute("id1") # has version 2
     ds2.compute_variables([variable], dataset_pool=dataset_pool)
     self.assert_(ds2.get_version("my_var")==1) # version should be 1, i.e. it should recompute when id changes
     ds1.touch_attribute("id2") # has version 1
     ds2.compute_variables([variable], dataset_pool=dataset_pool)
     self.assert_(ds2.get_version("my_var")==2) # version should be 2, i.e. it should recompute when id changes
 def test_versioning_with_disaggregate(self):
     storage = StorageFactory().get_storage('dict_storage')
     storage.write_table(table_name='zones',
                         table_data={
                             'id': array([1, 2, 3, 4]),
                             'id2': array([1, 2, 1, 2])
                         })
     storage.write_table(table_name='faz',
                         table_data={
                             'my_variable': array([4, 8]),
                             'id2': array([1, 2])
                         })
     ds = Dataset(in_storage=storage,
                  in_table_name='zones',
                  id_name="id",
                  dataset_name="myzone")
     ds2 = Dataset(in_storage=storage,
                   in_table_name='faz',
                   id_name="id2",
                   dataset_name="myfaz")
     dataset_pool = DatasetPool()
     dataset_pool._add_dataset('myzone', ds)
     dataset_pool._add_dataset('myfaz', ds2)
     var = "my_var = myzone.disaggregate(10.0*myfaz.my_variable)"
     ds.modify_attribute("id2", array([2, 1, 2,
                                       1]))  # should have version 1
     ds.compute_variables([var], dataset_pool=dataset_pool)
     self.assert_(ds.get_version("my_var") == 0)
     ds.compute_variables([var], dataset_pool=dataset_pool)
     self.assert_(
         ds.get_version("my_var") ==
         0)  # version should stay the same, i.e. it should not recompute
     ds.touch_attribute("id2")  # has version 2
     ds.compute_variables([var], dataset_pool=dataset_pool)
     self.assert_(
         ds.get_version("my_var") ==
         1)  # version should be 1, i.e. it should recompute when id changes
Example #5
0
 def test_variable_dependencies_tree_with_versioning(self):
     storage = StorageFactory().get_storage('dict_storage')
     
     storage.write_table(
         table_name='tests',
         table_data={
             'id':array([2,4]), 
             'a_dependent_variable':array([4,7]),
             'a_dependent_variable2':array([10,1])
             }
         )
     
     ds = Dataset(in_storage=storage, in_table_name='tests', id_name='id', dataset_name='tests')
     
     ds.compute_variables(["opus_core.tests.a_test_variable_with_two_dependencies"])
     
     self.assert_(ds.get_version("a_test_variable_with_two_dependencies")==0) #initially version=0
     self.assert_(ds.get_version("a_dependent_variable")==0)
     self.assert_(ds.get_version("a_dependent_variable2")==0)
     
     ds.modify_attribute("a_dependent_variable", array([0,0]))
     self.assert_(ds.get_version("a_dependent_variable")==1) # version=1
     
     ds.modify_attribute("a_dependent_variable", array([1,1]))
     self.assert_(ds.get_version("a_dependent_variable")==2) # version=2
     
     ds.compute_variables(["opus_core.tests.a_test_variable_with_two_dependencies"])
     self.assert_(ds.get_version("a_test_variable_with_two_dependencies")==1)
     
     ds.compute_variables(["opus_core.tests.a_test_variable_with_two_dependencies"])
     self.assert_(ds.get_version("a_test_variable_with_two_dependencies")==1) # version does not change
     
     autogen_variable = "my_var = 3 * opus_core.tests.a_dependent_variable"
     ds.compute_variables([autogen_variable])
     self.assert_(ds.get_version("my_var")==0)
     ds.compute_variables([autogen_variable])
     self.assert_(ds.get_version("my_var")==0)
Example #6
0
interactions.get_dataset_name()

from numpy import arange
interactions = InteractionDataset(dataset1 = households, dataset2 = locations, index1 = arange(5), index2 = arange(3))
interactions.compute_variables(["urbansim.household_x_gridcell.cost_times_income"])

specification = EquationSpecification(
                     variables=array([
                          "gridcell.cost",
                          "urbansim.household_x_gridcell.cost_times_income"]),
                     coefficients=array(["costcoef", "cti_coef"]))
households.add_primary_attribute(data=[2,8,3,1,5,4,9,7,3,6], name="location")
coef, other_results = hlcm.estimate(specification, households)

# Versioning
households.get_version("income")
res = interactions.compute_variables(["urbansim.household_x_gridcell.cost_times_income"])
interactions.get_version("cost_times_income")
households.modify_attribute(name="income", data=[14000], index=[9])
households.get_version("income")
res = interactions.compute_variables(["urbansim.household_x_gridcell.cost_times_income"])
interactions.get_version("cost_times_income")

# Using numbers
res = locations.compute_variables(
                                  map(lambda threshold:
                                      "urbansim.gridcell.is_near_cbd_if_threshold_is_%s" % threshold, [2,4,7]))
locations.get_attribute("is_near_cbd_if_threshold_is_2")
locations.get_attribute("is_near_cbd_if_threshold_is_4")
locations.get_attribute("is_near_cbd_if_threshold_is_7")
Example #7
0
interactions.get_dataset_name()

from numpy import arange
interactions = InteractionDataset(dataset1 = households, dataset2 = locations, index1 = arange(5), index2 = arange(3))
interactions.compute_variables(["urbansim.household_x_gridcell.cost_times_income"])

specification = EquationSpecification(
                     variables=array([
                          "gridcell.cost",
                          "urbansim.household_x_gridcell.cost_times_income"]),
                     coefficients=array(["costcoef", "cti_coef"]))
households.add_primary_attribute(data=[2,8,3,1,5,4,9,7,3,6], name="location")
coef, other_results = hlcm.estimate(specification, households)

# Versioning
households.get_version("income")
res = interactions.compute_variables(["urbansim.household_x_gridcell.cost_times_income"])
interactions.get_version("cost_times_income")
households.modify_attribute(name="income", data=[14000], index=[9])
households.get_version("income")
res = interactions.compute_variables(["urbansim.household_x_gridcell.cost_times_income"])
interactions.get_version("cost_times_income")

# Using numbers
res = locations.compute_variables(
                                  map(lambda threshold:
                                      "urbansim.gridcell.is_near_cbd_if_threshold_is_%s" % threshold, [2,4,7]))
locations.get_attribute("is_near_cbd_if_threshold_is_2")
locations.get_attribute("is_near_cbd_if_threshold_is_4")
locations.get_attribute("is_near_cbd_if_threshold_is_7")