risk-network 0.0.14b1__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.14b1/src/risk_network.egg-info → risk_network-0.0.14b2}/PKG-INFO +1 -1
  2. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/__init__.py +1 -1
  3. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_io.py +9 -15
  4. {risk_network-0.0.14b1 → risk_network-0.0.14b2/src/risk_network.egg-info}/PKG-INFO +1 -1
  5. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/tests/test_load_network.py +2 -2
  6. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/LICENSE +0 -0
  7. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/README.md +0 -0
  8. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/pyproject.toml +0 -0
  9. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/setup.cfg +0 -0
  10. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_annotation/__init__.py +0 -0
  11. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_annotation/_annotation.py +0 -0
  12. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_annotation/_io.py +0 -0
  13. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_annotation/_nltk_setup.py +0 -0
  14. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_log/__init__.py +0 -0
  15. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_log/_console.py +0 -0
  16. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_log/_parameters.py +0 -0
  17. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/__init__.py +0 -0
  18. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_api.py +0 -0
  19. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_community.py +0 -0
  20. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_domains.py +0 -0
  21. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_neighborhoods.py +0 -0
  22. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/__init__.py +0 -0
  23. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/_permutation/__init__.py +0 -0
  24. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/_permutation/_permutation.py +0 -0
  25. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/_permutation/_test_functions.py +0 -0
  26. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_neighborhoods/_stats/_tests.py +0 -0
  27. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/__init__.py +0 -0
  28. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_graph/__init__.py +0 -0
  29. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_graph/_api.py +0 -0
  30. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_graph/_graph.py +0 -0
  31. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_graph/_stats.py +0 -0
  32. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_graph/_summary.py +0 -0
  33. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/__init__.py +0 -0
  34. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_api.py +0 -0
  35. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_canvas.py +0 -0
  36. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_contour.py +0 -0
  37. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_labels.py +0 -0
  38. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_network.py +0 -0
  39. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_plotter.py +0 -0
  40. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_utils/__init__.py +0 -0
  41. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_utils/_colors.py +0 -0
  42. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_network/_plotter/_utils/_layout.py +0 -0
  43. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk/_risk.py +0 -0
  44. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk_network.egg-info/SOURCES.txt +0 -0
  45. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk_network.egg-info/dependency_links.txt +0 -0
  46. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk_network.egg-info/requires.txt +0 -0
  47. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/src/risk_network.egg-info/top_level.txt +0 -0
  48. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/tests/test_load_annotation.py +0 -0
  49. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/tests/test_load_graph.py +0 -0
  50. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/tests/test_load_io_combinations.py +0 -0
  51. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/tests/test_load_neighborhoods.py +0 -0
  52. {risk_network-0.0.14b1 → risk_network-0.0.14b2}/tests/test_load_plotter.py +0 -0
  53. {risk_network-0.0.14b1 → 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.14b1
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.1"
11
+ __version__ = "0.0.14-beta.2"
@@ -164,7 +164,7 @@ class NetworkIO:
164
164
  Args:
165
165
  compute_sphere (bool, optional): Whether to map nodes to a sphere. Defaults to True.
166
166
  surface_depth (float, optional): Surface depth for the sphere. Defaults to 0.0.
167
- 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.
168
168
  """
169
169
  self.compute_sphere = compute_sphere
170
170
  self.surface_depth = surface_depth
@@ -440,20 +440,14 @@ class NetworkIO:
440
440
  num_initial_edges = G.number_of_edges()
441
441
  # Remove self-loops to ensure correct edge count
442
442
  G.remove_edges_from(nx.selfloop_edges(G))
443
- # Iteratively remove nodes with fewer edges than the threshold
444
- while True:
445
- nodes_to_remove = [
446
- node
447
- for node, degree in dict(G.degree()).items()
448
- if degree < self.min_edges_per_node
449
- ]
450
- if not nodes_to_remove:
451
- break # Exit loop if no nodes meet the condition
452
- G.remove_nodes_from(nodes_to_remove)
453
-
454
- # Remove isolated nodes
455
- isolates = list(nx.isolates(G))
456
- 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))
457
451
 
458
452
  # Log the number of nodes and edges before and after cleaning
459
453
  num_final_nodes = G.number_of_nodes()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: risk-network
3
- Version: 0.0.14b1
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