cotengra.plot#

Hypergraph, optimizer, and contraction tree visualization tools.

Module Contents#

Functions#

show_and_close(fn)

use_neutral_style(fn)

plot_trials_alt(self[, y, width, height])

Plot the trials interactively using altair.

plot_scatter(self[, x, y, cumulative_time, plot_best, ...])

plot_trials(self, *[, x, y, figsize, cumulative_time, ...])

plot_scatter_alt(self[, x, y, color, color_scheme, ...])

Plot the trials total flops vs max size.

tree_to_networkx(tree)

hypergraph_compute_plot_info_G(H, G[, highlight, ...])

Imbue the networkx representation, G, of hypergraph, H with

rotate(xy, theta)

Return a rotated set of points.

span(xy)

Return the vertical span of the points.

massage_pos(pos[, nangles, flatten])

Rotate a position dict's points to cover a small vertical span

layout_pygraphviz(G[, prog, dim])

get_nice_pos(G, *[, dim, layout, initial_layout, ...])

plot_tree(tree[, layout, hypergraph_layout, ...])

Plot a contraction tree using matplotlib.

plot_tree_ring(tree, **kwargs)

plot_tree_tent(tree, **kwargs)

plot_tree_span(tree, **kwargs)

tree_to_df(tree)

plot_contractions(tree[, order, color_size, ...])

plot_contractions_alt(tree[, x, y, color, size, ...])

slicefinder_to_df(slice_finder[, relative_flops])

plot_slicings(slice_finder[, color_scheme, ...])

plot_slicings_alt(slice_finder[, color_scheme, ...])

plot_hypergraph(H, *[, edge_color, node_color, ...])

plot_tree_rubberband(tree[, order, colormap, ...])

Plot a ContractionTree using 'rubberbands' to represent intermediate

plot_tree_flat(tree[, edge_color, leaf_color, ...])

Plot a ContractionTree as a flat, 2D diagram, including all indices

plot_tree_circuit(tree[, edge_colormap, ...])

Attributes#

cotengra.plot.show_and_close(fn)[source]#
cotengra.plot.NEUTRAL_STYLE#
cotengra.plot.use_neutral_style(fn)[source]#
cotengra.plot.plot_trials_alt(self, y=None, width=800, height=300)[source]#

Plot the trials interactively using altair.

cotengra.plot._scatter_labels#
cotengra.plot.plot_scatter(self, x='size', y='flops', cumulative_time=False, plot_best=False, figsize=(5, 5))[source]#
cotengra.plot.plot_trials(self, *, x='trial', y='score', figsize=(8, 3), cumulative_time=True, plot_best=True, **kwargs)[source]#
cotengra.plot.plot_scatter_alt(self, x='size', y='flops', color='run:Q', color_scheme='purplebluegreen', shape='method:N', width=400, height=400)[source]#

Plot the trials total flops vs max size.

cotengra.plot.tree_to_networkx(tree)[source]#
cotengra.plot.hypergraph_compute_plot_info_G(H, G, highlight=(), node_color=(0.5, 0.5, 0.5, 1.0), edge_color=(0.0, 0.0, 0.0), edge_alpha=1 / 3, colormap='Spectral_r', centrality=False, sliced_inds=(), edge_style='-', hyperedge_style='--', sliced_style=':')[source]#

Imbue the networkx representation, G, of hypergraph, H with relevant plot information as node and edge attributes.

cotengra.plot.rotate(xy, theta)[source]#

Return a rotated set of points.

cotengra.plot.span(xy)[source]#

Return the vertical span of the points.

cotengra.plot.massage_pos(pos, nangles=100, flatten=False)[source]#

Rotate a position dict’s points to cover a small vertical span

cotengra.plot.layout_pygraphviz(G, prog='neato', dim=2, **kwargs)[source]#
cotengra.plot.HAS_FA2#
cotengra.plot.HAS_PYGRAPHVIZ#
cotengra.plot.get_nice_pos(G, *, dim=2, layout='auto', initial_layout='auto', iterations='auto', k=None, use_forceatlas2=False, flatten=False)[source]#
cotengra.plot.plot_tree(tree, layout='ring', hypergraph_layout='auto', hypergraph_layout_opts=None, k=0.01, iterations=500, span=None, order=None, order_y_pow=1.0, edge_scale=1.0, node_scale=1.0, highlight=(), edge_color='size', edge_colormap='GnBu', edge_max_width=None, node_colormap='YlOrRd', node_color='flops', node_max_size=None, figsize=(5, 5), raw_edge_color=None, raw_edge_alpha=None, tree_root_height=True, tree_alpha=0.8, colorbars=True, plot_raw_graph=True, plot_leaf_labels=False, ax=None)[source]#

Plot a contraction tree using matplotlib.

