#!/usr/bin/python import sys import numpy as np import matrixFunctions2d from scipy.linalg import expm, logm matrix = matrixFunctions2d.read2dMatrix(sys.argv[1]) Norm = matrixFunctions2d.normalize2dMatrix(matrix, 0) logd = logm(Norm) #mat = expm(matrix) #matrixFunctions2d.printDetailedBalanceftxt(mat, "quickout.txt") matrixFunctions2d.printDetailedBalanceftxt( logd, "detailedBalance_%s.dat" % sys.argv[1]) #matrixFunctions2d.printDetailedBalanceftxt(matrix, "quickout.txt")
import sys import math import EMHelper def gammaFunction(R, N, alpha=1, beta=1): beta += R beta = 1 / beta alpha += N return np.random.gamma(alpha, beta, 1) ##################initialize sampling #read in distribution to match fname = sys.argv[1] MATRIX = matrixFunctions2d.read2dMatrix(fname) distribution = matrixFunctions2d.normalize2dMatrix(MATRIX, 0) #normalize along rows n = MATRIX.shape[0] #make random initial generator matrix Q = np.zeros_like(MATRIX) #generate alpha matrix using an EM, set alpha[i,j] = 1 if EM[i,j]>1e-14 else alpha[i,j]=0 #code from expectationMaximization.py logd = logm(distribution) diag = matrixFunctions2d.diagonalAdjustment2d(logd) epsilon = 0.0001 i = 0 maxIters = 200 exit = 0 maxiters = 200