From 94e11a595d8569b056e87257ddf35f5197a808e0 Mon Sep 17 00:00:00 2001 From: pveigadecamargo Date: Thu, 13 Oct 2022 22:23:46 +1000 Subject: [PATCH 1/6] Fixes nan to num --- aequilibrae/matrix/aequilibrae_matrix.py | 3 +-- tests/aequilibrae/matrix/test_aequilibraeMatrix.py | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/aequilibrae/matrix/aequilibrae_matrix.py b/aequilibrae/matrix/aequilibrae_matrix.py index 7fbb5572..cb6cd30c 100644 --- a/aequilibrae/matrix/aequilibrae_matrix.py +++ b/aequilibrae/matrix/aequilibrae_matrix.py @@ -1021,8 +1021,7 @@ def nan_to_num(self): raise NotImplementedError("This operation does not make sense for OMX matrices") if np.issubdtype(self.dtype, np.floating) and self.matrix_view is not None: - for m in self.view_names: - self.matrix[m][:, :] = np.nan_to_num(self.matrix[m])[:, :] + self.matrices[:, :, :] = np.nan_to_num(self.matrices[:, :, :]) def __vector(self, axis: int): if self.view_names is None: diff --git a/tests/aequilibrae/matrix/test_aequilibraeMatrix.py b/tests/aequilibrae/matrix/test_aequilibraeMatrix.py index 76706834..914e5581 100644 --- a/tests/aequilibrae/matrix/test_aequilibraeMatrix.py +++ b/tests/aequilibrae/matrix/test_aequilibraeMatrix.py @@ -41,8 +41,8 @@ def setUp(self) -> None: self.matrix.create_empty(**args) self.matrix.index[:] = np.arange(self.matrix.zones) + 100 - self.matrix.mat[:, :] = np.random.rand(self.matrix.zones, self.matrix.zones)[:, :] - self.matrix.mat[:, :] = self.matrix.mat[:, :] * (1000 / np.sum(self.matrix.mat[:, :])) + self.matrix.matrices[:, :, 0] = np.random.rand(self.matrix.zones, self.matrix.zones) + self.matrix.matrices[:, :, 0] = self.matrix.mat[:, :] * (1000 / np.sum(self.matrix.mat[:, :])) self.matrix.setName("Test matrix - " + str(random.randint(1, 10))) self.matrix.setDescription("Generated at " + datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y")) self.new_matrix = self.matrix @@ -141,7 +141,7 @@ def test_nan_to_num(self): m = self.new_matrix.mat.sum() - self.new_matrix.mat[1, 1] self.new_matrix.computational_view(["mat", "seed"]) self.new_matrix.nan_to_num() - self.new_matrix.mat[1, 1] = np.nan + self.new_matrix.matrices[1, 1, 0] = np.nan self.new_matrix.computational_view(["mat"]) self.new_matrix.nan_to_num() From af699f0b8348509e69703a2316a6f8a33d6ca38e Mon Sep 17 00:00:00 2001 From: pveigadecamargo Date: Thu, 13 Oct 2022 21:11:40 +1000 Subject: [PATCH 2/6] Chipping along transit structure --- tests/aequilibrae/matrix/test_aequilibraeMatrix.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/aequilibrae/matrix/test_aequilibraeMatrix.py b/tests/aequilibrae/matrix/test_aequilibraeMatrix.py index 914e5581..6bdf2e2d 100644 --- a/tests/aequilibrae/matrix/test_aequilibraeMatrix.py +++ b/tests/aequilibrae/matrix/test_aequilibraeMatrix.py @@ -266,7 +266,7 @@ def test_matrix_reference_doesnt_prevent_resource_cleanup(tmp_path): } matrix = AequilibraeMatrix() matrix.create_empty(**kwargs) - ref = matrix.mat + _ = matrix.mat del matrix try: From 6684b9b27d4ece65475179f8d91868b38911dd54 Mon Sep 17 00:00:00 2001 From: pveigadecamargo Date: Thu, 13 Oct 2022 22:32:27 +1000 Subject: [PATCH 3/6] Fixes tests --- aequilibrae/distribution/gravity_calibration.py | 8 ++++---- tests/aequilibrae/distribution/test_gravityApplication.py | 2 +- tests/aequilibrae/distribution/test_gravityCalibration.py | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/aequilibrae/distribution/gravity_calibration.py b/aequilibrae/distribution/gravity_calibration.py index 92f6300d..8f753989 100644 --- a/aequilibrae/distribution/gravity_calibration.py +++ b/aequilibrae/distribution/gravity_calibration.py @@ -218,15 +218,15 @@ def __check_inputs(self): mats = [(self.matrix, "Observed matrix"), (self.impedance, "Impedance matrix")] for matrix, title in mats: if matrix.matrix_view is None: - raise ValueError(title + " needs to be set for computation") + raise ValueError("{title} needs to be set for computation") else: if len(matrix.matrix_view.shape[:]) > 2: - raise ValueError(title + "' computational view needs to be set for a single matrix core") + raise ValueError("{title}' computational view needs to be set for a single matrix core") if np.nansum(matrix.matrix_view.data) == 0: - raise ValueError(title + "has only zero values") + raise ValueError(f"{title} has only zero values") if np.nanmin(matrix.matrix_view.data) < 0: - raise ValueError(title + "has negative values") + raise ValueError(f"{title} has negative values") # Augment parameters if we happen to have only passed one default_parameters = self.__get_parameters() diff --git a/tests/aequilibrae/distribution/test_gravityApplication.py b/tests/aequilibrae/distribution/test_gravityApplication.py index 188ec647..31c8e16f 100644 --- a/tests/aequilibrae/distribution/test_gravityApplication.py +++ b/tests/aequilibrae/distribution/test_gravityApplication.py @@ -38,7 +38,7 @@ matrix.create_empty(**args) # randoms = np.random.randint(5, size=(2, 4)) -matrix.impedance[:, :] = np.random.rand(zones, zones)[:, :] +matrix.matrices[:, :, 0] = np.random.rand(zones, zones)[:, :] matrix.index[:] = np.arange(matrix.zones) + 100 matrix.computational_view(["impedance"]) diff --git a/tests/aequilibrae/distribution/test_gravityCalibration.py b/tests/aequilibrae/distribution/test_gravityCalibration.py index 6f5ac650..698c7769 100644 --- a/tests/aequilibrae/distribution/test_gravityCalibration.py +++ b/tests/aequilibrae/distribution/test_gravityCalibration.py @@ -16,7 +16,7 @@ impedance = AequilibraeMatrix() impedance.create_empty(**args) -impedance.impedance[:, :] = np.random.rand(zones, zones)[:, :] * 1000 +impedance.matrices[:, :, 0] = np.random.rand(zones, zones)[:, :] * 1000 impedance.index[:] = np.arange(impedance.zones) + 100 impedance.computational_view(["impedance"]) @@ -24,7 +24,7 @@ args["file_name"] = AequilibraeMatrix().random_name() matrix = AequilibraeMatrix() matrix.create_empty(**args) -matrix.base_matrix[:, :] = np.random.rand(zones, zones)[:, :] * 1000 +matrix.matrices[:, :, 0] = np.random.rand(zones, zones)[:, :] * 1000 matrix.index[:] = np.arange(matrix.zones) + 100 matrix.computational_view(["base_matrix"]) From 55855549477c04d1c19c850a240d4c001e2f279e Mon Sep 17 00:00:00 2001 From: pveigadecamargo Date: Thu, 13 Oct 2022 22:53:59 +1000 Subject: [PATCH 4/6] Uses new version of Numpy for Windows 3.10 only --- .github/workflows/build_windows.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build_windows.yml b/.github/workflows/build_windows.yml index 68bf05a6..83179172 100644 --- a/.github/workflows/build_windows.yml +++ b/.github/workflows/build_windows.yml @@ -26,6 +26,10 @@ jobs: pip install -r requirements.txt pip install wheel twine + - name: Update numpy for python 3.10 only + if: ${{ matrix.python-version == '3.10'}} + run: pip install numpy --upgrade + - name: Compile library run: | cd aequilibrae/paths From ff94d2126cccc6c4114e8bd9f19cb81e660e03ac Mon Sep 17 00:00:00 2001 From: Jamie Cook Date: Sun, 16 Oct 2022 12:03:10 +1000 Subject: [PATCH 5/6] address issues from review --- aequilibrae/distribution/gravity_calibration.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/aequilibrae/distribution/gravity_calibration.py b/aequilibrae/distribution/gravity_calibration.py index 8f753989..6344cbe9 100644 --- a/aequilibrae/distribution/gravity_calibration.py +++ b/aequilibrae/distribution/gravity_calibration.py @@ -218,11 +218,9 @@ def __check_inputs(self): mats = [(self.matrix, "Observed matrix"), (self.impedance, "Impedance matrix")] for matrix, title in mats: if matrix.matrix_view is None: - raise ValueError("{title} needs to be set for computation") - else: - if len(matrix.matrix_view.shape[:]) > 2: - raise ValueError("{title}' computational view needs to be set for a single matrix core") - + raise ValueError(f"{title} needs to be set for computation") + if matrix.matrix_view.ndim > 2: + raise ValueError(f"{title} computational view needs to be set for a single matrix core") if np.nansum(matrix.matrix_view.data) == 0: raise ValueError(f"{title} has only zero values") if np.nanmin(matrix.matrix_view.data) < 0: From 4975e05b67a12cfdc29488b1e44a8b7ef40dcd38 Mon Sep 17 00:00:00 2001 From: Jamie Cook Date: Sun, 16 Oct 2022 12:06:14 +1000 Subject: [PATCH 6/6] unneeded --- tests/aequilibrae/distribution/test_gravityCalibration.py | 4 ++-- tests/aequilibrae/matrix/test_aequilibraeMatrix.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/aequilibrae/distribution/test_gravityCalibration.py b/tests/aequilibrae/distribution/test_gravityCalibration.py index 698c7769..5480ccb4 100644 --- a/tests/aequilibrae/distribution/test_gravityCalibration.py +++ b/tests/aequilibrae/distribution/test_gravityCalibration.py @@ -16,7 +16,7 @@ impedance = AequilibraeMatrix() impedance.create_empty(**args) -impedance.matrices[:, :, 0] = np.random.rand(zones, zones)[:, :] * 1000 +impedance.matrices[:, :, 0] = np.random.rand(zones, zones) * 1000 impedance.index[:] = np.arange(impedance.zones) + 100 impedance.computational_view(["impedance"]) @@ -24,7 +24,7 @@ args["file_name"] = AequilibraeMatrix().random_name() matrix = AequilibraeMatrix() matrix.create_empty(**args) -matrix.matrices[:, :, 0] = np.random.rand(zones, zones)[:, :] * 1000 +matrix.matrices[:, :, 0] = np.random.rand(zones, zones) * 1000 matrix.index[:] = np.arange(matrix.zones) + 100 matrix.computational_view(["base_matrix"]) diff --git a/tests/aequilibrae/matrix/test_aequilibraeMatrix.py b/tests/aequilibrae/matrix/test_aequilibraeMatrix.py index 6bdf2e2d..234a2d72 100644 --- a/tests/aequilibrae/matrix/test_aequilibraeMatrix.py +++ b/tests/aequilibrae/matrix/test_aequilibraeMatrix.py @@ -42,7 +42,7 @@ def setUp(self) -> None: self.matrix.index[:] = np.arange(self.matrix.zones) + 100 self.matrix.matrices[:, :, 0] = np.random.rand(self.matrix.zones, self.matrix.zones) - self.matrix.matrices[:, :, 0] = self.matrix.mat[:, :] * (1000 / np.sum(self.matrix.mat[:, :])) + self.matrix.matrices[:, :, 0] = self.matrix.mat * (1000 / np.sum(self.matrix.mat)) self.matrix.setName("Test matrix - " + str(random.randint(1, 10))) self.matrix.setDescription("Generated at " + datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y")) self.new_matrix = self.matrix