def test_random_walk(self): nsamples = 10 weights_hit = np.linspace(10, 1, nsamples) weights_miss = weights_hit.copy() ranks = np.argsort(weights_hit)[::-1] perm = np.arange(nsamples, dtype=np.int) membership = np.ones(nsamples, dtype=INT_DTYPE) # test all combinations of membership # with perfect enrichment (all hits before misses) for i in xrange(1, nsamples): membership[:] = 1 membership[i:] = 0 es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == 1.0) self.assertTrue(es_rank == (i - 1)) self.assertTrue(es_run[es_rank] == 1.0) # test all combinations of membership # with perfect negative enrichment (all misses before hits) for i in xrange(nsamples - 1, 0, -1): membership[:] = 1 membership[:i] = 0 es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == -1.0) self.assertTrue(es_rank == (i - 1)) self.assertTrue(es_run[es_rank] == -1.0)
def test_random_walk(self): nsamples = 10 weights_hit = np.linspace(10, 1, nsamples) weights_miss = weights_hit.copy() ranks = np.argsort(weights_hit)[::-1] perm = np.arange(nsamples, dtype=np.int) membership = np.ones(nsamples, dtype=INT_DTYPE) # test all combinations of membership # with perfect enrichment (all hits before misses) for i in xrange(1,nsamples): membership[:] = 1 membership[i:] = 0 es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == 1.0) self.assertTrue(es_rank == (i-1)) self.assertTrue(es_run[es_rank] == 1.0) # test all combinations of membership # with perfect negative enrichment (all misses before hits) for i in xrange(nsamples-1,0,-1): membership[:] = 1 membership[:i] = 0 es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == -1.0) self.assertTrue(es_rank == (i-1)) self.assertTrue(es_run[es_rank] == -1.0)
def test_random_walk_boundary_cases(self): nsamples = 100 # test all zeros weights_hit = np.zeros(nsamples, dtype=np.float) weights_miss = np.zeros(nsamples, dtype=np.float) membership = np.zeros(nsamples, dtype=INT_DTYPE) ranks = np.argsort(weights_hit)[::-1] perm = np.arange(nsamples, dtype=np.int) es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == 0.0) self.assertTrue(es_rank == 0.0) self.assertTrue(es_run.shape[0] == nsamples) # nonzero weights but empty membership weights_hit = np.linspace(1, 10, nsamples) weights_miss = weights_hit.copy() membership = np.zeros(nsamples, dtype=INT_DTYPE) ranks = np.argsort(weights_hit)[::-1] perm = np.arange(nsamples, dtype=np.int) es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == -1.0) self.assertTrue(es_rank == (nsamples - 1)) self.assertTrue(es_run.shape[0] == nsamples) self.assertTrue(np.all(es_run == -1.0)) # nonzero weights but full membership weights_hit = np.linspace(1, 10, nsamples) weights_miss = weights_hit.copy() membership = np.ones(nsamples, dtype=INT_DTYPE) ranks = np.argsort(weights_hit)[::-1] perm = np.arange(nsamples, dtype=np.int) es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == 1.0) self.assertTrue(es_rank == 0) self.assertTrue(es_run.shape[0] == nsamples) self.assertTrue(np.all(es_run == 1.0))
def test_random_walk_boundary_cases(self): nsamples = 100 # test all zeros weights_hit = np.zeros(nsamples, dtype=np.float) weights_miss = np.zeros(nsamples, dtype=np.float) membership = np.zeros(nsamples, dtype=INT_DTYPE) ranks = np.argsort(weights_hit)[::-1] perm = np.arange(nsamples, dtype=np.int) es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == 0.0) self.assertTrue(es_rank == 0.0) self.assertTrue(es_run.shape[0] == nsamples) # nonzero weights but empty membership weights_hit = np.linspace(1, 10, nsamples) weights_miss = weights_hit.copy() membership = np.zeros(nsamples, dtype=INT_DTYPE) ranks = np.argsort(weights_hit)[::-1] perm = np.arange(nsamples, dtype=np.int) es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == -1.0) self.assertTrue(es_rank == (nsamples-1)) self.assertTrue(es_run.shape[0] == nsamples) self.assertTrue(np.all(es_run == -1.0)) # nonzero weights but full membership weights_hit = np.linspace(1, 10, nsamples) weights_miss = weights_hit.copy() membership = np.ones(nsamples, dtype=INT_DTYPE) ranks = np.argsort(weights_hit)[::-1] perm = np.arange(nsamples, dtype=np.int) es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == 1.0) self.assertTrue(es_rank == 0) self.assertTrue(es_run.shape[0] == nsamples) self.assertTrue(np.all(es_run == 1.0))
def test_random_walk_empty(self): ''' test trying to run random walk with an empty array ''' weights_hit = np.array([], dtype=np.float) weights_miss = np.array([], dtype=np.float) membership = np.empty((0, ), dtype=INT_DTYPE) ranks = np.argsort(weights_hit)[::-1] perm = np.arange(0) es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == 0) self.assertTrue(es_rank == 0) self.assertTrue(np.all(es_run == 0.0))
def test_random_walk_empty(self): ''' test trying to run random walk with an empty array ''' weights_hit = np.array([], dtype=np.float) weights_miss = np.array([], dtype=np.float) membership = np.empty((0,), dtype=INT_DTYPE) ranks = np.argsort(weights_hit)[::-1] perm = np.arange(0) es_val, es_rank, es_run = \ kernel.random_walk(weights_miss, weights_hit, membership, ranks, perm) self.assertTrue(es_val == 0) self.assertTrue(es_rank == 0) self.assertTrue(np.all(es_run == 0.0))