Changeset 3330
- Timestamp:
- 05/12/08 12:31:32 (2 months ago)
- Files:
-
- 1 modified
-
trunk/opus_core/equation_specification.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/opus_core/equation_specification.py
r2867 r3330 419 419 for var_coef in submodel_spec: 420 420 if isinstance(var_coef, str): 421 #var_coef is actuallyjust variables long names or alias421 #var_coef is just variables long names or alias 422 422 if ("variables" in definition.keys()) and (var_coef in definition["alias"]): 423 423 i = definition["alias"].index(var_coef) … … 458 458 for var, coef in submodel_spec.items(): 459 459 if not equation_ids: 460 variables.append(var) 461 coefficients.append(coef) 460 if ("variables" in definition.keys()) and (var in definition["alias"]): 461 i = definition["alias"].index(var) 462 variables.append(definition["variables"][i]) 463 coefficients.append(definition["coefficients"][i]) 464 fixed_values.append(definition["fixed_values"][i]) 465 else: 466 variables.append(var) 467 coefficients.append(coef) 468 fixed_values.append(0) 462 469 submodels.append(sub_model) 463 fixed_values.append(0)464 470 elif type(coef) is list or type(coef) is tuple: 465 471 for i in range(len(coef)): 466 472 if coef[i] != 0: 467 variables.append(var) 473 if ("variables" in definition.keys()) and (var in definition["alias"]): 474 j = definition["alias"].index(var) 475 variables.append(definition["variables"][j]) 476 fixed_values.append(definition["fixed_values"][j]) 477 else: 478 variables.append(var) 479 fixed_values.append(0) 468 480 coefficients.append(coef[i]) 469 481 equations.append(equation_ids[i]) 470 482 submodels.append(sub_model) 471 fixed_values.append(0)483 472 484 else: 473 485 logger.log_error("Wrong specification format for submodel %s variable %s; \nwith equation_ids provided, coefficients must be a list or tuple of the same length of equation_ids" % sub_model, var) … … 522 534 specification.replace_variables(new_variables) 523 535 result = specification.get_long_variable_names() 524 self.assert_( ma.allequal(result,array([variables[0], 'xxx.my_new_variable', 'y.replaces_y'])),536 self.assert_(alltrue(result == array([variables[0], 'xxx.my_new_variable', 'y.replaces_y'])), 525 537 "Error in replace_varibles") 526 538 … … 543 555 subm = result.get_submodels() 544 556 fixedval = result.get_fixed_values() 545 self.assert_( ma.allequal(coefs,array(["BPOP", "BINC", "BART", "BHWY", "BAGE"])),557 self.assert_(alltrue(coefs == array(["BPOP", "BINC", "BART", "BHWY", "BAGE"])), 546 558 msg = "Error in test_load_specification (coefficients)") 547 self.assert_( ma.allequal(vars,559 self.assert_(alltrue(vars == 548 560 array(["population", "average_income", "is_near_arterial", "is_near_highway", "lage"])), 549 561 msg = "Error in test_load_specification (variables)") … … 582 594 subm = result.get_submodels() 583 595 fixedval = result.get_fixed_values() 584 self.assert_( ma.allequal(coefs,array(["BPOP", "BINC", "BAGE", "BART", "C", "BHWY"])),596 self.assert_(alltrue(coefs == array(["BPOP", "BINC", "BAGE", "BART", "C", "BHWY"])), 585 597 msg = "Error in test_load_specification_with_definition (coefficients)") 586 self.assert_( ma.allequal(vars,598 self.assert_(alltrue(vars == 587 599 array(["population", "average_income", "lage", "is_near_arterial", "constant", 588 600 "is_near_highway"])), … … 614 626 coefs = result.get_coefficient_names() 615 627 subm = result.get_submodels() 616 self.assert_( ma.allequal(coefs,array(["population", "average_income", "lage", "is_near_arterial", "BHWY"])),617 msg = "Error in test_load_specification_with_definition (coefficients)")618 self.assert_( ma.allequal(vars,628 self.assert_(alltrue(coefs == array(["population", "average_income", "lage", "is_near_arterial", "BHWY"])), 629 msg = "Error in test_load_specification_with_definition_with_implicit_coefficients (coefficients)") 630 self.assert_(alltrue(vars == 619 631 array(["population", "average_income", "lage", "is_near_arterial", "is_near_highway"])), 620 msg = "Error in test_load_specification_with_definition (variables)")632 msg = "Error in test_load_specification_with_definition_with_implicit_coefficients (variables)") 621 633 self.assert_(ma.allequal(subm, array([1, 1, 1, 2, 2])), 622 msg = "Error in test_load_specification_with_definition (submodels)")634 msg = "Error in test_load_specification_with_definition_with_implicit_coefficients (submodels)") 623 635 # test data type 624 636 self.assert_(subm.dtype.name == "int16", 625 637 msg = "Error in data type of submodels.") 638 639 def test_load_specification_with_definition_with_equations(self): 640 specification = { 641 "_definition_": [ 642 "pop = urbansim.gridcell.population", 643 "inc = urbansim.gridcell.average_income", 644 "art = urbansim.gridcell.is_near_arterial", 645 ], 646 -2: { 647 "equation_ids": (1,2), 648 "pop": ("bpop",0), 649 "inc": (0, "binc"), 650 "art": ("bart", 0), 651 "constant": ("asc", 0) 652 } 653 } 654 result = load_specification_from_dictionary(specification) 655 vars = result.get_variable_names() 656 coefs = result.get_coefficient_names() 657 eqs = result.get_equations() 658 lvars = result.get_long_variable_names() 659 self.assert_(alltrue(coefs == array(["asc", "bart", "bpop", "binc"])), 660 msg = "Error in test_load_specification_with_definition_with_equations (coefficients)") 661 self.assert_(alltrue(vars == array(["constant", "art", "pop", "inc"])), 662 msg = "Error in test_load_specification_with_definition_with_equations (variables)") 663 self.assert_(ma.allequal(eqs, array([1,1,1,2])), 664 msg = "Error in test_load_specification_with_definition_with_equations (equations)") 665 self.assert_(alltrue(lvars == array(["constant", 666 "art = urbansim.gridcell.is_near_arterial", 667 "pop = urbansim.gridcell.population", 668 "inc = urbansim.gridcell.average_income"])), 669 msg = "Error in test_load_specification_with_definition_with_equations (long names of variables)") 670 626 671 627 672 if __name__=='__main__':
