qiskit.transpiler.CouplingMap
class CouplingMap(couplinglist=None, description=None)
Directed graph specifying fixed coupling.
Nodes correspond to physical qubits (integers) and directed edges correspond to permitted CNOT gates
Create coupling graph. By default, the generated coupling has no nodes.
Parameters
- couplinglist (list or None) – An initial coupling graph, specified as an adjacency list containing couplings, e.g. [[0,1], [0,2], [1,2]].
- description (str) – A string to describe the coupling map.
__init__
__init__(couplinglist=None, description=None)
Create coupling graph. By default, the generated coupling has no nodes.
Parameters
- couplinglist (list or None) – An initial coupling graph, specified as an adjacency list containing couplings, e.g. [[0,1], [0,2], [1,2]].
- description (str) – A string to describe the coupling map.
Methods
__init__ ([couplinglist, description]) | Create coupling graph. |
add_edge (src, dst) | Add directed edge to coupling graph. |
add_physical_qubit (physical_qubit) | Add a physical qubit to the coupling graph as a node. |
distance (physical_qubit1, physical_qubit2) | Returns the undirected distance between physical_qubit1 and physical_qubit2. |
draw () | Draws the coupling map. |
from_full (num_qubits[, bidirectional]) | Return a fully connected coupling map on n qubits. |
from_grid (num_rows, num_columns[, bidirectional]) | Return qubits connected on a grid of num_rows x num_columns. |
from_line (num_qubits[, bidirectional]) | Return a fully connected coupling map on n qubits. |
from_ring (num_qubits[, bidirectional]) | Return a fully connected coupling map on n qubits. |
get_edges () | Gets the list of edges in the coupling graph. |
is_connected () | Test if the graph is connected. |
largest_connected_component () | Return a set of qubits in the largest connected component. |
make_symmetric () | Convert uni-directional edges into bi-directional. |
neighbors (physical_qubit) | Return the nearest neighbors of a physical qubit. |
reduce (mapping) | Returns a reduced coupling map that corresponds to the subgraph of qubits selected in the mapping. |
shortest_undirected_path (physical_qubit1, …) | Returns the shortest undirected path between physical_qubit1 and physical_qubit2. |
size () | Return the number of physical qubits in this graph. |
subgraph (nodelist) | Return a CouplingMap object for a subgraph of self. |
Attributes
is_symmetric | Test if the graph is symmetric. |
physical_qubits | Returns a sorted list of physical_qubits |
add_edge
add_edge(src, dst)
Add directed edge to coupling graph.
src (int): source physical qubit dst (int): destination physical qubit
add_physical_qubit
add_physical_qubit(physical_qubit)
Add a physical qubit to the coupling graph as a node.
physical_qubit (int): An integer representing a physical qubit.
Raises
CouplingError – if trying to add duplicate qubit
distance
distance(physical_qubit1, physical_qubit2)
Returns the undirected distance between physical_qubit1 and physical_qubit2.
Parameters
- physical_qubit1 (int) – A physical qubit
- physical_qubit2 (int) – Another physical qubit
Returns
The undirected distance
Return type
int
Raises
CouplingError – if the qubits do not exist in the CouplingMap
draw
draw()
Draws the coupling map.
This function needs pydot, which in turn needs Graphviz to be installed. Additionally, pillow will need to be installed.
Returns
Drawn coupling map.
Return type
PIL.Image
Raises
ImportError – when pydot or pillow are not installed.
from_full
classmethod from_full(num_qubits, bidirectional=True)
Return a fully connected coupling map on n qubits.
from_grid
classmethod from_grid(num_rows, num_columns, bidirectional=True)
Return qubits connected on a grid of num_rows x num_columns.
from_line
classmethod from_line(num_qubits, bidirectional=True)
Return a fully connected coupling map on n qubits.
from_ring
classmethod from_ring(num_qubits, bidirectional=True)
Return a fully connected coupling map on n qubits.
get_edges
get_edges()
Gets the list of edges in the coupling graph.
Returns
Each edge is a pair of physical qubits.
Return type
Tuple(int,int)
is_connected
is_connected()
Test if the graph is connected.
Return True if connected, False otherwise
is_symmetric
Test if the graph is symmetric.
Return True if symmetric, False otherwise
largest_connected_component
largest_connected_component()
Return a set of qubits in the largest connected component.
make_symmetric
make_symmetric()
Convert uni-directional edges into bi-directional.
neighbors
neighbors(physical_qubit)
Return the nearest neighbors of a physical qubit.
Directionality matters, i.e. a neighbor must be reachable by going one hop in the direction of an edge.
physical_qubits
Returns a sorted list of physical_qubits
reduce
reduce(mapping)
Returns a reduced coupling map that corresponds to the subgraph of qubits selected in the mapping.
Parameters
mapping (list) – A mapping of reduced qubits to device qubits.
Returns
A reduced coupling_map for the selected qubits.
Return type
Raises
CouplingError – Reduced coupling map must be connected.
shortest_undirected_path
shortest_undirected_path(physical_qubit1, physical_qubit2)
Returns the shortest undirected path between physical_qubit1 and physical_qubit2.
Parameters
- physical_qubit1 (int) – A physical qubit
- physical_qubit2 (int) – Another physical qubit
Returns
The shortest undirected path
Return type
List
Raises
CouplingError – When there is no path between physical_qubit1, physical_qubit2.
size
size()
Return the number of physical qubits in this graph.
subgraph
subgraph(nodelist)
Return a CouplingMap object for a subgraph of self.
nodelist (list): list of integer node labels