aplbrain / aplbrain/grandiso-networkx

Errors on motif with disconnected nodes

Offen
#43 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
66
Forks
10
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Encountered an error when feeding in some motifs that had isolated nodes.

Code:
```python
import networkx as nx
from grandiso import find_motifs

host = nx.fast_gnp_random_graph(3, 0.5, directed=True)

motif = nx.DiGraph()
motif.add_node(0)
motif.add_node(1)
motif.add_node(2)
motif.add_edge(0, 1)
motif.add_edge(1, 0)

grandiso_motifs = find_motifs(motif, host, count_only=False)
```

Error:
```pytb
File ~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:204, in get_next_backbone_candidates(backbone, motif, host, interestingness, next_node, directed, is_node_structural_match, is_node_attr_match, is_edge_attr_match, isomorphisms_only)
[201](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:201) _greatest_backbone_count = motif_backbone_connections_count
[202](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:202) # Now we have _node_with_greatest_backbone_count as the best candidate
[203](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:203) # for `next_node`.
--> [204](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:204) next_node = max(
[205](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:205) _nodes_with_greatest_backbone_count,
[206](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:206) key=lambda node: interestingness.get(node, 0.0),
[207](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:207) )
[209](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:209) # Now we have a node `next_node` which we know is connected to the current
[210](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:210) # backbone. Get all edges between `next_node` and nodes in the backbone,
[211](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:211) # and verify that they exist in the host graph:
[212](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:212) # `required_edges` has the form (prev, self, next), with non-values filled
[213](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:213) # with None. That way we can easily remember and store the roles of the
[214](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:214) # node IDs in the next step.
[215](https://file+.vscode-resource.vscode-cdn.net/Users/ben.pedigo/code/skedits/skedits-app/skedits/~/code/skedits/skedits-app/skedits/.venv/lib/python3.11/site-packages/grandiso/__init__.py:215) required_edges = []

ValueError: max() arg is an empty sequence
```

Totally understand if you want to punt on how whether/how to execute the search with these disconnected motifs, but some documentation and/or early value erroring around this would be helpful. Took me a while to figure out what I was doing wrong (since the NetworkX will execute for these cases).

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.