@@ -44,7 +44,8 @@ def map_qubits(self, chip_addrs: Optional[List[int]], user_addrs: List[int] = No
44
44
45
45
self ._used_chip_qubits = chip_addrs
46
46
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 ]
48
49
49
50
def map_qubit (self , chip_addr : int , user_addr : int ) -> None :
50
51
if chip_addr not in self ._qubits :
@@ -59,16 +60,15 @@ def map_qubit(self, chip_addr: int, user_addr: int) -> None:
59
60
return
60
61
61
62
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
-
64
63
def update_pairs (user_addr1 : int , user_addr2 : int , add_remove : bool = True ):
64
+ original_pair = (user_addr1 , user_addr2 )
65
65
if add_remove :
66
66
if original_pair in getattr (self , "_used_user_pairs" , []):
67
67
return
68
- self ._qubit_mapping = getattr (self , "_used_user_pairs" , []) + [original_pair ]
68
+ self ._used_user_pairs = getattr (self , "_used_user_pairs" , []) + [original_pair ]
69
69
else :
70
70
try :
71
- self ._qubit_mapping = getattr (self , "_used_user_pairs" , []) - [original_pair ]
71
+ self ._used_user_pairs = getattr (self , "_used_user_pairs" , []) - [original_pair ]
72
72
except ValueError :
73
73
raise ValueError (f"Qubit pair { user_addr1 } -{ user_addr2 } does not exist to remove" )
74
74
update_pairs (user_addr1 , user_addr2 , add_remove )
0 commit comments