def test_tensor_is_subgrid(): vec1 = np.arange(2, 6) vec1_sup = np.arange(2, 8) vec2 = np.arange(-4, 5, 2) vec2_sup = np.arange(-6, 7, 2) vec2_sub = np.arange(-4, 3, 2) scalar = 0.5 grid = TensorGrid(vec1, vec2) assert grid.is_subgrid(grid) sup_grid = TensorGrid(vec1_sup, vec2_sup) assert grid.is_subgrid(sup_grid) assert not sup_grid.is_subgrid(grid) not_sup_grid = TensorGrid(vec1_sup, vec2_sub) assert not grid.is_subgrid(not_sup_grid) assert not not_sup_grid.is_subgrid(grid) # Fuzzy check fuzzy_vec1_sup = vec1_sup + (0.1, 0.05, 0, -0.1, 0, 0.1) fuzzy_vec2_sup = vec2_sup + (0.1, 0.05, 0, -0.1, 0, 0.1, 0.05) fuzzy_sup_grid = TensorGrid(fuzzy_vec1_sup, fuzzy_vec2_sup) assert grid.is_subgrid(fuzzy_sup_grid, tol=0.15) fuzzy_vec2_sup = vec2_sup + (0.1, 0.05, 0, -0.1, 0, 0.11, 0.05) fuzzy_sup_grid = TensorGrid(fuzzy_vec1_sup, fuzzy_vec2_sup) assert not grid.is_subgrid(fuzzy_sup_grid, tol=0.1) # Changes in the non-overlapping part don't matter fuzzy_vec2_sup = vec2_sup + (0.1, 0.05, 0, -0.1, 0, 0.05, 0.11) fuzzy_sup_grid = TensorGrid(fuzzy_vec1_sup, fuzzy_vec2_sup) assert grid.is_subgrid(fuzzy_sup_grid, tol=0.15) # With degenerate axis grid = TensorGrid(vec1, scalar, vec2) sup_grid = TensorGrid(vec1_sup, scalar, vec2_sup) assert grid.is_subgrid(sup_grid) fuzzy_sup_grid = TensorGrid(vec1, scalar + 0.1, vec2) assert grid.is_subgrid(fuzzy_sup_grid, tol=0.15)