Coverage for /usr/local/lib/python3.11/dist-packages/grond/optimisers/base.py: 92%

48 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2023-10-25 10:12 +0000

1import logging 

2 

3from pyrocko.guts import Object 

4from grond.meta import GrondError, has_get_plot_classes 

5 

6guts_prefix = 'grond' 

7 

8logger = logging.getLogger('grond.optimisers.base') 

9 

10 

11class BadProblem(GrondError): 

12 pass 

13 

14 

15@has_get_plot_classes 

16class Optimiser(Object): 

17 

18 def __init__(self, **kwargs): 

19 Object.__init__(self, **kwargs) 

20 self.iiter = 0 

21 self._nthreads = 1 

22 

23 def set_nthreads(self, nthreads): 

24 logger.debug('Setting nthreads to %d', nthreads) 

25 self._nthreads = nthreads 

26 

27 def optimise(self, problem): 

28 raise NotImplementedError 

29 

30 @property 

31 def niterations(self): 

32 raise NotImplementedError 

33 

34 def get_status(self, history): 

35 pass 

36 

37 def init_bootstraps(self, problem): 

38 raise NotImplementedError 

39 

40 @classmethod 

41 def get_plot_classes(cls): 

42 from . import plot 

43 return plot.get_plot_classes() 

44 

45 

46class OptimiserConfig(Object): 

47 pass 

48 

49 

50class OptimiserStatus(object): 

51 __slots__ = ['row_names', 'column_data', 'extra_header', 'extra_footer'] 

52 

53 def __init__(self, row_names, column_data, 

54 extra_header=None, extra_footer=None): 

55 self.row_names = row_names 

56 self.column_data = column_data 

57 self.extra_header = extra_header 

58 self.extra_footer = extra_footer 

59 

60 @property 

61 def column_names(self): 

62 return self.column_data.keys() 

63 

64 @property 

65 def ncolumns(self): 

66 return len(self.column_data) 

67 

68 @property 

69 def values(self): 

70 return self.column_data.values() 

71 

72 

73__all__ = ''' 

74 BadProblem 

75 Optimiser 

76 OptimiserConfig 

77'''.split()