Skip to content

Commit 2502835

Browse files
committed
tighten tests
1 parent 2b0c160 commit 2502835

File tree

1 file changed

+31
-31
lines changed

1 file changed

+31
-31
lines changed

tests/pertpy/test_distances.py

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def test_distance_class_onesided_matches_pairwise(small_adata: AnnData) -> None:
9595
)
9696
# Should match the row from pairwise matrix
9797
np.testing.assert_allclose(
98-
onesided.values, pairwise_df.loc[group].values, atol=1e-5
98+
onesided.values, pairwise_df.loc[group].values, atol=1e-6
9999
)
100100
# Self-distance should be 0
101101
assert onesided.loc[group] == pytest.approx(0.0, abs=1e-6)
@@ -188,9 +188,9 @@ def test_distance_class_onesided_bootstrap_matches_pairwise(
188188
)
189189

190190
# Should match the corresponding row from pairwise
191-
np.testing.assert_allclose(onesided.values, pairwise_df.loc["g0"].values, atol=1e-6)
191+
np.testing.assert_allclose(onesided.values, pairwise_df.loc["g0"].values, atol=1e-7)
192192
np.testing.assert_allclose(
193-
onesided_var.values, pairwise_var_df.loc["g0"].values, atol=1e-6
193+
onesided_var.values, pairwise_var_df.loc["g0"].values, atol=1e-7
194194
)
195195

196196

@@ -260,7 +260,7 @@ def test_edistance_correctness_vs_cpu(small_adata: AnnData) -> None:
260260
np.testing.assert_allclose(
261261
actual,
262262
expected,
263-
rtol=1e-5,
263+
rtol=1e-6,
264264
atol=1e-6,
265265
err_msg=f"Mismatch for ({g1}, {g2}): GPU={actual}, CPU={expected}",
266266
)
@@ -293,7 +293,7 @@ def test_edistance_correctness_larger_dataset() -> None:
293293
expected = _compute_energy_distance_cpu(X, Y)
294294
actual = result_df.loc[g1, g2]
295295
np.testing.assert_allclose(
296-
actual, expected, rtol=1e-5, atol=1e-6, err_msg=f"Mismatch for ({g1}, {g2})"
296+
actual, expected, rtol=1e-6, atol=1e-6, err_msg=f"Mismatch for ({g1}, {g2})"
297297
)
298298

299299

@@ -330,7 +330,7 @@ def test_onesided_distances_correctness_vs_cpu(small_adata: AnnData) -> None:
330330
np.testing.assert_allclose(
331331
actual,
332332
expected,
333-
rtol=1e-5,
333+
rtol=1e-6,
334334
atol=1e-6,
335335
err_msg=f"Onesided mismatch for ({selected_group}, {target_group})",
336336
)
@@ -662,8 +662,8 @@ def test_contrast_distances_two_split_by() -> None:
662662
np.testing.assert_allclose(
663663
row["edistance"],
664664
expected,
665-
rtol=1e-5,
666-
atol=1e-5,
665+
rtol=1e-6,
666+
atol=1e-6,
667667
)
668668

669669

@@ -818,7 +818,7 @@ def test_distance_call_api_vs_cpu_reference(small_adata: AnnData) -> None:
818818
np.testing.assert_allclose(
819819
actual,
820820
expected,
821-
rtol=1e-5,
821+
rtol=1e-6,
822822
atol=1e-6,
823823
err_msg=f"__call__ mismatch for ({g1}, {g2})",
824824
)
@@ -852,7 +852,7 @@ def test_distance_call_api_vs_pairwise(small_adata: AnnData) -> None:
852852
np.testing.assert_allclose(
853853
call_result,
854854
pairwise_result,
855-
atol=1e-5,
855+
atol=1e-6,
856856
err_msg=f"__call__ vs pairwise mismatch for ({g1}, {g2})",
857857
)
858858

@@ -975,7 +975,7 @@ def test_distance_layer_key_basic() -> None:
975975
np.testing.assert_allclose(
976976
actual,
977977
expected,
978-
rtol=1e-5,
978+
rtol=1e-6,
979979
atol=1e-6,
980980
err_msg=f"layer_key mismatch for ({g1}, {g2})",
981981
)
@@ -1036,7 +1036,7 @@ def test_float64_matches_float32_results() -> None:
10361036
np.testing.assert_allclose(
10371037
result_f32.values,
10381038
result_f64.values,
1039-
rtol=1e-5,
1039+
rtol=1e-6,
10401040
atol=1e-6,
10411041
err_msg="Float64 and float32 results should be similar",
10421042
)
@@ -1242,15 +1242,15 @@ def test_block_size_consistency() -> None:
12421242
np.testing.assert_allclose(
12431243
result.values,
12441244
result_256.values,
1245-
rtol=1e-5,
1246-
atol=1e-6,
1245+
rtol=1e-7,
1246+
atol=1e-7,
12471247
err_msg="256-block and 1024-block paths should produce identical results",
12481248
)
12491249
# Diagonal should be zero (self-distance)
12501250
np.testing.assert_allclose(
12511251
np.diag(result.values),
12521252
0,
1253-
atol=1e-6,
1253+
atol=1e-7,
12541254
err_msg="Diagonal (self-distance) should be zero",
12551255
)
12561256

