Module asymmetree.file_io.SubstModelIO
Expand source code
# -*- coding: utf-8 -*-
__author__ = 'David Schaller'
def parse_paml(filename, model_type='a'):
if model_type == 'a':
N = 20
elif model_type == 'n':
N = 4
else:
raise ValueError("model type '{}' not supported".format(model_type))
with open(filename, 'r') as f:
exchangeability_matrix = [[0.0 for j in range(N)] for i in range(N)]
line = f.readline().strip()
while line == '': line = f.readline().strip()
for i in range(1,N):
line = [float(item) for item in line.split()]
for j in range(len(line)):
exchangeability_matrix[i][j] = line[j]
exchangeability_matrix[j][i] = line[j]
line = f.readline().strip()
line = f.readline().strip()
while line == '': line = f.readline().strip()
stat_freqs = [float(item) for item in line.split()]
if len(stat_freqs) != N:
raise RuntimeError('wrong no. of equilibrium frequencies, '\
'check paml file')
return exchangeability_matrix, stat_freqs
Functions
def parse_paml(filename, model_type='a')-
Expand source code
def parse_paml(filename, model_type='a'): if model_type == 'a': N = 20 elif model_type == 'n': N = 4 else: raise ValueError("model type '{}' not supported".format(model_type)) with open(filename, 'r') as f: exchangeability_matrix = [[0.0 for j in range(N)] for i in range(N)] line = f.readline().strip() while line == '': line = f.readline().strip() for i in range(1,N): line = [float(item) for item in line.split()] for j in range(len(line)): exchangeability_matrix[i][j] = line[j] exchangeability_matrix[j][i] = line[j] line = f.readline().strip() line = f.readline().strip() while line == '': line = f.readline().strip() stat_freqs = [float(item) for item in line.split()] if len(stat_freqs) != N: raise RuntimeError('wrong no. of equilibrium frequencies, '\ 'check paml file') return exchangeability_matrix, stat_freqs