diff --git a/pyeit/eit/fem.py b/pyeit/eit/fem.py index 26750a4..5399a78 100644 --- a/pyeit/eit/fem.py +++ b/pyeit/eit/fem.py @@ -117,7 +117,7 @@ def solve_vectorized(self, ex_mat: np.ndarray) -> np.ndarray: # using natural boundary conditions b = np.zeros((ex_mat.shape[0], self.mesh.n_nodes)) b[np.arange(b.shape[0])[:, None], self.mesh.el_pos[ex_mat]] = [1, -1] - result = np.empty((ex_mat.shape[0], self.kg.shape[0])) + result = np.empty((ex_mat.shape[0], self.kg.shape[0]), dtype=complex) # TODO Need to inspect this deeper for i in range(result.shape[0]): diff --git a/pyeit/eit/render.py b/pyeit/eit/render.py index 6df40d2..be7ba10 100644 --- a/pyeit/eit/render.py +++ b/pyeit/eit/render.py @@ -208,7 +208,7 @@ def map_image(image, values): """ vals = values[image.astype(int)] mask = image == -1 - vals[mask] = np.NaN + vals[mask] = np.nan return vals diff --git a/pyeit/quality/merit.py b/pyeit/quality/merit.py index 348d8a6..70cb26f 100644 --- a/pyeit/quality/merit.py +++ b/pyeit/quality/merit.py @@ -600,7 +600,7 @@ def lambda_max( return arr.flatten()[idxs] -def get_image_bounds(image, background=np.NaN): +def get_image_bounds(image, background=np.nan): """ Get the bounds of an image. @@ -618,7 +618,7 @@ def get_image_bounds(image, background=np.NaN): """ if not np.isnan(background): image = image.astype(float) - image[np.where(image == background)] = np.NaN + image[np.where(image == background)] = np.nan rowmin = np.argmax(np.any(~np.isnan(image), axis=0)) rowmax = image.shape[0] - np.argmax(np.any(~np.isnan(image[::-1]), axis=0)) diff --git a/tests/test_eit.py b/tests/test_eit.py index d6e1d3e..4e15662 100644 --- a/tests/test_eit.py +++ b/tests/test_eit.py @@ -101,7 +101,7 @@ def test_greit(self): eit = pyeit.eit.greit.GREIT(self.mesh_obj, self.protocol_obj) eit.setup(p=0.50, lamb=0.01, perm=1, jac_normalized=True) ds = eit.solve(self.v1, self.v0, normalize=True) - x, y, ds = eit.mask_value(ds, mask_value=np.NAN) + x, y, ds = eit.mask_value(ds, mask_value=np.nan) # evaluate GREIT loc = np.where(np.abs(ds) == np.nanmax(np.abs(ds))) diff --git a/tests/test_merit.py b/tests/test_merit.py index 95163a3..eee9dc7 100644 --- a/tests/test_merit.py +++ b/tests/test_merit.py @@ -19,49 +19,49 @@ patches as mpatches, axes as mpl_axes, ) -from numpy import NaN +from numpy import nan parent_dir = str(Path(__file__).parent) test_image = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 2, 2, 2, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 2, 2, 2, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) test_image_2 = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) test_image_3 = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, -1, -1, -1, 0, NaN], - [NaN, 0, 0.1, 0.1, 0.1, 0, NaN], - [NaN, 0, 0.1, 0.1, 0.1, 0, NaN], - [NaN, 0, 0.75, 0.75, 0.75, 0, NaN], - [NaN, 0, 2, 2, 2, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, -1, -1, -1, 0, nan], + [nan, 0, 0.1, 0.1, 0.1, 0, nan], + [nan, 0, 0.1, 0.1, 0.1, 0, nan], + [nan, 0, 0.75, 0.75, 0.75, 0, nan], + [nan, 0, 2, 2, 2, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) @@ -69,7 +69,7 @@ def test_calc_circle(): square = imread(parent_dir + "/data/square_image.bmp", pilmode="RGB") - fractional_image = np.full(np.shape(square)[0:2], NaN) + fractional_image = np.full(np.shape(square)[0:2], nan) fractional_image[ np.where( (square[:, :, 0] == 255) @@ -101,9 +101,9 @@ def test_calc_circle(): # # img = axs[1, 0].imshow(fractional_image) # axs[1, 0].set_title("Fractional Image") - # colors = [img.cmap(img.norm(value)) for value in [NaN, 0, 1]] + # colors = [img.cmap(img.norm(value)) for value in [nan, 0, 1]] # patches = [ - # mpatches.Patch(color=colors[0], label="NAN"), + # mpatches.Patch(color=colors[0], label="nan"), # mpatches.Patch(color=colors[1], label="0"), # mpatches.Patch(color=colors[2], label="1") # ] @@ -134,43 +134,43 @@ def test_calc_amplitude(): def test_calc_position_error(): test_image_p1 = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) test_image_p2 = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) test_image_p2_flipped = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) @@ -223,43 +223,43 @@ def test_calc_fractional_amplitude_set(): correct_fractional_amplitude_set = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) correct_fractional_amplitude_set_range = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) correct_fractional_amplitude_set_negative_target = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) @@ -350,43 +350,43 @@ def test_classify_target_and_background(): def test_calc_ringing(): test_image_ringing = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, 1, 1, 1, 0, NaN], - [NaN, 0, -1, -1, -1, 0, NaN], - [NaN, 0, 0, 0, 0, 0, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, 1, 1, 1, 0, nan], + [nan, 0, -1, -1, -1, 0, nan], + [nan, 0, 0, 0, 0, 0, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) test_image_target_non_conductive = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, 3, 3, 3, 3, 3, NaN], - [NaN, 3, 3, 3, 3, 3, NaN], - [NaN, 3, 3, 3, 3, 3, NaN], - [NaN, 3, 3, 3, 3, 3, NaN], - [NaN, 3, 3, 3, 3, 3, NaN], - [NaN, 3, 2, 2, 2, 3, NaN], - [NaN, 3, 3, 3, 3, 3, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, 3, 3, 3, 3, 3, nan], + [nan, 3, 3, 3, 3, 3, nan], + [nan, 3, 3, 3, 3, 3, nan], + [nan, 3, 3, 3, 3, 3, nan], + [nan, 3, 3, 3, 3, 3, nan], + [nan, 3, 2, 2, 2, 3, nan], + [nan, 3, 3, 3, 3, 3, nan], + [nan, nan, nan, nan, nan, nan, nan], ] ) test_image_recon_non_conductive = np.array( [ - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], - [NaN, -0.4, -0.4, -0.4, -0.4, -0.4, NaN], - [NaN, -0.4, -0.4, -0.4, -0.4, -0.4, NaN], - [NaN, -0.4, -0.4, -0.4, -0.4, -0.4, NaN], - [NaN, -0.4, -0.4, -0.4, -0.4, -0.4, NaN], - [NaN, -0.4, 1, 1, 1, -0.4, NaN], - [NaN, -0.4, -2, -2, -2, -0.4, NaN], - [NaN, -0.4, -0.4, -0.4, -0.4, -0.4, NaN], - [NaN, NaN, NaN, NaN, NaN, NaN, NaN], + [nan, nan, nan, nan, nan, nan, nan], + [nan, -0.4, -0.4, -0.4, -0.4, -0.4, nan], + [nan, -0.4, -0.4, -0.4, -0.4, -0.4, nan], + [nan, -0.4, -0.4, -0.4, -0.4, -0.4, nan], + [nan, -0.4, -0.4, -0.4, -0.4, -0.4, nan], + [nan, -0.4, 1, 1, 1, -0.4, nan], + [nan, -0.4, -2, -2, -2, -0.4, nan], + [nan, -0.4, -0.4, -0.4, -0.4, -0.4, nan], + [nan, nan, nan, nan, nan, nan, nan], ] )