@@ -1312,7 +1312,7 @@ def test_distance_axioms(
13121312
np.testing.assert_allclose(
13131313
result_df.values,
13141314
result_df.values.T,
1315-
atol=1e-5,
1315+
atol=1e-7,
13161316
err_msg="Matrix should be symmetric",
13171317
)
13181318

@@ -1601,7 +1601,7 @@ def test_unequal_group_sizes() -> None:
16011601
Y = cpu_embedding[np.array(groups) == g2]
16021602
expected = _compute_energy_distance_cpu(X, Y)
16031603
actual = result_df.loc[g1, g2]
1604-
np.testing.assert_allclose(actual, expected, rtol=1e-5, atol=1e-6)
1604+
np.testing.assert_allclose(actual, expected, rtol=1e-6, atol=1e-6)
16051605

16061606

16071607
def test_distance_call_empty_array_error() -> None:
@@ -1884,8 +1884,8 @@ def test_multi_gpu_pairwise_matches_single_gpu() -> None:
18841884
np.testing.assert_allclose(
18851885
single_result.values,
18861886
multi_result.values,
1887-
rtol=1e-5,
1888-
atol=1e-6,
1887+
rtol=1e-7,
1888+
atol=1e-7,
18891889
err_msg="Multi-GPU pairwise should match single-GPU",
18901890
)
18911891

@@ -1923,8 +1923,8 @@ def test_multi_gpu_onesided_matches_single_gpu() -> None:
19231923
np.testing.assert_allclose(
19241924
single_result.values,
19251925
multi_result.values,
1926-
rtol=1e-5,
1927-
atol=1e-6,
1926+
rtol=1e-7,
1927+
atol=1e-7,
19281928
err_msg="Multi-GPU onesided should match single-GPU",
19291929
)
19301930

@@ -1976,16 +1976,16 @@ def test_multi_gpu_bootstrap_matches_single_gpu() -> None:
19761976
np.testing.assert_allclose(
19771977
single_df.values,
19781978
multi_df.values,
1979-
rtol=1e-5,
1980-
atol=1e-6,
1979+
rtol=1e-7,
1980+
atol=1e-7,
19811981
err_msg="Multi-GPU bootstrap mean should match single-GPU",
19821982
)
19831983

19841984
np.testing.assert_allclose(
19851985
single_var.values,
19861986
multi_var.values,
1987-
rtol=1e-5,
1988-
atol=1e-6,
1987+
rtol=1e-7,
1988+
atol=1e-7,
19891989
err_msg="Multi-GPU bootstrap variance should match single-GPU",
19901990
)
19911991

@@ -2035,16 +2035,16 @@ def test_multi_gpu_onesided_bootstrap_matches_single_gpu() -> None:
20352035
np.testing.assert_allclose(
20362036
single_dist.values,
20372037
multi_dist.values,
2038-
rtol=1e-5,
2039-
atol=1e-6,
2038+
rtol=1e-7,
2039+
atol=1e-7,
20402040
err_msg="Multi-GPU onesided bootstrap mean should match single-GPU",
20412041
)
20422042

20432043
np.testing.assert_allclose(
20442044
single_var.values,
20452045
multi_var.values,
2046-
rtol=1e-5,
2047-
atol=1e-6,
2046+
rtol=1e-7,
2047+
atol=1e-7,
20482048
err_msg="Multi-GPU onesided bootstrap variance should match single-GPU",
20492049
)
20502050

@@ -2068,7 +2068,7 @@ def test_single_gpu_fallback_unchanged(small_adata: AnnData) -> None:
20682068
np.testing.assert_allclose(
20692069
actual,
20702070
expected,
2071-
rtol=1e-5,
2071+
rtol=1e-6,
20722072
atol=1e-6,
20732073
err_msg=f"Single-GPU fallback mismatch for ({g1}, {g2})",
20742074
)
@@ -2104,7 +2104,7 @@ def test_small_group_count_works() -> None:
21042104
X = cpu_embedding_np[:cells_per_group]
21052105
Y = cpu_embedding_np[cells_per_group:]
21062106
expected = _compute_energy_distance_cpu(X, Y)
2107-
np.testing.assert_allclose(result.loc["g0", "g1"], expected, rtol=1e-5, atol=1e-6)
2107+
np.testing.assert_allclose(result.loc["g0", "g1"], expected, rtol=1e-6, atol=1e-6)
21082108

21092109

21102110
def test_multi_gpu_with_more_gpus_than_pairs() -> None:

0 commit comments

Comments
 (0)