schrodinger.application.matsci.graph module¶
Module containing methods applied on networkx graph
Copyright Schrodinger, LLC. All rights reserved.
- exception schrodinger.application.matsci.graph.NetworkLoopError¶
Bases:
Exception
Raised when the whole network is infinite
- schrodinger.application.matsci.graph.get_sub_graphs(graph)¶
Generator of the disconnect graphs in the passed graph.
- Parameters:
graph ('networkx.classes.graph.Graph') – The graph to find subgraphs in
- Return type:
‘networkx.classes.graph.Graph’
- Returns:
subgraph of the graph
- schrodinger.application.matsci.graph.get_fused_cycles(graph)¶
Return cycles (fused and non-fused) in the graph
- Parameters:
graph ('networkx.classes.graph.Graph') – The graph to find cycles in
- Return type:
list(set)
- Returns:
list of sets of nodes that make each cycle
- schrodinger.application.matsci.graph.get_sorted_shortest_path(graph, end_nodes, max_fix=False)¶
Get the shortest path with lowest indexes. Networkx does not handle degeneracy due to cycles properly, so using all_shortest_paths to compare each path
- Parameters:
graph ('networkx.classes.graph.Graph') – The graph to calculate the shortest path in
end_nodes (list) – The start and end nodes
max_fix (bool) – Whether to fix internal degeneracy when maximum number of path checks are reached
- Returns:
The sorted shortest path.
- Return type:
list of node index for shortest ordered path between the end nodes
- schrodinger.application.matsci.graph.break_infinite_segment(graph, end_nodes)¶
Break a infinite loop segment to make it finite
- Parameters:
graph ('networkx.classes.graph.Graph') – The graph to make finite
end_nodes (list) – The start and end nodes
- Raises:
NetworkLoopError – If the segment cannot be made finite
- schrodinger.application.matsci.graph.find_backbone(graph, prefer_indexes=None, max_fix=True)¶
Find the shortest path between atoms that are furthest apart
- Parameters:
graph ('networkx.classes.graph.Graph') – The graph to find longest path in
prefer_indexes (set) – A list of preferred atom indexes to choose for the head and tail of the backbone. For paths of equal lengths, the chosen path will start and end with atoms in the prefer_indexes set if one is available. Can be used, for instance, to prefer backbones that start and end with hydrogen atoms.
max_fix (bool) – Whether to fix internal degeneracy when maximum number of path checks are reached
- Return type:
list
- Returns:
list of nodes in the longest path in the graph. Between the two end node, the node with lower index is considered as the first element of the list and the other as the last. In case of degeneracy due to cycles nodes in the path, the shortest path containing lowest indexes is selected.
- schrodinger.application.matsci.graph.find_head_tail(graph, prefer_indexes=None)¶
Find the two nodes that are furthest apart in the graph.
- Parameters:
graph ('networkx.classes.graph.Graph') – The graph to find the longest path in
prefer_indexes (set) – A list of preferred atom indexes to choose for the head and tail of the backbone. For paths of equal lengths, the chosen path will start and end with atoms in the prefer_indexes set if one is available. Can be used, for instance, to prefer backbones that start and end with hydrogen atoms.
rytpe: list return: list of two nodes that are furthest apart in the graph
- schrodinger.application.matsci.graph.find_segments(graph)¶
Find the segments in the input graph. Segments are path containing nodes where no node appears in a segment twice. Longest segments are always created first and then recursively smaller ones.
- Parameters:
graph ('networkx.classes.graph.Graph') – The graph to find segments in
- Return type:
list(list)
- Returns:
list of list of nodes. Each sublist is a list of ordered nodes, starting from lower index of the two end nodes, forming the longest path graph not containing the nodes already considered.