@@ -245,7 +245,7 @@ def perform_CP(tOrig, r=6, tol=1e-6):
245245 return tFac
246246
247247
248- def perform_CMTF (tOrig , mOrig = None , r = 9 , tol = 1e-6 ):
248+ def perform_CMTF (tOrig , mOrig = None , r = 9 , tol = 1e-6 , maxiter = 50 ):
249249 """ Perform CMTF decomposition. """
250250 assert tOrig .dtype == float
251251 if mOrig is not None :
@@ -260,9 +260,9 @@ def perform_CMTF(tOrig, mOrig=None, r=9, tol=1e-6):
260260 # Precalculate the missingness patterns
261261 uniqueInfo = np .unique (np .isfinite (unfolded .T ), axis = 1 , return_inverse = True )
262262
263- for _ in range (40 ):
263+ for _ in range (maxiter ):
264264 tensor = np .nan_to_num (tOrig ) + tl .cp_to_tensor (tFac ) * np .isnan (tOrig )
265- tFac = parafac (tensor , r , 200 , init = tFac , verbose = False , fixed_modes = [0 ], mask = np .isfinite (tOrig ))
265+ tFac = parafac (tensor , r , 200 , init = tFac , verbose = False , fixed_modes = [0 ], mask = np .isfinite (tOrig ), linesearch = True , tol = 1e-9 )
266266
267267 # Solve for the glycan matrix fit
268268 tFac .mFactor = np .linalg .lstsq (tFac .factors [0 ][missingM , :], mOrig [missingM , :], rcond = - 1 )[0 ].T
0 commit comments