1
2
3
4
5
6
7
8
9 """Data mapper"""
10
11 __docformat__ = 'restructuredtext'
12
13 import numpy as N
14
15 from mvpa.base.dochelpers import enhancedDocString
16 from mvpa.mappers.base import Mapper
17 from mvpa.misc.transformers import FirstAxisMean
18
19 if __debug__:
20 from mvpa.base import debug
21
22
24
25 """Mapper to apply a mapping function to samples of the same type.
26
27 A customimzable function is applied individually to all samples with the
28 same unique label from the same chunk. This mapper is somewhat
29 unconventional since it doesn't preserve number of samples (ie the size of
30 0-th dimension...)
31 """
32
34 """Initialize the PCAMapper
35
36 Parameters:
37 startpoints: A sequence of index value along the first axis of
38 'data'.
39 boxlength: The number of elements after 'startpoint' along the
40 first axis of 'data' to be considered for averaging.
41 offset: The offset between the starting point and the
42 averaging window (boxcar).
43 collision_resolution : string
44 if a sample belonged to multiple output samples, then on reverse,
45 how to resolve the value (choices: 'mean')
46 """
47 Mapper.__init__(self)
48
49 self.__fx = fx
50 self.__uniquechunks = None
51 self.__uniquelabels = None
52 self.__chunks = None
53 self.__labels = None
54 self.__datashape = None
55
56
57 __doc__ = enhancedDocString('SampleGroupMapper', locals(), Mapper)
58
59
60 - def train(self, dataset):
61 """
62 """
63
64 self.__uniquechunks = dataset.uniquechunks
65 self.__uniquelabels = dataset.uniquelabels
66 self.__chunks = dataset.chunks
67 self.__labels = dataset.labels
68 self.__datashape = (dataset.nfeatures, )
69
70
72 """
73 """
74 if self.__datashape is None:
75 raise RuntimeError, \
76 "SampleGroupMapper needs to be trained before it can be used"
77
78 mdata = []
79
80
81 for c in self.__uniquechunks:
82 for l in self.__uniquelabels:
83 mdata.append(self.__fx(data[N.logical_and(self.__labels == l,
84 self.__chunks == c)]))
85
86 return N.array(mdata)
87
88
90 """This is not implemented."""
91 raise NotImplementedError
92
93
95 """Returns the number of original samples which were combined.
96 """
97 return self.__datashape[0]
98
99
101 """Returns the number of output samples.
102 """
103 return self.__datashape[0]
104
105
107 """Just complain for now"""
108 raise NotImplementedError, \
109 "For feature selection use MaskMapper on output of the %s mapper" \
110 % self.__class__.__name__
111