risk-network 0.0.14b0__tar.gz → 0.0.14b2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. {risk_network-0.0.14b0/src/risk_network.egg-info → risk_network-0.0.14b2}/PKG-INFO +1 -1
  2. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/__init__.py +1 -1
  3. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_api.py +0 -3
  4. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_graph/_api.py +0 -3
  5. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_io.py +9 -33
  6. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_api.py +0 -3
  7. {risk_network-0.0.14b0 → risk_network-0.0.14b2/src/risk_network.egg-info}/PKG-INFO +1 -1
  8. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/tests/test_load_network.py +2 -2
  9. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/LICENSE +0 -0
  10. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/README.md +0 -0
  11. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/pyproject.toml +0 -0
  12. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/setup.cfg +0 -0
  13. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_annotation/__init__.py +0 -0
  14. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_annotation/_annotation.py +0 -0
  15. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_annotation/_io.py +0 -0
  16. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_annotation/_nltk_setup.py +0 -0
  17. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_log/__init__.py +0 -0
  18. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_log/_console.py +0 -0
  19. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_log/_parameters.py +0 -0
  20. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/__init__.py +0 -0
  21. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_community.py +0 -0
  22. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_domains.py +0 -0
  23. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_neighborhoods.py +0 -0
  24. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/__init__.py +0 -0
  25. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/_permutation/__init__.py +0 -0
  26. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/_permutation/_permutation.py +0 -0
  27. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/_permutation/_test_functions.py +0 -0
  28. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/_tests.py +0 -0
  29. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/__init__.py +0 -0
  30. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_graph/__init__.py +0 -0
  31. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_graph/_graph.py +0 -0
  32. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_graph/_stats.py +0 -0
  33. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_graph/_summary.py +0 -0
  34. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/__init__.py +0 -0
  35. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_canvas.py +0 -0
  36. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_contour.py +0 -0
  37. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_labels.py +0 -0
  38. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_network.py +0 -0
  39. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_plotter.py +0 -0
  40. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_utils/__init__.py +0 -0
  41. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_utils/_colors.py +0 -0
  42. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_utils/_layout.py +0 -0
  43. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk/_risk.py +0 -0
  44. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk_network.egg-info/SOURCES.txt +0 -0
  45. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk_network.egg-info/dependency_links.txt +0 -0
  46. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk_network.egg-info/requires.txt +0 -0
  47. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/src/risk_network.egg-info/top_level.txt +0 -0
  48. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/tests/test_load_annotation.py +0 -0
  49. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/tests/test_load_graph.py +0 -0
  50. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/tests/test_load_io_combinations.py +0 -0
  51. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/tests/test_load_neighborhoods.py +0 -0
  52. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/tests/test_load_plotter.py +0 -0
  53. {risk_network-0.0.14b0 → risk_network-0.0.14b2}/tests/test_log.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: risk-network
3
- Version: 0.0.14b0
3
+ Version: 0.0.14b2
4
4
  Summary: A Python package for scalable network analysis and high-quality visualization.
5
5
  Author-email: Ira Horecka <ira89@icloud.com>
6
6
  License: GPL-3.0-or-later
@@ -8,4 +8,4 @@ RISK: Regional Inference of Significant Kinships
8
8
  from ._risk import RISK
9
9
 
10
10
  __all__ = ["RISK"]
11
- __version__ = "0.0.14-beta.0"
11
+ __version__ = "0.0.14-beta.2"
@@ -29,9 +29,6 @@ class NeighborhoodsAPI:
29
29
  The NeighborhoodsAPI class provides methods to load neighborhood results from statistical tests.
30
30
  """
31
31
 
32
- def __init__(self) -> None:
33
- pass
34
-
35
32
  def load_neighborhoods_binom(
36
33
  self,
37
34
  network: nx.Graph,
@@ -27,9 +27,6 @@ class GraphAPI:
27
27
  The GraphAPI class provides methods to load and process network graphs, annotations, and neighborhoods.
28
28
  """
29
29
 
