|
19 | 19 |
|
20 | 20 | import attrs |
21 | 21 | import numpy as np |
22 | | -import quimb.tensor as qtn |
23 | 22 | from attrs import frozen |
24 | 23 | from sympy import Expr |
25 | 24 |
|
|
42 | 41 |
|
43 | 42 | if TYPE_CHECKING: |
44 | 43 | import cirq |
| 44 | + import quimb.tensor as qtn |
45 | 45 | from numpy.typing import NDArray |
46 | 46 |
|
47 | 47 | from qualtran import AddControlledT, CtrlSpec |
@@ -83,12 +83,14 @@ def on_classical_vals(self, reg: int) -> Dict[str, 'ClassicalValT']: |
83 | 83 |
|
84 | 84 | def add_my_tensors( |
85 | 85 | self, |
86 | | - tn: qtn.TensorNetwork, |
| 86 | + tn: 'qtn.TensorNetwork', |
87 | 87 | tag: Any, |
88 | 88 | *, |
89 | 89 | incoming: Dict[str, 'SoquetT'], |
90 | 90 | outgoing: Dict[str, 'SoquetT'], |
91 | 91 | ): |
| 92 | + import quimb.tensor as qtn |
| 93 | + |
92 | 94 | if not isinstance(outgoing['reg'], np.ndarray): |
93 | 95 | raise ValueError('Outgoing register must be a numpy array') |
94 | 96 | tn.add( |
@@ -150,12 +152,14 @@ def _t_complexity_(self) -> 'TComplexity': |
150 | 152 |
|
151 | 153 | def add_my_tensors( |
152 | 154 | self, |
153 | | - tn: qtn.TensorNetwork, |
| 155 | + tn: 'qtn.TensorNetwork', |
154 | 156 | tag: Any, |
155 | 157 | *, |
156 | 158 | incoming: Dict[str, 'SoquetT'], |
157 | 159 | outgoing: Dict[str, 'SoquetT'], |
158 | 160 | ): |
| 161 | + import quimb.tensor as qtn |
| 162 | + |
159 | 163 | if not isinstance(incoming['reg'], np.ndarray): |
160 | 164 | raise ValueError('Incoming register must be a numpy array') |
161 | 165 | tn.add( |
@@ -241,12 +245,14 @@ def _t_complexity_(self) -> 'TComplexity': |
241 | 245 |
|
242 | 246 | def add_my_tensors( |
243 | 247 | self, |
244 | | - tn: qtn.TensorNetwork, |
| 248 | + tn: 'qtn.TensorNetwork', |
245 | 249 | tag: Any, |
246 | 250 | *, |
247 | 251 | incoming: Dict[str, 'SoquetT'], |
248 | 252 | outgoing: Dict[str, 'SoquetT'], |
249 | 253 | ): |
| 254 | + import quimb.tensor as qtn |
| 255 | + |
250 | 256 | unitary_shape = [] |
251 | 257 | soquets = [] |
252 | 258 | _incoming = incoming if self.partition else outgoing |
@@ -347,6 +353,8 @@ def add_my_tensors( |
347 | 353 | incoming: Dict[str, 'SoquetT'], |
348 | 354 | outgoing: Dict[str, 'SoquetT'], |
349 | 355 | ): |
| 356 | + import quimb.tensor as qtn |
| 357 | + |
350 | 358 | data = np.zeros(1 << self.dtype.num_qubits) |
351 | 359 | data[0] = 1 |
352 | 360 | tn.add(qtn.Tensor(data=data, inds=(outgoing['reg'],), tags=['Allocate', tag])) |
@@ -395,6 +403,8 @@ def add_my_tensors( |
395 | 403 | incoming: Dict[str, 'SoquetT'], |
396 | 404 | outgoing: Dict[str, 'SoquetT'], |
397 | 405 | ): |
| 406 | + import quimb.tensor as qtn |
| 407 | + |
398 | 408 | data = np.zeros(1 << self.dtype.num_qubits) |
399 | 409 | data[0] = 1 |
400 | 410 | tn.add(qtn.Tensor(data=data, inds=(incoming['reg'],), tags=['Free', tag])) |
@@ -468,12 +478,14 @@ def signature(self) -> Signature: |
468 | 478 |
|
469 | 479 | def add_my_tensors( |
470 | 480 | self, |
471 | | - tn: qtn.TensorNetwork, |
| 481 | + tn: 'qtn.TensorNetwork', |
472 | 482 | tag: Any, |
473 | 483 | *, |
474 | 484 | incoming: Dict[str, 'SoquetT'], |
475 | 485 | outgoing: Dict[str, 'SoquetT'], |
476 | 486 | ): |
| 487 | + import quimb.tensor as qtn |
| 488 | + |
477 | 489 | tn.add( |
478 | 490 | qtn.Tensor( |
479 | 491 | data=np.eye(2**self.inp_dtype.num_qubits, 2**self.inp_dtype.num_qubits), |
|
0 commit comments