Coverage for /home/deng/Projects/metatree_drawer/treeprofiler_algo/pastml/pastml/models/JCModel.py: 57%
14 statements
« prev ^ index » next coverage.py v7.2.7, created at 2024-03-21 09:19 +0100
« prev ^ index » next coverage.py v7.2.7, created at 2024-03-21 09:19 +0100
1import numpy as np
3from pastml.models import Model
4from pastml.models.F81Model import F81Model
6JC = 'JC'
9class JCModel(F81Model):
11 def __init__(self, states, forest_stats, sf=None, tau=0, optimise_tau=False, parameter_file=None, reoptimise=False, **kwargs):
12 kwargs['frequency_smoothing'] = False
13 F81Model.__init__(self, states=states, forest_stats=forest_stats, sf=sf, tau=tau, optimise_tau=optimise_tau,
14 frequencies=np.ones(len(states), dtype=np.float64) / len(states),
15 reoptimise=reoptimise, parameter_file=parameter_file, **kwargs)
16 self._optimise_frequencies = False
17 self.name = JC
19 def _print_parameters(self):
20 """
21 Constructs a string representing parameter values (to be used to logging).
23 :return: str representing parameter values
24 """
25 return '{}' \
26 '\tfrequencies\tall equal to {:g}\t(fixed)\n'.format(Model._print_parameters(self), 1 / len(self.states))
28 def parse_parameters(self, params, reoptimise=False):
29 """
30 Update this model's values from the input parameters.
31 JC model can only have the basic parameters (scaling factor and smoothing factor, see pastml.models.Model).
33 :param params: dict {key->value}
34 :param reoptimise: whether these model parameters should be treated as starting values (True)
35 or as fixed values (False)
36 :return: dict with parameter values (same as input)
37 """
38 # This model sets equal frequencies
39 # and hence should only read the basic parameters (scaling and smoothing factors) from the input file
40 return Model.parse_parameters(self, params, reoptimise)