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

1import numpy as np 

2 

3from pastml.models import Model 

4from pastml.models.F81Model import F81Model 

5 

6JC = 'JC' 

7 

8 

9class JCModel(F81Model): 

10 

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 

18 

19 def _print_parameters(self): 

20 """ 

21 Constructs a string representing parameter values (to be used to logging). 

22 

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)) 

27 

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). 

32 

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)