@@ -44,7 +44,8 @@ def map_qubits(self, chip_addrs: Optional[List[int]], user_addrs: List[int] = No
4444
4545 self ._used_chip_qubits = chip_addrs
4646 self ._used_user_qubits = user_addrs
47- self ._used_user_pairs = [e for e in self ._qubit_pairs if e [0 ] in chip_addrs and e [1 ] in user_addrs ]
47+ inherited_pairs = [e for e in self ._qubit_pairs if e [0 ] in chip_addrs and e [1 ] in chip_addrs ]
48+ self ._used_user_pairs = [(user_addrs [chip_addrs .index (e [0 ])], user_addrs [chip_addrs .index (e [1 ])]) for e in inherited_pairs ]
4849
4950 def map_qubit (self , chip_addr : int , user_addr : int ) -> None :
5051 if chip_addr not in self ._qubits :
@@ -59,16 +60,15 @@ def map_qubit(self, chip_addr: int, user_addr: int) -> None:
5960 return
6061
6162 def pair_qubit (self , user_addr1 : int , user_addr2 : int , dual : bool = True , add_remove : bool = True ) -> None :
62- original_pair = (user_addr1 , user_addr2 )
63-
6463 def update_pairs (user_addr1 : int , user_addr2 : int , add_remove : bool = True ):
64+ original_pair = (user_addr1 , user_addr2 )
6565 if add_remove :
6666 if original_pair in getattr (self , "_used_user_pairs" , []):
6767 return
68- self ._qubit_mapping = getattr (self , "_used_user_pairs" , []) + [original_pair ]
68+ self ._used_user_pairs = getattr (self , "_used_user_pairs" , []) + [original_pair ]
6969 else :
7070 try :
71- self ._qubit_mapping = getattr (self , "_used_user_pairs" , []) - [original_pair ]
71+ self ._used_user_pairs = getattr (self , "_used_user_pairs" , []) - [original_pair ]
7272 except ValueError :
7373 raise ValueError (f"Qubit pair { user_addr1 } -{ user_addr2 } does not exist to remove" )
7474 update_pairs (user_addr1 , user_addr2 , add_remove )
0 commit comments