Пример #1
0
 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)
Пример #3
0
    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)
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
 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')
Пример #12
0
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')
Пример #14
0
    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)