1"""
2
3Base-classes for reconstruction models and reconstruction fits.
4
5All the models in the reconst module follow the same template: a Model object
6is used to represent the abstract properties of the model, that are independent
7of the specifics of the data . These properties are reused whenver fitting a
8particular set of data (different voxels, for example).
9
10
11"""
12
13
14class ReconstModel(object):
15    """ Abstract class for signal reconstruction models
16    """
17
18    def __init__(self, gtab):
19        """Initialization of the abstract class for signal reconstruction models
20
21        Parameters
22        ----------
23        gtab : GradientTable class instance
24
25        """
26        self.gtab = gtab
27
28    def fit(self, data, mask=None, **kwargs):
29        return ReconstFit(self, data)
30
31
32class ReconstFit(object):
33    """ Abstract class which holds the fit result of ReconstModel
34
35    For example that could be holding FA or GFA etc.
36    """
37
38    def __init__(self, model, data):
39        self.model = model
40        self.data = data
41