coord = (X.flatten(), Y.flatten()) tauConv = tauDim * timeScaleConversion postfix = "%s_tau%03d" % (gridPostfix, tauDim * 1000) print 'Readig spectrum...' EigValForwardFile = '%s/eigval/eigValForward_nev%d%s.txt' % (cfg.general.specDir, nev, postfix) EigVecForwardFile = '%s/eigvec/eigVecForward_nev%d%s.txt' % (cfg.general.specDir, nev, postfix) EigValBackwardFile = '%s/eigval/eigValBackward_nev%d%s.txt' \ % (cfg.general.specDir, nev, postfix) EigVecBackwardFile = '%s/eigvec/eigVecBackward_nev%d%s.txt' \ % (cfg.general.specDir, nev, postfix) statDist = np.loadtxt('%s/transfer/initDist/initDist%s.txt' % (cfg.general.resDir, gridPostfix)) (eigValForward, eigVecForward, eigValBackward, eigVecBackward) \ = ergoPlot.readSpectrum(EigValForwardFile, EigVecForwardFile, EigValBackwardFile, EigVecBackwardFile, statDist, makeBiorthonormal=False) print 'Getting conditionning of eigenvectors...' eigenCondition = ergoPlot.getEigenCondition(eigVecForward, eigVecBackward, statDist) # Get generator eigenvalues eigValGen = (np.log(np.abs(eigValForward)) + np.angle(eigValForward)*1j) / tauConv # Plot eigenvectors alpha = 0.01 for ev in np.arange(nevPlot): print 'Plotting real part of eigenvector %d...' % (ev+1,) ergoPlot.plot2D(X, Y, eigVecForward[:, ev].real, ev_xlabel, ev_ylabel, alpha) plt.savefig('%s/spectrum/eigvec/eigVecForwardReal_nev%d_ev%03d%s.%s' \ % (cfg.general.plotDir, nev, ev+1, postfix, ergoPlot.figFormat),
coord = (X.flatten(), Y.flatten()) tauConv = tauDim * timeScaleConversion postfix = "%s_tau%03d" % (gridPostfix, tauDim * 1000) print 'Readig spectrum...' EigValForwardFile = '%s/eigval/eigValForward_nev%d%s.txt' % (cfg.general.specDir, nev, postfix) EigVecForwardFile = '%s/eigvec/eigVecForward_nev%d%s.txt' % (cfg.general.specDir, nev, postfix) EigValBackwardFile = '%s/eigval/eigValBackward_nev%d%s.txt' \ % (cfg.general.specDir, nev, postfix) EigVecBackwardFile = '%s/eigvec/eigVecBackward_nev%d%s.txt' \ % (cfg.general.specDir, nev, postfix) statDist = np.loadtxt('%s/transitionMatrix/initDist%s.txt' % (cfg.general.resDir, postfix)) (eigValForward, eigVecForward, eigValBackward, eigVecBackward) \ = ergoPlot.readSpectrum(nev, EigValForwardFile, EigVecForwardFile, EigValBackwardFile, EigVecBackwardFile, statDist, makeBiorthonormal=False) print 'Getting conditionning of eigenvectors...' eigenCondition = ergoPlot.getEigenCondition(eigVecForward, eigVecBackward, statDist) # Get generator eigenvalues eigValGen = (np.log(np.abs(eigValForward)) + np.angle(eigValForward)*1j) / tauConv # Plot eigenvectors alpha = 0.01 for ev in np.arange(nevPlot): print 'Plotting real part of eigenvector %d...' % (ev+1,) ergoPlot.plot2D(X, Y, eigVecForward[:, ev].real, ev_xlabel, ev_ylabel, alpha) plt.savefig('%s/spectrum/eigvec/eigVecForwardReal_nev%d_ev%03d%s.%s' \ % (cfg.general.plotDir, nev, ev+1, postfix, ergoPlot.figFormat),
EigVecForwardFile = '%s/eigvec/eigVecForward_nev%d%s.txt' \ % (cfg.general.specDir, cfg.spectrum.nev, postfix) EigValBackwardFile = '%s/eigval/eigValBackward_nev%d%s.txt' \ % (cfg.general.specDir, cfg.spectrum.nev, postfix) EigVecBackwardFile = '%s/eigvec/eigVecBackward_nev%d%s.txt' \ % (cfg.general.specDir, cfg.spectrum.nev, postfix) # Read stationary distribution statDist = np.loadtxt('%s/transfer/initDist/initDist%s.txt' \ % (cfg.general.resDir, postfix)) # Read transfer operator spectrum from file and create a bi-orthonormal basis # of eigenvectors and adjoint eigenvectors: print 'Readig spectrum of tau = ', tau (eigValForward, eigVecForward, eigValBackward, eigVecBackward) \ = ergoPlot.readSpectrum(cfg.spectrum.nev, EigValForwardFile, EigVecForwardFile, EigValBackwardFile, EigVecBackwardFile, statDist) # Save eigenvalues eigVal[lag] = eigValForward.copy() # Get generator eigenvalues eigValGen[lag] = (np.log(np.abs(eigValForward)) + np.angle(eigValForward)*1j) / tauConv # Get condition number eigenCondition[lag] = ergoPlot.getEigenCondition(eigVecForward, eigVecBackward, statDist) print 'lag ', lag print eigVal[lag] print eigValGen[lag] print eigenCondition[lag] # Smoothen # if lag > 0:
# Read mask if maskFile is not None: if fileFormat == 'bin': mask = np.fromfile(maskFile, np.int32) else: mask = np.loadtxt(maskFile, np.int32) else: mask = np.arange(N) NFilled = np.max(mask[mask < N]) + 1 # Read transfer operator spectrum from file and create a bi-orthonormal basis # of eigenvectors and backward eigenvectors: print 'Readig spectrum for tauDim = %.3f...' % tauDim (eigValForward, eigValBackward, eigVecForward, eigVecBackward) \ = ergoPlot.readSpectrum(eigValForwardFile, eigValBackwardFile, eigVecForwardFile, eigVecBackwardFile, makeBiorthonormal=~cfg.spectrum.makeBiorthonormal, fileFormat=fileFormat) # Plot eigenvectors of transfer operator alpha = 0.05 os.system('mkdir %s/spectrum/eigvec 2> /dev/null' % cfg.general.plotDir) coordCut = 1 coordPlot = (coordCut + 1) % dimObs cutVal = (coord[coordCut][mask < N] * statDist).sum() idCut0 = np.argmin(np.abs(coord[coordCut] - cutVal)) idCut = np.abs(coord[1] - coord[1][idCut0]) < 1.e-6 xx = coord[coordPlot][idCut] # Figure for the phase figPhase = plt.figure()
% (cfg.general.resDir, gridPostfix) if unfold: tauUnfold = tauDimUnfold * timeScaleConversion postfixUnfold = "%s_tau%03d" % (gridPostfix, tauDimUnfold * 1000) eigValForwardFileUnfold = '%s/eigval/eigvalForward_nev%d%s.txt' \ % (cfg.general.specDir, nev, postfixUnfold) eigVecForwardFileUnfold = '%s/eigvec/eigvecForward_nev%d%s.txt' \ % (cfg.general.specDir, nev, postfixUnfold) tauMax = np.max([tau, tauUnfold]) # Read transfer operator spectrum from file and create a bi-orthonormal basis # of eigenvectors and backward eigenvectors: print 'Readig spectrum for tauDim = %.3f...' % tauDim (eigValForward, eigValBackward, statDist, eigVecForward, eigVecBackward) \ = ergoPlot.readSpectrum(eigValForwardFile, eigValBackwardFile, statDistFile, eigVecForwardFile, eigVecBackwardFile, makeBiorthonormal=~cfg.spectrum.makeBiorthonormal) print 'Getting conditionning of eigenvectors...' eigenCondition = ergoPlot.getEigenCondition(eigVecForward, eigVecBackward, statDist) eigValGenOrig = ergoPlot.eig2Generator(eigValForward, tau) # Read unfolding eigenvalues #eigValForwardUnfold = None st = statDist.copy() st2 = np.concatenate((st, st)) if unfold: print 'Readig spectrum for tauDimUnfold = %.3f to unfold...' % tauDimUnfold (eigValForwardUnfold,) \
eigValForwardFile = '%s/eigval/eigvalForward_nev%d%s.txt' \ % (cfg.general.specDir, cfg.spectrum.nev, postfix) eigVecForwardFile = '%s/eigvec/eigvecForward_nev%d%s.txt' \ % (cfg.general.specDir, cfg.spectrum.nev, postfix) eigValBackwardFile = '%s/eigval/eigvalBackward_nev%d%s.txt' \ % (cfg.general.specDir, cfg.spectrum.nev, postfix) eigVecBackwardFile = '%s/eigvec/eigvecBackward_nev%d%s.txt' \ % (cfg.general.specDir, cfg.spectrum.nev, postfix) statDistFile = '%s/transfer/initDist/initDist%s.txt' % (cfg.general.resDir, gridPostfix) # Read transfer operator spectrum from file and create a bi-orthonormal basis # of eigenvectors and backward eigenvectors: print 'Readig spectrum for tau = %.3f...' % tau (eigValForward, eigValBackward, statDist, eigVecForward, eigVecBackward) \ = ergoPlot.readSpectrum(eigValForwardFile, eigValBackwardFile, statDistFile, eigVecForwardFile, eigVecBackwardFile, makeBiorthonormal=~cfg.spectrum.makeBiorthonormal) print 'Getting conditionning of eigenvectors...' eigenCondition = ergoPlot.getEigenCondition(eigVecForward, eigVecBackward, statDist) # Get generator eigenvalues eigValGen = (np.log(np.abs(eigValForward)) + np.angle(eigValForward)*1j) / tau # Plot eigenvectors of transfer operator alpha = 0.01 for ev in np.arange(nevPlot): print 'Plotting real part of eigenvector %d...' % (ev + 1,) #ergoPlot.plot2D(X, Y, eigVecForward[:, ev].real, ev_xlabel, ev_ylabel, alpha) ergoPlot.plot2D(X, Y, eigVecForward[:, ev].real, ev_xlabel, ev_ylabel, alpha)