def setUp(self): self.standardcode = substitution_model.Codon(model_gaps=True, gc=1, mprob_model='tuple') self.mitocode = substitution_model.Codon(model_gaps=False, gc=2, mprob_model='tuple')
def test_binned_partition(self): submod = substitution_model.Codon( predicates={'kappa': 'transition', 'omega': 'replacement'}, ordered_param='rate', partitioned_params='omega', distribution='free', mprob_model='tuple') lf = self._makeLikelihoodFunction(submod, bins=3) values = list(lf.getParamValueDict(['bin'])['omega_factor'].values()) self.assertEqual(round(sum(values) / len(values), 6), 1.0) self.assertEqual(len(values), 3)
def test_scaling(self): """Testing scaling calculations using Dn and Ds as an example.""" model = substitution_model.Codon( do_scaling=True, model_gaps=False, recode_gaps=True, predicates = { 'k': trans, 'r': replacement}, motif_probs={ 'TAT': 0.0088813702685557206, 'TGT': 0.020511736096426307, 'TCT': 0.024529498836963416, 'TTT': 0.019454430112074435, 'TGC': 0.0010573059843518714, 'TGG': 0.0042292239374074857, 'TAC': 0.002326073165574117, 'TTC': 0.0086699090716853451, 'TCG': 0.0010573059843518714, 'TTA': 0.020723197293296681, 'TTG': 0.01036159864664834, 'TCC': 0.0082469866779445976, 'TCA': 0.022414886868259674, 'GCA': 0.015648128568407697, 'GTA': 0.014590822584055826, 'GCC': 0.0095157538591668436, 'GTC': 0.0063438359061112285, 'GCG': 0.0016916895749629942, 'GTG': 0.0067667582998519769, 'CAA': 0.018185662930852189, 'GTT': 0.021569042080778176, 'GCT': 0.014167900190315077, 'ACC': 0.0042292239374074857, 'GGT': 0.014167900190315077, 'CGA': 0.0012687671812222456, 'CGC': 0.0010573059843518714, 'GAT': 0.030238951152463524, 'AAG': 0.034891097483611758, 'CGG': 0.002326073165574117, 'ACT': 0.028758722774370905, 'GGG': 0.0071896806935927262, 'GGA': 0.016282512159018821, 'GGC': 0.0090928314654260944, 'GAG': 0.031296257136815393, 'AAA': 0.05476844998942694, 'GAC': 0.011207443434129837, 'CGT': 0.0033833791499259885, 'GAA': 0.076337492070205112, 'CTT': 0.010573059843518714, 'ATG': 0.012687671812222457, 'ACA': 0.021991964474518927, 'ACG': 0.00084584478748149711, 'ATC': 0.0076126030873334746, 'AAC': 0.022837809262000422, 'ATA': 0.017762740537111441, 'AGG': 0.013533516599703954, 'CCT': 0.025586804821315288, 'AGC': 0.029393106364982026, 'AGA': 0.021991964474518927, 'CAT': 0.021357580883907802, 'AAT': 0.05772890674561218, 'ATT': 0.019031507718333687, 'CTG': 0.012899133009092831, 'CTA': 0.013744977796574329, 'CTC': 0.0078240642842038483, 'CAC': 0.0050750687248889825, 'CCG': 0.00021146119687037428, 'AGT': 0.03742863184605625, 'CAG': 0.024106576443222668, 'CCA': 0.021357580883907802, 'CCC': 0.0069782194967223515}, scales = {'dN': replacement, 'dS': ~replacement}, mprob_model = 'tuple', ) length = 0.1115 a = self._getScaledLengths(model, {'k': 3.6491, 'r': 0.6317, 'length': length}) b = self._getScaledLengths(model, {'k': 3.6491, 'r': 1.0, 'length': length}) dN = length * a['dN'] / (3.0 * b['dN']) dS = length * a['dS'] / (3.0 * b['dS']) # following are results from PAML self.assertEqual('%.4f' % dN, '0.0325') self.assertEqual('%.4f' % dS ,'0.0514')
def test_complex_binned_partition(self): submod = substitution_model.Codon( predicates={'kappa': 'transition', 'omega': 'replacement'}, ordered_param='kappa', partitioned_params=['omega'], mprob_model='tuple') lf = self._makeLikelihoodFunction(submod, bins=['slow', 'fast']) lf.setParamRule('kappa', value=1.0, is_constant=True) lf.setParamRule('kappa', edge="Human", init=1.0, is_constant=False) values = list(lf.getParamValueDict(['bin'])['kappa_factor'].values()) self.assertEqual(round(sum(values) / len(values), 6), 1.0) self.assertEqual(len(values), 2)
def test_codon(self): """test a three taxa codon model.""" submod = substitution_model.Codon( equal_motif_probs=True, do_scaling=False, motif_probs=None, predicates={'kappa': 'transition', 'omega': 'replacement'}, mprob_model='tuple') likelihood_function = self._makeLikelihoodFunction(submod) likelihood_function.setParamRule('omega', value=0.5, is_constant=True) evolve_lnL = likelihood_function.getLogLikelihood() self.assertFloatEqual(evolve_lnL, -80.67069614541883)
def MG94HKY(**kw): """Muse and Gaut 1994 codon substitution model, HKY variant (with kappa, the ratio of transitions to transversions) see, Muse and Gaut, 1994, Mol Biol Evol, 11, 715-24""" return substitution_model.Codon( motif_probs = None, do_scaling = True, model_gaps = False, recode_gaps = True, name = 'MG94', predicates = [_kappa, _omega], mprob_model='monomer', **kw)
def CNFHKY(**kw): """Conditional nucleotide frequency codon substitution model, HKY variant (with kappa, the ratio of transitions to transversions) See Yap, Lindsay, Easteal and Huttley, Mol Biol Evol, In press.""" return substitution_model.Codon( motif_probs = None, do_scaling = True, model_gaps = False, recode_gaps = True, name = 'CNFHKY', predicates = [_kappa, _omega], mprob_model='conditional', **kw)
def CNFGTR(**kw): """Conditional nucleotide frequency codon substitution model, GTR variant (with params analagous to the nucleotide GTR model). See Yap, Lindsay, Easteal and Huttley, Mol Biol Evol, In press.""" return substitution_model.Codon( motif_probs = None, do_scaling = True, model_gaps = False, recode_gaps = True, name = 'CNFGTR', predicates = _gtr_preds+[_omega], mprob_model='conditional', **kw)
def H04GGK(**kw): """Huttley 2004 CpG substitution model. Includes a general term for substitutions to or from CpG's and an adjustment for CpG transitions. see, GA Huttley. Mol Biol Evol, 21(9):1760-8""" return substitution_model.Codon( motif_probs = None, do_scaling = True, model_gaps = False, recode_gaps = True, name = 'H04GGK', predicates = [_cg, _cg_k, _kappa, _omega], mprob_model = 'tuple', **kw)
def MG94GTR(**kw): """Muse and Gaut 1994 codon substitution model, GTR variant (with params analagous to the nucleotide GTR model) see, Muse and Gaut, 1994, Mol Biol Evol, 11, 715-24""" return substitution_model.Codon( motif_probs = None, do_scaling = True, model_gaps = False, recode_gaps = True, name = 'MG94', predicates = _gtr_preds+[_omega], mprob_model='monomer', **kw)
def test_binned_gamma_ordered_param(self): """rate is gamma distributed omega follows""" submod = substitution_model.Codon(predicates={ 'kappa': 'transition', 'omega': 'replacement' }, ordered_param='rate', partitioned_params='omega', distribution='gamma', mprob_model='tuple') lf = self._makeLikelihoodFunction(submod, self.alignment, bins=3) values = lf.getParamValueDict(['bin'])['omega_factor'].values() self.assertEqual(round(sum(values) / len(values), 6), 1.0) self.assertEqual(len(values), 3) shape = lf.getParamValue('rate_shape')
def Y98(**kw): """Yang's 1998 substitution model, a derivative of the GY94. see Z Yang. Mol. Biol. Evol., 15(5):568-73, 1998""" return substitution_model.Codon( motif_probs = None, do_scaling = True, model_gaps = False, recode_gaps = True, name = 'Y98', predicates = { 'kappa' : 'transition', 'omega' : 'replacement', }, mprob_model = 'tuple', **kw)
def test_binned_gamma(self): """just rate is gamma distributed""" submod = substitution_model.Codon( predicates={'kappa': 'transition', 'omega': 'replacement'}, ordered_param='rate', distribution='gamma', mprob_model='tuple') lf = self._makeLikelihoodFunction(submod, bins=3) try: values = list(lf.getParamValueDict(['bin'])['omega_factor'].values()) except KeyError: # there shouldn't be an omega factor pass values = list(lf.getParamValueDict(['bin'])['rate'].values()) obs = round(sum(values) / len(values), 6) self.assertEqual(obs, 1.0) self.assertEqual(len(values), 3) shape = lf.getParamValue('rate_shape')
def test_codon(self): """test a three taxa codon model.""" submod = substitution_model.Codon(equal_motif_probs=True, do_scaling=False, motif_probs=None, predicates={ 'kappa': 'transition', 'omega': 'replacement' }, mprob_model='tuple') self.par_values.update({'omega': 0.5}) likelihood_function = self._makeLikelihoodFunction( submod, self.alignment) for par, val in self.par_values.items(): likelihood_function.setpar(par, val) likelihood_function.setpar("length", self.length) evolve_lnL = likelihood_function.testfunction() self.assertFloatEqual(evolve_lnL, -80.67069614541883)