mindquantum.device.QubitsTopology
- class mindquantum.device.QubitsTopology(qubits: List[QubitNode])[source]
- Topology of qubit in physical device. - Topology is construct by different - QubitNode, and you can set the property of each qubit node directly.- Parameters
- qubits (List[ - QubitNode]) – All qubit nodes in this topology.
 - Examples - >>> from mindquantum.device import QubitsTopology >>> from mindquantum.device import QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(3)]) >>> topology[0] >> topology[1] >>> topology.is_coupled_with(0, 1) True >>> topology.set_color(0, "#121212") >>> topology[0].color '#121212' - add_qubit_node(qubit: QubitNode)[source]
- Add a qubit node into this topology. - Parameters
- qubit ( - QubitNode) – the qubit you want to add into this topology.
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(2)]) >>> topology.add_qubit_node(QubitNode(2)); >>> topology.all_qubit_id() {0, 1, 2} 
 - all_qubit_id()[source]
- Get all qubit id. - Returns
- Set[int], all qubit id in this qubit topology. 
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(2)]) >>> topology.add_qubit_node(QubitNode(2)); >>> topology.all_qubit_id() {0, 1, 2} 
 - choose(ids: List[int])[source]
- Choose qubit nodes based on given qubit id. - Parameters
- ids (List[int]) – A list of qubit node id. 
- Returns
- List[ - QubitNode], a list of qubit node based on given qubit node id.
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(3)]) >>> topology[0] >> topology[1] >> topology[2] >>> nodes = topology.choose([0, 1]) >>> print(nodes[0].qubit_id, nodes[1].qubit_id) 0 1 
 - compress()[source]
- Relabeling the qubit id so that the qubit id in new topology will start from 0. - Returns
- Tuple[QubitsTopology, Dict[int, int]], the first element of return is the new compressed topology, and the second element of return is the qubit id map with key be the qubit id in old topology and value be the qubit id in new topology. 
 - Examples - >>> from mindquantum.device import LinearQubits >>> topo1 = LinearQubits(5) >>> topo1.remove_qubit_node(0) >>> topo1.remove_qubit_node(2) >>> topo2, qubit_map = topo1.compress() >>> print(topo2.edges_with_id()) {(1, 2)} >>> print(qubit_map) {1: 0, 3: 1, 4: 2} 
 - edges_with_id()[source]
- Get edges with id of two connected qubits. - Returns
- Set[Tuple[int, int]], all connected edges in this qubit topology. 
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(2)]) >>> topology[0] << topology[1] >>> topology.edges_with_id() {(0, 1)} 
 - edges_with_poi()[source]
- Get edges with position of two connected qubits. - Returns
- Set[Tuple[Tuple[float, float], Tuple[float, float]]], the x and y position of two connected qubits. 
 - Examples - >>> from mindquantum.device import QubitNode, QubitsTopology >>> q0 = QubitNode(0, poi_x=0, poi_y=0) >>> q1 = QubitNode(1, poi_x=1, poi_y=0) >>> q0 >> q1 >>> topology = QubitsTopology([q0, q1]) >>> topology.edges_with_poi() {((0, 0), (1, 0))} 
 - get_edge_color(qubit_id1: int, qubit_id2: int)[source]
- Get color of edge. - The order of qubit_id1 and qubit_id2 does not matter. 
 - has_qubit_node(qubit_id: int)[source]
- Check whether a qubit is in this topology. - Parameters
- qubit_id (int) – the id of qubit you want to check. 
- Returns
- bool, whether this topology has qubit node with given id. 
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(2)]) >>> topology.has_qubit_node(0) True 
 - is_coupled_with(id1: int, id2: int)[source]
- Check whether two qubit nodes are coupled. - Parameters
- Returns
- bool, whether two qubits node with given ids coupled. 
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(2)]) >>> topology.is_coupled_with(0, 1) False >>> topology[0] >> topology[1] >>> topology.is_coupled_with(0, 1) True 
 - isolate_with_near(qubit_id: int)[source]
- Disconnect with all coupling qubits. - Parameters
- qubit_id (int) – the id of qubit you want to disconnect with all nearby qubits. 
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(3)]) >>> topology[0] >> topology[1] >> topology[2] >>> topology.edges_with_id() {(0, 1), (1, 2)} >>> topology.isolate_with_near(1) >>> topology.edges_with_id() set() 
 - n_edges()[source]
- Get total connected edge number. - Returns
- int, the edge number of this qubit topology. 
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(3)]) >>> topology[0] >> topology[1] >> topology[2] >>> topology.n_edges() 2 
 - remove_isolate_node()[source]
- Remove qubit node that do not connect with any other qubits. - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(3)]) >>> topology[0] >> topology[1] >> topology[2] >>> topology.edges_with_id() {(0, 1), (1, 2)} >>> topology.isolate_with_near(1) >>> topology.all_qubit_id() {0, 1, 2} >>> topology.remove_isolate_node() >>> topology.all_qubit_id() set() 
 - remove_qubit_node(qubit_id: int)[source]
- Remove a qubit node out of this topology. - Parameters
- qubit_id (int) – the id of qubit you want to remove. 
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(3)]) >>> topology.remove_qubit_node(1) >>> topology.all_qubit_id() {0, 2} 
 - select(ids: List[int])[source]
- Select certain qubit nodes to generate a new topology. - Parameters
- ids (List[int]) – A list of qubit node id. 
- Returns
- QubitsTopology, a new topology while keeping the connection property.
 - Examples - >>> from mindquantum.device import LinearQubits >>> t1 = LinearQubits(4) >>> t2 = t1.select([0, 1, 2]) >>> t2.edges_with_id() {(0, 1), (1, 2)} 
 - set_color(qubit_id: int, color: str)[source]
- Set color of certain qubit. - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(3)]) >>> topology.set_color(0, "#ababab") >>> topology[0].color '#ababab' 
 - set_edge_color(qubit_id1: int, qubit_id2: int, color: str)[source]
- Set color of edge. - The order of qubit_id1 and qubit_id2 does not matter. 
 - set_position(qubit_id: int, poi_x: float, poi_y: float)[source]
- Set position of a certain qubit. - Parameters
 - Examples - >>> from mindquantum.device import QubitsTopology, QubitNode >>> topology = QubitsTopology([QubitNode(i) for i in range(3)]) >>> topology.set_position(0, 1, 1) >>> topology[0].poi_x, topology[0].poi_y (1, 1) 
 - show(method: Optional[AVA_SHOW_METHOD] = None)[source]
- Display the topology. - Parameters
- method (str) – The method you want to display the topology. If - None, we will use default method, which is- 'mpl'in terminal environment and- 'svg'in jupyter notebook environment. You can also set it to- 'mpl'or- 'svg'manually. Default:- None.