def next() : global xx global delta, gamma global model, evolve, alpha delta, gamma = steps.next() xx = step( xx, delta, gamma ) model = WrapParamModel( SYS, xx.params_est ) evolve, alpha = bootstrap.bootstrap_evolve( xx.samples, xx.y, model, k=3 )
def particle_sysid_filter( n, y, samples, pHMM, params, delta, gamma, k=None ) : a, b = params.perturbation_twosided( delta ) HMM1 = WrapParamModel( pHMM, a ) HMM2 = WrapParamModel( pHMM, b ) _, alpha1 = bootstrap.bootstrap_evolve( samples, y, HMM1, k ) _, alpha2 = bootstrap.bootstrap_evolve( samples, y, HMM2, k ) #print alpha1, alpha2 J1 = np.log( np.average( alpha1 ) ) J2 = np.log( np.average( alpha2 ) ) params_next = params.copy().update( a, b, J2 - J1, gamma ) # then actually filter ya know... HMM_next = WrapParamModel( pHMM, params_next ) samples_next = bootstrap.bootstrap_filter( n, y, samples, HMM_next, k ) return samples_next, params_next