find_molecular_rings#
- find_molecular_rings(mol_graph, min_ring_size=3, max_ring_size=12)[source]#
Find all rings (cycles) in a molecular graph represented as a NetworkX graph.
Parameters:#
- mol_graphnx.Graph
NetworkX graph where nodes represent atomic indices and edges represent bonds
- min_ring_sizeint, default=3
Minimum ring size to consider
- max_ring_sizeint, default=12
Maximum ring size to consider (helps avoid very large cycles)
Returns:#
- list[tuple[int, …]]
List of tuples, each containing atomic indices forming a ring, sorted by ring size (smallest first)
Example:#
>>> import networkx as nx >>> # Create a simple 6-membered ring (benzene-like) >>> G = nx.Graph() >>> G.add_edges_from([(0,1), (1,2), (2,3), (3,4), (4,5), (5,0)]) >>> rings = find_molecular_rings(G) >>> print(rings) # [(0, 1, 2, 3, 4, 5)]