def generate(self,T,keep=True): # TODO only works if there's no other data in the model; o/w need to add # existing data to obs resample. it should be an easy update. assert len(self.states_list) == 0 tempstates = states.collapsed_stickyhdphmm_states( T=T,model=self,beta=self.beta,alpha_0=self.alpha_0, kappa=self.kappa,obs=self.obs) used_states = np.bincount(tempstates.stateseq) allobs = [] for state, count in enumerate(used_states): self.obs.resample() allobs.append([self.obs.rvs(1) for itr in range(count)]) obs = [] for state in tempstates.stateseq: obs.append(allobs[state].pop()) obs = np.concatenate(obs) if keep: tempstates.data = obs self.states_list.append(tempstates) return obs, tempstates.stateseq
def add_data(self,data): self.states_list.append(states.collapsed_stickyhdphmm_states( model=self,beta=self.beta,alpha_0=self.alpha_0, kappa=self.kappa,obs=self.obs,data=data))