def test_run_birth_move_can_create_necessary_comps(self):
   ''' Can we start with one comp and recover the 3 true ones?
       Of course, depending on the random init we maybe cannot,
         but we should be able to a significant fraction of the time.
   '''
   birthArgs = dict(Kfresh=5, freshInitName='randexamples', 
                     freshAlgName='VB', nFreshLap=50)
   nSuccess = 0
   nTrial = 10
   for trial in range(nTrial):
     PRNG = np.random.RandomState(trial)
     newModel, newSS, MInfo = BirthMove.run_birth_move(self.oneModel, 
                     self.Data, self.oneSS, randstate=PRNG, **birthArgs)
     print newSS.N
     newSS = self._run_LearnAlg_iterations(newModel, self.Data, nIter=10)
     # after refining, we better have true comps!
     topCompIDs = np.argsort(newSS.N)[::-1]
     foundMatch = np.zeros(3)
     for kk in topCompIDs[:3]:
       estMu = newModel.obsModel.get_mean_for_comp(kk)
       print estMu
       for jj in range(3):
         trueMu = self.Mu[jj,:]
         if np.max(trueMu - estMu) < 0.5:
           foundMatch[jj] = 1
     print ' '
     if np.all(foundMatch):
       nSuccess += 1
   assert nSuccess/float(nTrial) > 0.5
 def test_learn_fresh_model_produces_new_comps(self):
   ''' Verify that learn_fresh_model produces new components  
   '''
   PRNG = np.random.RandomState(0)
   freshModel = self.oneModel.copy()
   assert type(freshModel) == HModel
   freshSS = BirthMove.learn_fresh_model(freshModel, self.Data, Kfresh=10,
                     freshInitName='randexamples', freshAlgName='VB',
                     nFreshLap=50, randstate=PRNG)
   assert freshSS.K > 1
   assert freshSS.K <= freshModel.obsModel.K
 def test_run_birth_move_produces_viable_model(self):
   ''' Verify that the output of run_birth_move
       can be used to create a valid model that can do all necessary subroutines like calc_local_params, etc.
   '''
   PRNG = np.random.RandomState(12345)
   birthArgs = dict(Kfresh=10, freshInitName='randexamples', 
                     freshAlgName='VB', nFreshLap=50)
   newModel, newSS, MInfo = BirthMove.run_birth_move(self.oneModel, 
                     self.Data, self.oneSS, randstate=PRNG, **birthArgs)
   # Try newModel out with some quick calculations
   assert newModel.obsModel.K > self.oneModel.obsModel.K
   LP = newModel.calc_local_params(self.Data)
   SS = newModel.get_global_suff_stats(self.Data, LP)
   assert SS.K == newModel.obsModel.K
Esempio n. 4
0
 def test_learn_fresh_model_produces_new_comps(self):
     ''' Verify that learn_fresh_model produces new components  
 '''
     PRNG = np.random.RandomState(0)
     freshModel = self.oneModel.copy()
     assert type(freshModel) == HModel
     freshSS = BirthMove.learn_fresh_model(freshModel,
                                           self.Data,
                                           Kfresh=10,
                                           freshInitName='randexamples',
                                           freshAlgName='VB',
                                           nFreshLap=50,
                                           randstate=PRNG)
     assert freshSS.K > 1
     assert freshSS.K <= freshModel.obsModel.K
 def test_learn_fresh_model_reproducible_random_seed(self):
   ''' Verify that learn_fresh_model produces same components
       when called with same targetData and same randstate
   '''
   freshModel = self.oneModel.copy()
   Nvec = list()
   xvec = list()
   for trial in range(3):
     PRNG = np.random.RandomState(8383)
     freshSS = BirthMove.learn_fresh_model(freshModel, self.Data, Kfresh=10,
                     freshInitName='randexamples', freshAlgName='VB',
                     nFreshLap=50, randstate=PRNG)
     Nvec.append(freshSS.N)
     xvec.append(freshSS.x)
   assert np.all(Nvec[0] == Nvec[1])
   assert np.all(Nvec[0] == Nvec[2])
   assert np.all(xvec[0] == xvec[2])
Esempio n. 6
0
 def test_run_birth_move_produces_viable_model(self):
     ''' Verify that the output of run_birth_move
     can be used to create a valid model that can do all necessary subroutines like calc_local_params, etc.
 '''
     PRNG = np.random.RandomState(12345)
     birthArgs = dict(Kfresh=10,
                      freshInitName='randexamples',
                      freshAlgName='VB',
                      nFreshLap=50)
     newModel, newSS, MInfo = BirthMove.run_birth_move(self.oneModel,
                                                       self.Data,
                                                       self.oneSS,
                                                       randstate=PRNG,
                                                       **birthArgs)
     # Try newModel out with some quick calculations
     assert newModel.obsModel.K > self.oneModel.obsModel.K
     LP = newModel.calc_local_params(self.Data)
     SS = newModel.get_global_suff_stats(self.Data, LP)
     assert SS.K == newModel.obsModel.K
Esempio n. 7
0
 def test_learn_fresh_model_reproducible_random_seed(self):
     ''' Verify that learn_fresh_model produces same components
     when called with same targetData and same randstate
 '''
     freshModel = self.oneModel.copy()
     Nvec = list()
     xvec = list()
     for trial in range(3):
         PRNG = np.random.RandomState(8383)
         freshSS = BirthMove.learn_fresh_model(freshModel,
                                               self.Data,
                                               Kfresh=10,
                                               freshInitName='randexamples',
                                               freshAlgName='VB',
                                               nFreshLap=50,
                                               randstate=PRNG)
         Nvec.append(freshSS.N)
         xvec.append(freshSS.x)
     assert np.all(Nvec[0] == Nvec[1])
     assert np.all(Nvec[0] == Nvec[2])
     assert np.all(xvec[0] == xvec[2])
Esempio n. 8
0
 def test_run_birth_move_can_create_necessary_comps(self):
     ''' Can we start with one comp and recover the 3 true ones?
     Of course, depending on the random init we maybe cannot,
       but we should be able to a significant fraction of the time.
 '''
     birthArgs = dict(Kfresh=5,
                      freshInitName='randexamples',
                      freshAlgName='VB',
                      nFreshLap=50)
     nSuccess = 0
     nTrial = 10
     for trial in range(nTrial):
         PRNG = np.random.RandomState(trial)
         newModel, newSS, MInfo = BirthMove.run_birth_move(self.oneModel,
                                                           self.Data,
                                                           self.oneSS,
                                                           randstate=PRNG,
                                                           **birthArgs)
         print newSS.N
         newSS = self._run_LearnAlg_iterations(newModel,
                                               self.Data,
                                               nIter=10)
         # after refining, we better have true comps!
         topCompIDs = np.argsort(newSS.N)[::-1]
         foundMatch = np.zeros(3)
         for kk in topCompIDs[:3]:
             estMu = newModel.obsModel.get_mean_for_comp(kk)
             print estMu
             for jj in range(3):
                 trueMu = self.Mu[jj, :]
                 if np.max(trueMu - estMu) < 0.5:
                     foundMatch[jj] = 1
         print ' '
         if np.all(foundMatch):
             nSuccess += 1
     assert nSuccess / float(nTrial) > 0.5