diff --git a/.github/workflows/matrix_ci.yml b/.github/workflows/matrix_ci.yml index 2da6b38f..953acc27 100644 --- a/.github/workflows/matrix_ci.yml +++ b/.github/workflows/matrix_ci.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] os: [macos, ubuntu, windows] steps: diff --git a/tobac/tests/test_segmentation.py b/tobac/tests/test_segmentation.py index 887d3e4b..862e0a3b 100644 --- a/tobac/tests/test_segmentation.py +++ b/tobac/tests/test_segmentation.py @@ -630,8 +630,8 @@ def test_segmentation_multiple_features(): out_seg_mask_arr = out_seg_mask.core_data() # assure that the number of grid cells belonging to each feature (ncells) are consistent with segmentation mask - assert int(out_df[out_df.feature == 1].ncells.values) == size_feature1 - assert int(out_df[out_df.feature == 2].ncells.values) == size_feature2 + assert int(out_df[out_df.feature == 1].ncells.values[0]) == size_feature1 + assert int(out_df[out_df.feature == 2].ncells.values[0]) == size_feature2 # assure that bulk statistic columns are created in output (one column added after segmentation) assert out_df.columns.size - fd_output.columns.size > 1 # assure that statistics are calculated everywhere where an area for ncells is found diff --git a/tobac/tests/test_utils.py b/tobac/tests/test_utils.py index e9953d7f..157bfdf2 100644 --- a/tobac/tests/test_utils.py +++ b/tobac/tests/test_utils.py @@ -559,7 +559,7 @@ def test_transform_feature_points_3D(): 5, 105, 20, max_h1=1000, max_h2=1000 ) - orig_feat_df = tb_utils.combine_tobac_feats([orig_feat_df_1, orig_feat_df_2]) + orig_feat_df = tb_utils.combine_feature_dataframes([orig_feat_df_1, orig_feat_df_2]) orig_feat_df["latitude"] = orig_feat_df["hdim_1"] orig_feat_df["longitude"] = orig_feat_df["hdim_2"] diff --git a/tobac/utils/general.py b/tobac/utils/general.py index 394034c4..89ab6aa1 100644 --- a/tobac/utils/general.py +++ b/tobac/utils/general.py @@ -714,7 +714,6 @@ def transform_feature_points( the new grid, suitable for use in segmentation """ - from .. import analysis as tb_analysis RADIUS_EARTH_M = 6371000 is_3D = "vdim" in features @@ -812,14 +811,12 @@ def transform_feature_points( ) if warn_dropped_features: - returned_features = ret_features["feature"] - all_features = features["feature"] - removed_features = np.delete( - all_features, np.where(np.any(all_features == returned_features)) - ) - warnings.warn( - "Dropping feature numbers: " + str(removed_features.values), UserWarning - ) + removed_features = np.setdiff1d(features["feature"], ret_features["feature"]) + if len(removed_features): + warnings.warn( + "Dropping feature numbers: " + str(removed_features.tolist()), + UserWarning, + ) # make sure that feature points are converted back to int64 ret_features["feature"] = ret_features.feature.astype(int)