30
- def __init__(self) -> None:
31
- pass
32
-
33
30
  def load_graph(
34
31
  self,
35
32
  network: nx.Graph,
@@ -24,24 +24,6 @@ class NetworkAPI:
24
24
  Delegates to the NetworkIO worker class for actual I/O and processing.
25
25
  """
26
26
 
27
- def __init__(
28
- self,
29
- compute_sphere: bool = True,
30
- surface_depth: float = 0.0,
31
- min_edges_per_node: int = 0,
32
- ):
33
- """
34
- Initialize the NetworkAPI.
35
-
36
- Args:
37
- compute_sphere (bool): Whether to map nodes to a sphere. Defaults to True.
38
- surface_depth (float): Surface depth for the sphere. Defaults to 0.0.
39
- min_edges_per_node (int): Minimum number of edges per node. Defaults to 0.
40
- """
41
- self.compute_sphere = compute_sphere
42
- self.surface_depth = surface_depth
43
- self.min_edges_per_node = min_edges_per_node
44
-
45
27
  def load_network_gpickle(
46
28
  self,
47
29
  filepath: str,
@@ -182,7 +164,7 @@ class NetworkIO:
182
164
  Args:
183
165
  compute_sphere (bool, optional): Whether to map nodes to a sphere. Defaults to True.
184
166
  surface_depth (float, optional): Surface depth for the sphere. Defaults to 0.0.
185
- min_edges_per_node (int, optional): Minimum number of edges per node. Defaults to 0.
167
+ min_edges_per_node (int, optional): Minimum number of edges per node (k-core threshold). Defaults to 0.
186
168
  """
187
169
  self.compute_sphere = compute_sphere
188
170
  self.surface_depth = surface_depth
@@ -458,20 +440,14 @@ class NetworkIO:
458
440
  num_initial_edges = G.number_of_edges()
459
441
  # Remove self-loops to ensure correct edge count
460
442
  G.remove_edges_from(nx.selfloop_edges(G))
461
- # Iteratively remove nodes with fewer edges than the threshold
462
- while True:
463
- nodes_to_remove = [
464
- node
465
- for node, degree in dict(G.degree()).items()
466
- if degree < self.min_edges_per_node
467
- ]
468
- if not nodes_to_remove:
469
- break # Exit loop if no nodes meet the condition
470
- G.remove_nodes_from(nodes_to_remove)
471
-
472
- # Remove isolated nodes
473
- isolates = list(nx.isolates(G))
474
- G.remove_nodes_from(isolates)
443
+ # Apply canonical node k-core pruning if requested
444
+ if self.min_edges_per_node > 0:
445
+ # networkx.k_core returns a subgraph; to preserve in-place behavior, copy back
446
+ core = nx.k_core(G, k=self.min_edges_per_node)
447
+ # Rebuild G in-place to keep external references valid
448
+ G.clear()
449
+ G.add_nodes_from(core.nodes(data=True))
450
+ G.add_edges_from(core.edges(data=True))
475
451
 
476
452
  # Log the number of nodes and edges before and after cleaning
477
453
  num_final_nodes = G.number_of_nodes()
@@ -19,9 +19,6 @@ class PlotterAPI:
19
19
  The PlotterAPI class provides methods to load and configure Plotter objects for plotting network graphs.
20
20
  """
21
21
 
22
- def __init__(self) -> None:
23
- pass
24
-
25
22
  def load_plotter(
26
23
  self,
27
24
  graph: Graph,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: risk-network
3
- Version: 0.0.14b0
3
+ Version: 0.0.14b2
4
4
  Summary: A Python package for scalable network analysis and high-quality visualization.
5
5
  Author-email: Ira Horecka <ira89@icloud.com>
6
6
  License: GPL-3.0-or-later
@@ -251,7 +251,7 @@ def test_attribute_fallback_mechanism(risk_obj, data_path):
251
251
  @pytest.mark.parametrize("min_edges", [1, 5, 10])
252
252
  def test_load_network_min_edges(risk_obj, data_path, min_edges):
253
253
  """
254
- Test loading a Cytoscape network with varying min_edges_per_node.
254
+ Test loading a Cytoscape network with varying min_edges_per_node using canonical k-core pruning.
255
255
 
256
256
  Args:
257
257
  risk_obj: The RISK object instance used for loading the network.
@@ -399,7 +399,7 @@ def test_missing_node_attributes(risk_obj, cytoscape_network):
399
399
 
400
400
  def test_remove_isolates_does_not_raise(risk_obj, dummy_network):
401
401
  """
402
- Test that loading a network with isolated nodes does not raise an error.
402
+ Test that canonical k-core removal (via min_edges_per_node) handles isolated nodes without error.
403
403
 
404
404
  Args:
405
405
  risk_obj: The RISK object instance used for loading the network.
File without changes