Home | Trees | Indices | Help |
|
---|
|
1 # emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*- 2 # vi: set ft=python sts=4 ts=4 sw=4 et: 3 ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## 4 # 5 # See COPYING file distributed along with the PyMVPA package for the 6 # copyright and license terms. 7 # 8 ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ## 9 """Dataset with applied mask""" 10 11 __docformat__ = 'restructuredtext' 12 13 import numpy as N 14 15 from mvpa.datasets.mapped import MappedDataset 16 from mvpa.mappers.array import DenseArrayMapper 17 18 if __debug__: 19 from mvpa.base import debug 2022 """Helper class which is `MappedDataset` with using `MaskMapper`. 23 24 TODO: since what it does is simply some checkes/data_mangling in the 25 constructor, it might be absorbed inside generic `MappedDataset` 26 27 """ 288630 """ 31 :Parameters: 32 mask: ndarray 33 the chosen features equal the non-zero mask elements. 34 """ 35 # might contain the default mapper 36 mapper = None 37 38 # need if clause here as N.array(None) != None 39 if not samples is None: 40 # XXX should be asanyarray? but then smth segfaults on unittests 41 samples = N.asarray(samples) 42 mapper = DenseArrayMapper(mask=mask, 43 shape=samples.shape[1:]) 44 45 if not mapper is None: 46 if samples is None: 47 raise ValueError, \ 48 "Constructor of MaskedDataset requires both a samples " \ 49 "array and a mask if one of both is provided." 50 # init base class -- MappedDataset takes care of all the forward 51 # mapping stuff 52 MappedDataset.__init__( 53 self, 54 samples=samples, 55 mapper=mapper, 56 **(kwargs)) 57 else: 58 MappedDataset.__init__(self, **(kwargs))59 6062 """Use a mask array to select features from the current set. 63 64 :Parameters: 65 mask : ndarray 66 input mask 67 plain : bool 68 `True` directs to return a simple `Dataset`, 69 `False` -- a new `MaskedDataset` object 70 71 Returns a new MaskedDataset object with a view of the original pattern 72 array (no copying is performed). 73 The final selection mask only contains features that are present in the 74 current feature mask AND the selection mask passed to this method. 75 """ 76 # AND new and old mask to get the common features 77 comb_mask = N.logical_and(mask != 0, 78 self.mapper.getMask(copy=False) != 0) 79 if __debug__: 80 debug('DS', "VERY SUBOPTIMAL - do not rely on performance") 81 # transform mask into feature space 82 fmask = self.mapper.forward( comb_mask != 0 ) 83 #TODO all this will be gone soon anyway -- need proper selectIn within 84 # a mapper 85 return self.selectFeatures(fmask.nonzero()[0], plain=plain)
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Mon Apr 23 23:09:51 2012 | http://epydoc.sourceforge.net |