def testApplyMapper(self): """Test creation of new dataset by applying a mapper""" mapper = MaskMapper(N.array([1, 0, 1])) dataset = Dataset(samples=N.arange(12).reshape((4, 3)), labels=1, chunks=1) seldataset = dataset.applyMapper(featuresmapper=mapper) self.failUnless((dataset.selectFeatures([0, 2]).samples == seldataset.samples).all()) # Lets do simple test on maskmapper reverse since it seems to # do evil things. Those checks are done only in __debug__ if __debug__: # should fail since in mask we have just 2 features now self.failUnlessRaises(ValueError, mapper.reverse, [10, 20, 30]) self.failUnlessRaises(ValueError, mapper.forward, [10, 20])
def testSimple(self): data = N.arange(24).reshape(8,3) labels = [0, 1] * 4 chunks = N.repeat(N.array((0,1)),4) # correct results csamples = [[3, 4, 5], [6, 7, 8], [15, 16, 17], [18, 19, 20]] clabels = [0, 1, 0, 1] cchunks = [0, 0, 1, 1] ds = Dataset(samples=data, labels=labels, chunks=chunks) # default behavior m = SampleGroupMapper() # error if not trained self.failUnlessRaises(RuntimeError, m, data) # train mapper first m.train(ds) self.failUnless((m.forward(ds.samples) == csamples).all()) self.failUnless((m.forward(ds.labels) == clabels).all()) self.failUnless((m.forward(ds.chunks) == cchunks).all()) # directly apply to dataset # using untrained mapper! mapped = ds.applyMapper(samplesmapper=SampleGroupMapper()) self.failUnless(mapped.nsamples == 4) self.failUnless(mapped.nfeatures == 3) self.failUnless((mapped.samples == csamples).all()) self.failUnless((mapped.labels == clabels).all()) self.failUnless((mapped.chunks == cchunks).all()) # make sure origids get regenerated self.failUnless((mapped.origids == range(4)).all())