obs_distns = [FrozenMixtureDistribution(
    components=component_library,
    a_0=1.0,b_0=0.05)
    for i in xrange(Nmax)]

################
#  build HSMM  #
################

dur_distns = [NegativeBinomialIntegerRVariantDuration(np.r_[0.,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1],alpha_0=25.,beta_0=25.)
        for state in range(Nmax)]

model = LibraryHSMMIntNegBinVariant(
        init_state_concentration=10.,
        alpha_a_0=1.0,alpha_b_0=0.1,
        gamma_a_0=0.1,gamma_b_0=200.,
        obs_distns=obs_distns,
        dur_distns=dur_distns)

for data in training_datas:
    model.add_data_parallel(data,left_censoring=True)
    # model.add_data(data,left_censoring=True)

##################
#  infer things  #
##################


train_likes = []
for i in progprint_xrange(50):
    model.resample_model_parallel()
models = collections.OrderedDict()

### HSMM

dur_distns = [
    NegativeBinomialIntegerRVariantDuration(np.r_[0., 0, 0, 0, 0, 0, 1, 1, 1,
                                                  1],
                                            alpha_0=5.,
                                            beta_0=5.)
    for state in range(library_size)
]

hsmm = LibraryHSMMIntNegBinVariant(init_state_concentration=10.,
                                   alpha=6.,
                                   gamma=2.,
                                   obs_distns=obs_distns,
                                   dur_distns=dur_distns)
for data in training_datas:
    hsmm.add_data(data, left_censoring=True)

for itr in progprint_xrange(resample_iter):
    hsmm.resample_model()

### degrade into HMM, use the same learned syllables!

hmm = LibraryHMMFixedObs(init_state_concentration=10.,
                         alpha=6.,
                         gamma=2.,
                         obs_distns=hsmm.obs_distns)
for data in training_datas: