def create_gtr(params): """ parse the arguments referring to the GTR model and return a GTR structure """ model = params.gtr gtr_params = params.gtr_params if model == 'infer': gtr = GTR.standard('jc', alphabet='aa' if params.aa else 'nuc') else: try: kwargs = {} if gtr_params is not None: for param in gtr_params: keyval = param.split('=') if len(keyval)!=2: continue if keyval[0] in ['pis', 'pi', 'Pi', 'Pis']: keyval[0] = 'pi' keyval[1] = list(map(float, keyval[1].split(','))) elif keyval[0] not in ['alphabet']: keyval[1] = float(keyval[1]) kwargs[keyval[0]] = keyval[1] else: print ("GTR params are not specified. Creating GTR model with default parameters") gtr = GTR.standard(model, **kwargs) infer_gtr = False except KeyError as e: print("\nUNKNOWN SUBSTITUTION MODEL\n") raise e return gtr
def create_gtr(params): """ parse the arguments referring to the GTR model and return a GTR structure """ model = params.gtr gtr_params = params.gtr_params if model == 'infer': gtr = GTR.standard('jc', alphabet='aa' if params.aa else 'nuc') else: try: kwargs = {} if gtr_params is not None: for param in gtr_params: keyval = param.split('=') if len(keyval)!=2: continue if keyval[0] in ['pis', 'pi', 'Pi', 'Pis']: keyval[0] = 'pi' keyval[1] = list(map(float, keyval[1].split(','))) elif keyval[0] not in ['alphabet']: keyval[1] = float(keyval[1]) kwargs[keyval[0]] = keyval[1] else: print ("GTR params are not specified. Creating GTR model with default parameters") gtr = GTR.standard(model, **kwargs) infer_gtr = False except: print ("Could not create GTR model from input arguments. Using default (Jukes-Cantor 1969)") gtr = GTR.standard('jc', alphabet='aa' if params.aa else 'nuc') infer_gtr = False return gtr
def create_gtr(params): """ parse the arguments referring to the GTR model and return a GTR structure """ model = params.gtr gtr_params = params.gtr_params if model == 'infer': gtr = GTR.standard('jc') else: try: kwargs = {} if gtr_params is not None: for param in gtr_params: keyval = param.split('=') if len(keyval) != 2: continue if keyval[0] in ['pis', 'pi', 'Pi', 'Pis']: keyval[0] = 'pi' keyval[1] = list(map(float, keyval[1].split(','))) elif keyval[0] not in ['alphabet']: keyval[1] = float(keyval[1]) kwargs[keyval[0]] = keyval[1] else: print( "GTR params are not specified. Creating GTR model with default parameters" ) gtr = GTR.standard(model, **kwargs) infer_gtr = False except: print( "Could not create GTR model from input arguments. Using default (Jukes-Cantor 1969)" ) gtr = GTR.standard('jc') infer_gtr = False return gtr
def test_GTR(): from treetime import GTR import numpy as np for model in ['Jukes-Cantor']: print('testing GTR, model:',model) myGTR = GTR.standard(model, alphabet='nuc') print('Frequency sum:', myGTR.Pi.sum()) assert (myGTR.Pi.sum() - 1.0)**2<1e-14 # the matrix is the rate matrix assert abs(myGTR.Q.sum(0)).sum() < 1e-14 # eigendecomposition is made correctly n_states = myGTR.v.shape[0] assert abs((myGTR.v.dot(myGTR.v_inv) - np.identity(n_states)).sum() < 1e-10) assert np.abs(myGTR.v.sum()) > 1e-10 # **and** v is not zero
def test_GTR(): from treetime import GTR import numpy as np for model in ['Jukes-Cantor', 'random']: print('testing GTR, model:',model) myGTR = GTR.standard(model, alphabet='nuc') print('Frequency sum:', myGTR.Pi.sum()) assert (myGTR.Pi.sum() - 1.0)**2<1e-14 # the matrix is the rate matrix assert abs(myGTR.Q.sum(0)).sum() < 1e-14 # eigendecomposition is made correctly n_states = myGTR.v.shape[0] assert abs((myGTR.v.dot(myGTR.v_inv) - np.identity(n_states)).sum() < 1e-10) assert np.abs(myGTR.v.sum()) > 1e-10 # **and** v is not zero
if params.tree is None: from treetime.utils import tree_inference params.tree = os.path.basename(params.aln) + '.nwk' print("No tree given: inferring tree") tmp_dir = 'homoplasy_scanner_tmp_files' tree_inference(params.aln, params.tree, tmp_dir=tmp_dir) if os.path.isdir(tmp_dir): shutil.rmtree(tmp_dir) ########################################################################### ### GTR SET-UP ########################################################################### model = params.gtr gtr_params = params.gtr_params if model == 'infer': gtr = GTR.standard('jc') infer_gtr = True else: infer_gtr = False try: kwargs = {} if gtr_params is not None: for param in gtr_params: keyval = param.split('=') if len(keyval) != 2: continue if keyval[0] in ['pis', 'pi', 'Pi', 'Pis']: keyval[1] = map(float, keyval[1].split(',')) elif keyval[0] not in ['alphabet']: keyval[1] = float(keyval[1]) kwargs[keyval[0]] = keyval[1] else: