Beispiel #1
0
    def test_select_merge_components_random_raisesError(self):
        ''' Verify that when comp 0 is excluded with K=3
          we cannot provide comp 0 as kA, [error is raised]
          AND
          in free choice, we only choose kA=1, kB=2
    '''
        MT = MergeTracker(3)
        MSelector = MergePairSelector()

        MT.excludeList = set([0])
        MT._synchronize_and_verify()
        for trial in range(10):
            kA, kB = MSelector.select_merge_components(None,
                                                       None,
                                                       MT,
                                                       kA=1,
                                                       mergename='random')
            assert kA == 1
            assert kB == 2
        for trial in range(10):
            kA, kB = MSelector.select_merge_components(None,
                                                       None,
                                                       MT,
                                                       kA=2,
                                                       mergename='random')
            assert kA == 1
            assert kB == 2
        with self.assertRaises(AssertionError):
            kA, kB = MSelector.select_merge_components(None,
                                                       None,
                                                       MT,
                                                       mergename='random',
                                                       kA=0)
Beispiel #2
0
    def test_select_merge_components_random_raisesErrorAllButOneExcluded(self):
        ''' Verify that when comps 0,1 are excluded with K=3
          we cannot provide comp 2 as kA, [error is raised]
    '''
        MT = MergeTracker(3)
        MSelector = MergePairSelector()

        MT.excludeList = set([1, 0])
        MT._synchronize_and_verify()
        with self.assertRaises(AssertionError):
            kA, kB = MSelector.select_merge_components(None,
                                                       None,
                                                       MT,
                                                       mergename='random',
                                                       kA=2)
Beispiel #3
0
    def test_reindexAfterMerge(self):
        MSelector = MergePairSelector()
        MSelector.MScores[0] = 5
        MSelector.MScores[3] = 5
        MSelector.MScores[4] = 5
        MSelector.PairMScores[(0, 1)] = 5
        MSelector.PairMScores[(3, 4)] = 5
        MSelector.PairMScores[(5, 6)] = 5

        MSelector.reindexAfterMerge(2, 3)

        assert MSelector.MScores[0] == 5
        assert MSelector.MScores[3] == 5
        assert 2 not in MSelector.MScores

        assert len(MSelector.PairMScores.keys()) == 2
        assert (0, 1) in MSelector.PairMScores
        assert (4, 5) in MSelector.PairMScores
        assert (2, 3) not in MSelector.PairMScores
Beispiel #4
0
 def test_select_merge_components_random(self):
     ''' Verify that under random choices, we select among 3 components
       equally often
 '''
     MT = MergeTracker(3)
     MSelector = MergePairSelector()
     counts = np.zeros(3)
     for trial in range(1000):
         kA, kB = MSelector.select_merge_components(None,
                                                    None,
                                                    MT,
                                                    mergename='random')
         counts[kA] += 1
         counts[kB] += 1
     counts /= np.sum(counts)
     minFrac = 0.25
     maxFrac = 0.4
     # Uniform at random means fraction of choice should be ~1/3 for each
     assert np.all(counts > minFrac)
     assert np.all(counts < maxFrac)