Coverage for /home/deng/Projects/metatree_drawer/treeprofiler_algo/pastml/pastml/models/EFTModel.py: 54%

13 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2024-03-21 09:19 +0100

1from pastml.models import Model 

2from pastml.models.F81Model import F81Model 

3 

4EFT = 'EFT' 

5 

6 

7class EFTModel(F81Model): 

8 

9 def __init__(self, states, forest_stats, observed_frequencies, sf=None, 

10 tau=0, optimise_tau=False, parameter_file=None, reoptimise=False, **kwargs): 

11 F81Model.__init__(self, states=states, forest_stats=forest_stats, sf=sf, tau=tau, 

12 optimise_tau=optimise_tau, frequencies=observed_frequencies, 

13 reoptimise=reoptimise, parameter_file=parameter_file, **kwargs) 

14 self._optimise_frequencies = False 

15 self._frequency_smoothing = False 

16 self.name = EFT 

17 

18 def _print_parameters(self): 

19 """ 

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

21 

22 :return: str representing parameter values 

23 """ 

24 return '{}' \ 

25 '\tfrequencies:\tobserved in the tree\t(fixed)\n'.format(Model._print_parameters(self)) 

26 

27 def parse_parameters(self, params, reoptimise=False): 

28 """ 

29 Update this model's values from the input parameters. 

30 EFT model can only have the basic parameters (scaling factor and smoothing factor, see pastml.models.Model), 

31 as its frequencies are set to observed values. 

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 frequencies from the observed values 

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)