def generate(self,T,keep=True): # TODO only works if there's no other data in the model assert len(self.states_list) == 0 tempstates = states.collapsed_hdphsmm_states( T=T,model=self,beta=self.beta,alpha_0=self.alpha_0, obs=self.obs,dur=self.dur) used_states = defaultdict(lambda: 0) for state in tempstates.stateseq: used_states[state] += 1 allobs = {} for state,count in used_states.items(): self.obs.resample() allobs[state] = [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,stateseq=None): self.states_list.append(states.collapsed_hdphsmm_states( model=self,beta=self.beta,alpha_0=self.alpha_0, obs=self.obs,dur=self.dur,data=data,stateseq=stateseq))