cotengra.plot.plot_tree_ring(tree, **kwargs)[source]#
cotengra.plot.plot_tree_tent(tree, **kwargs)[source]#
cotengra.plot.plot_tree_span(tree, **kwargs)[source]#
cotengra.plot.tree_to_df(tree)[source]#
cotengra.plot.plot_contractions(tree, order=None, color_size=(0.6, 0.4, 0.7), color_cost=(0.3, 0.7, 0.5), figsize=(8, 3))[source]#
cotengra.plot.plot_contractions_alt(tree, x='peak-size', y='flops', color='stage', size='scaling', width=400, height=400, point_opacity=0.8, color_scheme='lightmulti', x_scale='log', y_scale='log', color_scale='log', size_scale='linear')[source]#
cotengra.plot.slicefinder_to_df(slice_finder, relative_flops=False)[source]#
cotengra.plot.plot_slicings(slice_finder, color_scheme='RdYlBu_r', relative_flops=False, figsize=(6, 3), point_opacity=0.8)[source]#
cotengra.plot.plot_slicings_alt(slice_finder, color_scheme='redyellowblue', relative_flops=False)[source]#
cotengra.plot.plot_hypergraph(H, *, edge_color=True, node_color=True, highlight=(), centrality='simple', colormap='plasma', pos=None, dim=2, layout='auto', initial_layout='auto', iterations='auto', k=None, use_forceatlas2=False, flatten=False, node_size=None, node_scale=1.0, edge_alpha=1 / 3, edge_style='solid', hyperedge_style='dashed', draw_edge_labels=None, fontcolor=(0.5, 0.5, 0.5), edge_labels_font_size=8, edge_labels_font_family='monospace', node_labels_font_size=10, node_labels_font_family='monospace', info=None, ax=None, figsize=(5, 5))[source]#
cotengra.plot.plot_tree_rubberband(tree, order=None, colormap='Spectral', with_edge_labels=None, with_node_labels=None, highlight=(), centrality=False, layout='auto', node_size=None, node_color=(0.5, 0.5, 0.5, 1.0), edge_color=(0.5, 0.5, 0.5), edge_alpha=1 / 3, edge_style='solid', hyperedge_style='dashed', draw_edge_labels=None, edge_labels_font_size=8, edge_labels_font_family='monospace', iterations=500, ax=None, figsize=(5, 5))[source]#

Plot a ContractionTree using ‘rubberbands’ to represent intermediate contractions / subgraphs. This can be intuitive for small and / or planar contractions.

cotengra.plot.plot_tree_flat(tree, edge_color=True, leaf_color=True, node_color=(0.5, 0.5, 0.5, 0.5), hyperedge_style='dashed', multiedge_spread=0.05, multiedge_smoothing=0.5, multiedge_midlength=0.5, fontcolor=(0.5, 0.5, 0.5), edge_labels_font_size=6, edge_labels_font_family='monospace', node_labels_font_size=8, node_labels_font_family='monospace', show_sliced=True, figsize=None)[source]#

Plot a ContractionTree as a flat, 2D diagram, including all indices at every intermediate contraction. This can be useful for small contractions, and does not require any graph layout algorithm.

Parameters:
  • tree (ContractionTree) – The contraction tree to plot.

  • edge_color (bool or color, optional) – Whether to color the edges, or a specific color to use. If True (default), each edge will be colored according to a hash of its index.

  • leaf_color (bool or color, optional) – Whether to color the input nodes, or a specific color to use. If True (default), each leaf node will be colored with an automatically generated sequence according to its linear position in the input.

  • node_color (bool or color, optional) – Whether to color the intermediate nodes, or a specific color to use. If True (default), each intermediate node will be colored with the average color of its children.

  • hyperedge_style (str, optional) – The linestyle to use for hyperedges, i.e. indices that don’t appeary exactly twice on either inputs or the output.

  • multiedge_spread (float, optional) – The spread of multi-edges between nodes.

  • multiedge_smoothing (float, optional) – The smoothing of multi-edges between nodes.

  • multiedge_midlength (float, optional) – The midlength of multi-edges between nodes.

  • fontcolor (color, optional) – The color to use for edge and node labels.

  • edge_labels_font_size (int, optional) – The font size to use for edge labels.

  • edge_labels_font_family (str, optional) – The font family to use for edge labels.

  • node_labels_font_size (int, optional) – The font size to use for node labels.

  • node_labels_font_family (str, optional) – The font family to use for node labels.

  • show_sliced (bool, optional) – Whether to list sliced indices at the top left.

  • figsize (tuple, optional) – The size of the figure to create, if not specified will be based on the number of nodes in the tree.

Returns:

  • fig (matplotlib.figure.Figure) – The figure containing the plot.

  • ax (matplotlib.axes.Axes) – The axes containing the plot.

cotengra.plot.plot_tree_circuit(tree, edge_colormap='GnBu', edge_max_width=None, node_colormap='YlOrRd', node_max_size=None, figsize=None)[source]#