diff --git a/.github/workflows/build_windows.yml b/.github/workflows/build_windows.yml index 68bf05a60..83179172b 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 diff --git a/aequilibrae/distribution/gravity_calibration.py b/aequilibrae/distribution/gravity_calibration.py index 92f6300d8..6344cbe91 100644 --- a/aequilibrae/distribution/gravity_calibration.py +++ b/aequilibrae/distribution/gravity_calibration.py @@ -218,15 +218,13 @@ 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(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/aequilibrae/matrix/aequilibrae_matrix.py b/aequilibrae/matrix/aequilibrae_matrix.py index 7fbb5572b..cb6cd30c6 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/distribution/test_gravityApplication.py b/tests/aequilibrae/distribution/test_gravityApplication.py index 188ec647e..31c8e16f9 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 6f5ac650d..5480ccb43 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"]) diff --git a/tests/aequilibrae/matrix/test_aequilibraeMatrix.py b/tests/aequilibrae/matrix/test_aequilibraeMatrix.py index 76706834e..234a2d72e 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() @@ -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: