From c68f83967c1ee0ac09123fcadacc10b4154c5606 Mon Sep 17 00:00:00 2001 From: ludvigla Date: Tue, 23 Jun 2026 10:57:27 +0200 Subject: [PATCH 1/4] changes min_allowed_nodes_pct in adaptive_core_expansion to 0.9 --- src/pixelator/pna/graph/adaptive_core_expansion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pixelator/pna/graph/adaptive_core_expansion.py b/src/pixelator/pna/graph/adaptive_core_expansion.py index 34a276e4..aaa418c0 100644 --- a/src/pixelator/pna/graph/adaptive_core_expansion.py +++ b/src/pixelator/pna/graph/adaptive_core_expansion.py @@ -257,7 +257,7 @@ def adaptive_core_expansion( max_iter: int = 200, min_seed_pct: float = 0.1, nodes_to_move_threshold: int = 10, - min_allowed_nodes_pct: float = 0.8, + min_allowed_nodes_pct: float = 0.9, select_lcc: bool = True, ) -> Graph: """Perform Adaptive Core Expansion (ACE) graph partitioning. From 43ec5da6f0e0d83ad78f620c938cb240c5f7f70f Mon Sep 17 00:00:00 2001 From: ludvigla Date: Tue, 23 Jun 2026 12:07:07 +0200 Subject: [PATCH 2/4] Updated tests --- tests/pna/denoise/test_denoise.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/pna/denoise/test_denoise.py b/tests/pna/denoise/test_denoise.py index 3ca4e68c..fd37f215 100644 --- a/tests/pna/denoise/test_denoise.py +++ b/tests/pna/denoise/test_denoise.py @@ -513,7 +513,8 @@ def f(*args, **kwargs): REFERENCE_ACE_COMPONENT = "57129a8b0fff38c6" -REFERENCE_ACE_LOW_NODE_COUNT = 5436 +REFERENCE_ACE_COMPONENT_HIGH_QUALITY = "c4c3ef9497b3746d" +REFERENCE_ACE_LOW_NODE_COUNT = 32 def test_denoise_pls_reference_component_runs_and_cleans_coreness(denoise_pxl_dataset): @@ -588,13 +589,14 @@ def test_denoise_ace_reference_component(denoise_pxl_dataset): denoise_pxl_dataset: Denoise pxl dataset. """ comp_graph = PNAGraph.from_edgelist( - denoise_pxl_dataset.filter(components=[REFERENCE_ACE_COMPONENT]) + denoise_pxl_dataset.filter(components=[REFERENCE_ACE_COMPONENT_HIGH_QUALITY]) .edgelist() .to_polars() .lazy() ) removed = denoise_ace(comp_graph) assert removed != [None] + a = len(removed) assert len(removed) == REFERENCE_ACE_LOW_NODE_COUNT partitions = nx.get_node_attributes(comp_graph.raw, "partition") low_ids = {n for n, p in partitions.items() if p == "low"} @@ -625,7 +627,9 @@ def test_denoise_ace_analysis(denoise_pxl_dataset, tmp_path): == obs["number_of_nodes_removed_in_denoise"] ).all() assert int( - obs.loc[REFERENCE_ACE_COMPONENT, "denoised_nodes_marked_only_by_ace"] + obs.loc[ + REFERENCE_ACE_COMPONENT_HIGH_QUALITY, "denoised_nodes_marked_only_by_ace" + ] ) == (REFERENCE_ACE_LOW_NODE_COUNT) assert ( @@ -633,13 +637,13 @@ def test_denoise_ace_analysis(denoise_pxl_dataset, tmp_path): ) # ACE-only denoising with LCC seed should not produce stranded nodes orig_graph = PNAGraph.from_edgelist( - denoise_pxl_dataset.filter(components=[REFERENCE_ACE_COMPONENT]) + denoise_pxl_dataset.filter(components=[REFERENCE_ACE_COMPONENT_HIGH_QUALITY]) .edgelist() .to_polars() .lazy() ) denoised_graph = PNAGraph.from_edgelist( - denoised_dataset.filter(components=[REFERENCE_ACE_COMPONENT]) + denoised_dataset.filter(components=[REFERENCE_ACE_COMPONENT_HIGH_QUALITY]) .edgelist() .to_polars() .lazy() From bf3076a3ff5fe8cf6710593cead57bea3297127b Mon Sep 17 00:00:00 2001 From: ludvigla Date: Tue, 23 Jun 2026 12:12:47 +0200 Subject: [PATCH 3/4] Updated CHANGELOG --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5f6d8aa..0b6384bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed +- The default `min_allowed_nodes_pct` in `adaptive_core_expansion` has been changed from 0.8 to 0.9, meaning that a valid "high" core partition must include at least 90% of all nodes. Components that don't meet this criteria will not be denoised by ACE. + ## [0.29.0] - 2026-06-15 ### Added From 96704ee4308417fa17f80f096cae855ab3341865 Mon Sep 17 00:00:00 2001 From: ludvigla Date: Tue, 23 Jun 2026 13:12:18 +0200 Subject: [PATCH 4/4] Fixed failing test --- tests/pna/denoise/test_denoise_cli.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/pna/denoise/test_denoise_cli.py b/tests/pna/denoise/test_denoise_cli.py index 9af48020..8c618d55 100644 --- a/tests/pna/denoise/test_denoise_cli.py +++ b/tests/pna/denoise/test_denoise_cli.py @@ -72,8 +72,7 @@ def test_denoise_ace_cli_runs_ok(denoise_pxl_file): result = read(out_pxl) obs = result.adata().obs assert ( - int(obs.loc["57129a8b0fff38c6", "denoised_nodes_marked_only_by_ace"]) - == 5436 + int(obs.loc["c4c3ef9497b3746d", "denoised_nodes_marked_only_by_ace"]) == 32 ) summary_cols = [ "denoised_nodes_marked_only_by_ace",