qbraid.transpiler.ConversionGraph
- class ConversionGraph(conversions=None, require_native=False)[source]
Class for coordinating conversions between different quantum software programs
Initialize a ConversionGraph instance.
- Parameters:
conversions (optional, list[Conversion]) – List of conversion edges. If None, default conversion edges are used.
require_native (bool) – If True, only include “native” conversion functions. Defaults to False.
- __init__(conversions=None, require_native=False)[source]
Initialize a ConversionGraph instance.
- Parameters:
conversions (optional, list[Conversion]) – List of conversion edges. If None, default conversion edges are used.
require_native (bool) – If True, only include “native” conversion functions. Defaults to False.
Methods
__init__
([conversions, require_native])Initialize a ConversionGraph instance.
add_child
(parent, obj, edge, /)Add a new child node to the graph.
add_conversion
(edge[, overwrite])Add a new conversion function as an edge in the graph.
add_edge
(parent, child, edge, /)Add an edge between 2 nodes.
add_edges_from
(obj_list, /)Add new edges to the dag.
add_edges_from_no_data
(obj_list, /)Add new edges to the dag without python data.
add_node
(obj, /)Add a new node to the graph.
add_nodes_from
(obj_list, /)Add new nodes to the graph.
add_parent
(child, obj, edge, /)Add a new parent node to the dag.
adj
(node, /)Get the index and data for the neighbors of a node.
adj_direction
(node, direction, /)Get the index and data for either the parent or children of a node.
all_paths
(source, target)Return string representations of all conversion paths between two nodes.
clear
()Clear all nodes and edges
clear_edges
()Clears all edges, leaves nodes intact
compose
(other, node_map, /[, node_map_func, ...])Add another PyDiGraph object into this PyDiGraph
contract_nodes
(nodes, obj, /[, check_cycle, ...])Substitute a set of nodes with a single new node.
conversions
()Get the list of conversion edges.
copy
()Create a copy of this graph, returning a new instance of ConversionGraph.
create_conversion_graph
()Create a directed graph from a list of conversion functions.
edge_index_map
()Get an edge index map
edge_indices
()Return a list of all edge indices.
edge_indices_from_endpoints
(node_a, node_b)Return a list of indices of all directed edges between specified nodes
edge_list
()Get edge list
edge_subgraph
(edge_list, /)Return a new PyDiGraph object for an edge induced subgraph of this graph
edges
()Return a list of all edge data.
extend_from_edge_list
(edge_list, /)Extend graph from an edge list
extend_from_weighted_edge_list
(edge_list, /)Extend graph from a weighted edge list
filter_edges
(filter_function)Filters a graph's edges by some criteria conditioned on a edge's data payload and returns those edges' indices.
filter_nodes
(filter_function)Filters a graph's nodes by some criteria conditioned on a node's data payload and returns those nodes' indices.
find_adjacent_node_by_edge
(node, predicate, /)Find a target node with a specific edge
find_node_by_weight
(obj, /)Find node within this graph given a specific weight
find_predecessor_node_by_edge
(node, predicate, /)Find a source node with a specific edge
find_predecessors_by_edge
(node, filter_fn, /)Return a filtered list of predecessor data such that each node has at least one edge data which matches the filter.
find_shortest_conversion_path
(source, target)Find the shortest conversion path between two nodes in a graph.
find_successors_by_edge
(node, filter_fn, /)Return a filtered list of successors data such that each node has at least one edge data which matches the filter.
find_top_shortest_conversion_paths
(source, ...)Find the top shortest conversion paths between two nodes in a graph.
from_adjacency_matrix
(matrix, /[, null_value])Create a new
PyDiGraph
object from an adjacency matrix with matrix elements of typefloat
from_complex_adjacency_matrix
(matrix, /[, ...])Create a new
PyDiGraph
object from an adjacency matrix with matrix elements of typecomplex
get_all_edge_data
(node_a, node_b, /)Return the edge data for all the edges between 2 nodes.
get_edge_data
(node_a, node_b, /)Return the edge data for an edge between 2 nodes.
get_edge_data_by_index
(edge_index, /)Return the edge data for the edge by its given index
get_edge_endpoints_by_index
(edge_index, /)Return the edge endpoints for the edge by its given index
get_node_data
(node, /)Return the node data for a given node index
has_edge
(node_a, node_b)Check if an edge exists between two nodes in the graph.
has_node
(node)Check if a node exists in the graph.
has_parallel_edges
()Detect if the graph has parallel edges or not
has_path
(source, target)Check if a conversion between two languages is supported.
in_degree
(node, /)Get the degree of a node for inbound edges.
in_edges
(node, /)Get the index and edge data for all parents of a node.
incident_edge_index_map
(node, /[, all_edges])Return the index map of edges incident to a provided node
incident_edges
(node, /[, all_edges])Return the list of edge indices incident to a provided node
insert_node_on_in_edges
(node, ref_node, /)Insert a node between a reference node and all its predecessor nodes
insert_node_on_in_edges_multiple
(node, ...)Insert a node between a list of reference nodes and all their predecessors
insert_node_on_out_edges
(node, ref_node, /)Insert a node between a reference node and all its successor nodes
insert_node_on_out_edges_multiple
(node, ...)Insert a node between a list of reference nodes and all their successors
is_symmetric
()Check if the graph is symmetric
load_default_conversions
()Create a list of default conversion nodes using predefined conversion functions.
make_symmetric
([edge_payload_fn])Make edges in graph symmetric
merge_nodes
(u, v, /)Merge two nodes in the graph.
neighbors
(node, /)Get the neighbors (i.e. successors) of a node.
node_indexes
()Return a list of all node indices.
node_indices
()Return a list of all node indices.
nodes
()Return a list of all node data.
num_edges
()Return the number of edges in the graph
num_nodes
()Return the number of nodes in the graph
out_degree
(node, /)Get the degree of a node for outbound edges.
out_edges
(node, /)Get the index and edge data for all children of a node.
plot
(**kwargs)Plot the conversion graph.
predecessor_indices
(node, /)Get the predecessor indices of a node.
predecessors
(node, /)Return a list of all the node predecessor data.
read_edge_list
(path, /[, comment, ...])Read an edge list file and create a new PyDiGraph object from the contents
remove_conversion
(source, target)Safely remove a conversion from the graph.
remove_edge
(parent, child, /)Remove an edge between 2 nodes.
remove_edge_from_index
(edge, /)Remove an edge identified by the provided index
remove_edges_from
(index_list, /)Remove edges from the graph.
remove_node
(node, /)Remove a node from the graph.
remove_node_retain_edges
(node, /[, ...])Remove a node from the graph and add edges from all predecessors to all successors
remove_node_retain_edges_by_id
(node, /)Remove a node from the graph and add edges from predecessors to successors in cases where an incoming and outgoing edge have the same weight by Python object identity.
remove_node_retain_edges_by_key
(node, /[, ...])Remove a node from the graph and add edges from predecessors to successors in cases where an incoming and outgoing edge have the same weight by Python object equality.
remove_nodes_from
(index_list, /)Remove nodes from the graph.
reset
([conversions])Reset the graph to its default state.
reverse
()Reverse the direction of all edges in the graph, in place.
shortest_path
(source, target)Return string representation of the shortest conversion path between two nodes.
subgraph
(nodes, /[, preserve_attrs])Return a new PyDiGraph object for a subgraph of this graph
substitute_node_with_subgraph
(node, other, ...)Substitute a node with a PyDigraph object
successor_indices
(node, /)Get the successor indices of a node.
successors
(node, /)Return a list of all the node successor data.
to_dot
([node_attr, edge_attr, graph_attr, ...])Generate a dot file from the graph
to_undirected
([multigraph, weight_combo_fn])Generate a new PyGraph object from this graph
update_edge
(source, target, edge, /)Update an edge's weight/payload inplace
update_edge_by_index
(edge_index, edge, /)Update an edge's weight/payload by the edge index
weighted_edge_list
()Get edge list with weights
write_edge_list
(path, /[, deliminator, ...])Write an edge list file from the PyDiGraph object
Attributes
attrs
check_cycle
Whether cycle checking is enabled for the DiGraph/DAG.
multigraph
Whether the graph is a multigraph (allows multiple edges between nodes) or not