schrodinger.thirdparty.networkx_algos module

schrodinger.thirdparty.networkx_algos.get_subgraphs(g: networkx.classes.multigraph.MultiGraph, root, *, node_weight_map=None, max_weight: float = inf) Iterable[networkx.classes.multigraph.MultiGraph]

Return a generator over all subgraphs of g weighing at most max_weight and with root root

For every iteration of this generator, a nx.MultiGraph will be yielded that is a subgraph of g. The same nx.MultiGraph is used for every iteration so if you need to save the state of the subgraph, make a copy of it (subgraph.copy()).

All nodes are given a default weight of 1. If node_weight_map is supplied, weights of nodes are determined by looking them up in the map. If they are not found in the map, the default of 1 is used.

schrodinger.thirdparty.networkx_algos.get_subtrees(g: networkx.classes.multigraph.MultiGraph, root, *, node_weight_map=None, max_weight: float = inf) Iterable[networkx.classes.multigraph.MultiGraph]

Return a generator over all subtrees of g weighing at most max_weight and with root root

For every iteration of this generator, a nx.MultiGraph will be yielded that is a subtree of g. The same nx.MultiGraph is used for every iteration so if you need to save the state of the subtree, make a copy of it (subtree.copy()).

All nodes are given a default weight of 1. If node_weight_map is supplied, weights of nodes are determined by looking them up in the map. If they are not found in the map, the default of 1 is used.

schrodinger.thirdparty.networkx_algos.leaf_first_topo_sort(g: networkx.classes.digraph.DiGraph, key=None) list

Topologically sort a directed graph with a bias towards visiting leaf nodes as early as possible.

If provided, the key function should accept a node and return a comparable value. This will be used to determine the order in which nodes are visited if they’re the same distance from a leaf.