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
« prev ^ index » next coverage.py v6.5.0, created at 2023-10-25 10:12 +0000
1import logging
3from pyrocko.guts import Object
4from grond.meta import GrondError, has_get_plot_classes
6guts_prefix = 'grond'
8logger = logging.getLogger('grond.optimisers.base')
11class BadProblem(GrondError):
12 pass
15@has_get_plot_classes
16class Optimiser(Object):
18 def __init__(self, **kwargs):
19 Object.__init__(self, **kwargs)
20 self.iiter = 0
21 self._nthreads = 1
23 def set_nthreads(self, nthreads):
24 logger.debug('Setting nthreads to %d', nthreads)
25 self._nthreads = nthreads
27 def optimise(self, problem):
28 raise NotImplementedError
30 @property
31 def niterations(self):
32 raise NotImplementedError
34 def get_status(self, history):
35 pass
37 def init_bootstraps(self, problem):
38 raise NotImplementedError
40 @classmethod
41 def get_plot_classes(cls):
42 from . import plot
43 return plot.get_plot_classes()
46class OptimiserConfig(Object):
47 pass
50class OptimiserStatus(object):
51 __slots__ = ['row_names', 'column_data', 'extra_header', 'extra_footer']
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
60 @property
61 def column_names(self):
62 return self.column_data.keys()
64 @property
65 def ncolumns(self):
66 return len(self.column_data)
68 @property
69 def values(self):
70 return self.column_data.values()
73__all__ = '''
74 BadProblem
75 Optimiser
76 OptimiserConfig
77'''.split()