def test_gtr(self): kappa = 6.122449 m = RevDiscStateContTimeModel(state_freq=(0.3, 0.25, 0.2, 0.25), r_upper=[[1.0, kappa, 1.0 ], [ 1.0, kappa ], [ 1.0 ]] ) assert_list_of_mat_eq(self, m.prob_matrices(0.01), [[[0.991443333333, 0.001247, 0.00606333333333, 0.001247, ], [0.0014964, 0.989928, 0.0009976, 0.007576], [0.009095, 0.001247, 0.988415, 0.001247], [0.0014964, 0.007576, 0.0009976, 0.989928]]])
invoc = '%s %s %s >%s 2>%s' % (os.path.join(d, 'src', 'PhyPatClassProb'), opts, fn, stdo, stde) sys.stderr.write('Creating/Overwriting %s and %s by running:\n %s\n' % (stdo, stde, invoc)) rc = os.system(invoc) if rc != 0: sys.stderr.write('Error! return code = %d\n' % rc) sys.exit(0) ################################################################################ # call beagle in phython ################################################################################ from pytbeaglehon.disc_state_cont_time_model import RevDiscStateContTimeModel m = RevDiscStateContTimeModel(state_freq=state_freq, r_upper=[[rAC, rAG, rAT ], [ rCG, rCT ], [ rGT ]]) p_mat = m.prob_matrices(edge_length) ################################################################################ ################################################################################ # Format output ################################################################################ p_mat_str = [[str(i) for i in row] for row in p_mat[0]] max_str_len = max([max([len(i) for i in row]) for row in p_mat_str]) p_mat_str = [[i.ljust(max_str_len) for i in row] for row in p_mat_str] for row in p_mat_str: print '\t'.join(row) ################################################################################ # Produce optional output
elif arg == '-e': if read_edge_len: sys.exit("Expected only one -e per invocation") curr_list = [] reading_edge_len = True if reading_freq: sys.exit("Expected 3 base frequencies") elif reading_rmat: sys.exit("Expected 5 relative rate parameters") elif reading_edge_len: sys.exit("Expected an edge length parameter") # Arguments have been parsed. Do the calculation... model = RevDiscStateContTimeModel(state_freq=freq, r_upper=r_mat) mat = model.calc_prob_matrices(edge_length)[0] # returns a list of matrices, but we are not # using rate het, so we just want # the first. # format the output max_len = 0 mat_str = [list(' ACGT')] for from_base, mat_row in izip('ACGT', mat): mat_str_row = [from_base] for cell in mat_row: s = str(cell) if len(s) > max_len: max_len = len(s)