def test_run_many_merge_moves_trueModel_random(self): LP, SS = self.getSuffStatsPrepForMerge(self.hmodel) PRNG = np.random.RandomState(0) mergeKwArgs = dict(mergename='random') a, b, c, MTracker = MergeMove.run_many_merge_moves(self.hmodel, self.Data, SS, nMergeTrials=100, randstate=PRNG, **mergeKwArgs) assert MTracker.nTrial == SS.K * (SS.K-1)/2 assert MTracker.nSuccess == 0
def test_run_many_merge_moves_removes_duplicates(self): ''' Verify run_many_merge_moves method on duplicated model produces a new model with K=Ktrue components (duplicates gone) ''' PRNG = np.random.RandomState(12345) newModel, newSS, ev, MTracker = MergeMove.run_many_merge_moves( self.dupModel, self.Data, self.dupSS, nMergeTrials=6, randstate=PRNG) assert newSS.K == self.SS.K assert newModel.allocModel.K == self.SS.K assert newModel.obsModel.K == self.SS.K
def test_run_many_merge_moves_trueModel_random(self): LP, SS = self.getSuffStatsPrepForMerge(self.hmodel) PRNG = np.random.RandomState(0) mergeKwArgs = dict(mergename='random') a, b, c, MTracker = MergeMove.run_many_merge_moves(self.hmodel, self.Data, SS, nMergeTrials=100, randstate=PRNG, **mergeKwArgs) assert MTracker.nTrial == SS.K * (SS.K - 1) / 2 assert MTracker.nSuccess == 0
def test_run_many_merge_moves_changes_nothing_on_true_model(self): ''' Verify run_many_merge_moves method on true model produces a new model with K=Ktrue components (no merges accepted) ''' PRNG = np.random.RandomState(12345) newModel, newSS, ev, MTracker = MergeMove.run_many_merge_moves( self.hmodel, self.Data, self.SS, nMergeTrials=100, randstate=PRNG) assert newSS.K == self.SS.K assert newModel.allocModel.K == self.SS.K assert newModel.obsModel.K == self.SS.K assert MTracker.nSuccess == 0 K = self.SS.K assert MTracker.nTrial == K * (K - 1) / 2
def test_run_many_merge_moves_dupModel_random(self): self.MakeModelWithDuplicatedComps() LP, SS = self.getSuffStatsPrepForMerge(self.dupModel) PRNG = np.random.RandomState(0) mergeKwArgs = dict(mergename='random') a, b, c, MTracker = MergeMove.run_many_merge_moves(self.dupModel, self.Data, SS, nMergeTrials=100, randstate=PRNG, **mergeKwArgs) assert MTracker.nSuccess == 4 assert (0,4) in MTracker.acceptedOrigIDs assert (1,5) in MTracker.acceptedOrigIDs assert (2,6) in MTracker.acceptedOrigIDs assert (3,7) in MTracker.acceptedOrigIDs
def test_run_many_merge_moves_removes_duplicates(self): ''' Verify run_many_merge_moves method on duplicated model produces a new model with K=Ktrue components (duplicates gone) ''' PRNG = np.random.RandomState(12345) newModel, newSS, ev, MTracker = MergeMove.run_many_merge_moves( self.dupModel, self.Data, self.dupSS, nMergeTrials=6, randstate=PRNG) assert newSS.K == self.SS.K assert newModel.allocModel.K == self.SS.K assert newModel.obsModel.K == self.SS.K
def test_run_many_merge_moves_changes_nothing_on_true_model(self): ''' Verify run_many_merge_moves method on true model produces a new model with K=Ktrue components (no merges accepted) ''' PRNG = np.random.RandomState(12345) newModel, newSS, ev, MTracker = MergeMove.run_many_merge_moves( self.hmodel, self.Data, self.SS, nMergeTrials=100, randstate=PRNG) assert newSS.K == self.SS.K assert newModel.allocModel.K == self.SS.K assert newModel.obsModel.K == self.SS.K assert MTracker.nSuccess == 0 K = self.SS.K assert MTracker.nTrial == K * (K-1)/2
def test_run_many_merge_moves_dupModel_random(self): self.MakeModelWithDuplicatedComps() LP, SS = self.getSuffStatsPrepForMerge(self.dupModel) PRNG = np.random.RandomState(0) mergeKwArgs = dict(mergename='random') a, b, c, MTracker = MergeMove.run_many_merge_moves(self.dupModel, self.Data, SS, nMergeTrials=100, randstate=PRNG, **mergeKwArgs) assert MTracker.nSuccess == 4 assert (0, 4) in MTracker.acceptedOrigIDs assert (1, 5) in MTracker.acceptedOrigIDs assert (2, 6) in MTracker.acceptedOrigIDs assert (3, 7) in MTracker.acceptedOrigIDs