@@ -55,15 +55,15 @@ def __init__(
5555 self ,
5656 tn : qtn .TensorNetwork ,
5757 p : Optional [qtn .TensorNetwork ] = None ,
58- cutoffs : float = 1.e -12 ,
58+ cutoffs : float = 1e -12 ,
5959 backend : Optional [str ] = None ,
6060 site_tag_id : str = "I{}" ,
6161 opt : str = "auto-hq" ,
6262 range_int : Optional [Sequence [int ]] = None ,
6363 re_tag : bool = False ,
6464 info : Optional [Dict [str , Any ]] = None ,
6565 warning : bool = False ,
66- inplace = False ,
66+ inplace : bool = False ,
6767 ): # pylint: disable=too-many-arguments,too-many-positional-arguments
6868
6969 if p is None :
@@ -79,19 +79,19 @@ def __init__(
7979
8080 self .tn = tn .copy ()
8181
82-
8382 if site_tag_id :
83+ site_ind_id = getattr (self .p , "site_ind_id" , None )
8484 self .p .view_as_ (
8585 qtn .MatrixProductState ,
8686 L = self .L ,
8787 site_tag_id = site_tag_id ,
88- site_ind_id = None ,
88+ site_ind_id = site_ind_id ,
8989 cyclic = False ,
9090 )
9191
9292 self .site_tag_id = site_tag_id
9393
94- # cotengra path finder
94+ # Contraction path optimizer spec.
9595 self .opt = opt
9696
9797 # cutoffs and underlying backend
@@ -101,9 +101,9 @@ def __init__(
101101 # warnings being printed or not
102102 self .warning = warning
103103
104- # store cost function results
105- self .loss : List [float ] = []
106- self .loss_ : List [float ] = []
104+ # Diagnostics collected during sweeps.
105+ self .fidelity_trace : List [float ] = []
106+ self .local_norm_trace : List [float ] = []
107107 self .info : Dict [str , Any ] = info or {}
108108 self .range_int : List [int ] = list (range_int ) if range_int is not None else []
109109 if self .range_int :
@@ -114,7 +114,6 @@ def __init__(
114114 raise ValueError ("range_int must satisfy start < stop." )
115115
116116
117- # Is there a better solution?
118117 # Reindex tensor network with random UUIDs for internal indices
119118 self .tn .reindex_ ({idx : qtn .rand_uuid () for idx in self .tn .inner_inds ()})
120119
@@ -125,7 +124,6 @@ def __init__(
125124 if re_tag :
126125 self ._re_tag ()
127126
128-
129127 def visual (
130128 self ,
131129 figsize = (14 , 14 ),
@@ -215,7 +213,6 @@ def _re_tag(self):
215213 )
216214 self ._deep_tag ()
217215
218-
219216 def run (self , n_iter = 6 , verbose = False ):
220217 """Run basic left-to-right local fitting sweeps.
221218
@@ -224,7 +221,7 @@ def run(self, n_iter=6, verbose=False):
224221 n_iter : int
225222 Number of complete sweeps.
226223 verbose : bool
227- If ``True``, append per-sweep fidelity values to ``self.loss ``.
224+ If ``True``, append per-sweep fidelity values to ``self.fidelity_trace ``.
228225 """
229226 if self .p is None :
230227 raise ValueError ("Initial state `p` must be provided." )
@@ -250,15 +247,15 @@ def run(self, n_iter=6, verbose=False):
250247 f = f .transpose (* psi [site ].inds )
251248
252249 norm_f = (f .H & f ).contract (all ) ** 0.5
253- self .loss_ .append (complex (norm_f ).real )
250+ self .local_norm_trace .append (complex (norm_f ).real )
254251
255252 # Update tensor data
256253 psi [site ].modify (data = f .data )
257254
258255 # Compute fidelity if verbose mode is enabled
259256 if verbose :
260257 fidelity = tn_fidelity (self .tn , psi )
261- self .loss .append (ar .do ("real" , fidelity ))
258+ self .fidelity_trace .append (ar .do ("real" , fidelity ))
262259
263260 def _build_env_right (self , psi , env_right ):
264261 """
@@ -286,9 +283,6 @@ def _build_env_right(self, psi, env_right):
286283 t |= env_right [site_tag_id .format (i + 1 )]
287284 env_right [site_tag_id .format (i )] = t .contract (all , optimize = opt )
288285
289-
290-
291-
292286 def _right_range (self , psi , env_right , start , stop ):
293287 """
294288 Build right environments env_right["I{i}"] for i in 0..L-1.
@@ -355,8 +349,6 @@ def _left_range(self, psi, site, count, env_left):
355349 t |= env_left [site_tag_id .format (site - 1 )]
356350 env_left [site_tag_id .format (site )] = t .contract (all , optimize = opt )
357351
358-
359-
360352 def _update_env_left (self , psi , site : int , env_left ):
361353 """Update left environment incrementally for current site."""
362354
@@ -376,8 +368,11 @@ def _update_env_left(self, psi, site: int, env_left):
376368 t |= env_left [site_tag_id .format (site - 1 )]
377369 env_left [site_tag_id .format (site )] = t .contract (all , optimize = opt )
378370
379-
380- def run_eff (self , n_iter = 6 , verbose = False ): # pylint: disable=too-many-branches,too-many-locals,too-many-statements
371+ def run_eff (
372+ self ,
373+ n_iter = 6 ,
374+ verbose = False ,
375+ ): # pylint: disable=too-many-branches,too-many-locals,too-many-statements
381376 """Run environment-based fitting sweeps with cached left/right blocks.
382377
383378 This method avoids rebuilding full contractions at each site by
@@ -456,7 +451,7 @@ def run_eff(self, n_iter=6, verbose=False): # pylint: disable=too-many-branches
456451 raise TypeError ("Unexpected effective tensor type during run_eff." )
457452
458453 norm_f = (f .H & f ).contract (all ) ** 0.5
459- self .loss_ .append (complex (norm_f ).real )
454+ self .local_norm_trace .append (complex (norm_f ).real )
460455
461456 # Contract and normalize
462457 # Update tensor data
@@ -465,9 +460,7 @@ def run_eff(self, n_iter=6, verbose=False): # pylint: disable=too-many-branches
465460 # Compute fidelity if verbose mode is enabled
466461 if verbose :
467462 fidelity = tn_fidelity (self .tn , psi )
468- self .loss .append (ar .do ("real" , fidelity ))
469-
470-
463+ self .fidelity_trace .append (ar .do ("real" , fidelity ))
471464
472465 def run_gate (
473466 self , n_iter = 6 , verbose = False
@@ -525,7 +518,6 @@ def run_gate(
525518 tn = env_right [site_tag_id .format (site + 1 )]
526519
527520 if 0 < site < L - 1 :
528-
529521 # Boundary consistency: the left and right indices must match between tn and p
530522 if count_ == 0 :
531523 indx = psi .bond (start - 1 , start )
@@ -579,10 +571,7 @@ def run_gate(
579571 raise TypeError ("Unexpected effective tensor type during run_gate." )
580572
581573 norm_f = (f .H & f ).contract (all ) ** 0.5
582-
583- # norm_f = ar.do("norm", f.data)
584-
585- self .loss_ .append (complex (norm_f ).real )
574+ self .local_norm_trace .append (complex (norm_f ).real )
586575
587576 # Contract and normalize
588577 # Update tensor data
@@ -591,8 +580,7 @@ def run_gate(
591580 if site < stop :
592581 psi .left_canonize_site (site , bra = None )
593582
594-
595583 # Compute fidelity if verbose mode is enabled
596584 if verbose :
597585 fidelity = tn_fidelity (self .tn , psi )
598- self .loss .append (ar .do ("real" , fidelity ))
586+ self .fidelity_trace .append (ar .do ("real" , fidelity ))
0 commit comments