def testReportObserveInferActionSmoke(): vals = get_ripl().execute_program("""\ [assume x (normal 0 1)] foo : [observe (normal x 1) 0.2] [infer (mh default one 1)] (report 'foo) """) eq_(0.2, u.strip_types(vals[3]['value']))
def testReportObserveListActionSmoke(): vals = get_ripl().execute_program("""\ [assume m (array 0. 0.)] [assume s (matrix (array (array 1. 0.) (array 0. 1.)))] foo : [observe (multivariate_normal m s) (array 0.1 -0.1)] (report 'foo) """) eq_([0.1, -0.1], u.strip_types(vals[3]['value']))
def testForceSugar(): r = get_ripl() r.set_mode("venture_script") vals = r.execute_program("""\ assume x = normal(0,1); force x = 5; report(quote(x)); """) eq_(5, u.strip_types([v['value'] for v in vals])[2])
def hmm_map(inferrer, states): sequence = map(int, u.strip_types(states[0])) time = hmm_time() hmm_pause() import sys print >> sys.stderr, 'MAP sequence: %s' % (sequence, ) print >> sys.stderr, 'Score: %s' % inferrer.engine.ripl.infer( 'global_log_joint')[0] print '%s,%s' % (time, metric1(sequence)) hmm_resume()
def testEnumerativeSmoke(): r = get_ripl() r.assume("x", "(categorical (simplex 0.1 0.2 0.3 0.4) (list 1 2 3 4))") r.infer("(enumerative_diversify default all)") assert np.allclose([1, 2, 3, 4], strip_types( r.sivm.core_sivm.engine.sample_all(v.sym("x")))) assert np.allclose([0.1, 0.2, 0.3, 0.4], logWeightsToNormalizedDirect( r.sivm.core_sivm.engine.model.log_weights))
def hmm_state(inferrer, states): global hmm_marginals assert hmm_marginals is not None import sys marginals = marginalize(inferrer, u.strip_types(states)) tvd = total_variation_distance(marginals, filtered_marginals[len(hmm_marginals)]) print >> sys.stderr, ('Filtered marginals at %2d (tvd %s): %s' % ( len(hmm_marginals), tvd, marginals, )) hmm_marginals.append(marginals)
def testEnumerativeStacking(): r = get_ripl() r.assume("x", "(categorical (simplex 0.1 0.2 0.3 0.4) (list 1 2 3 4))") r.infer("(enumerative_diversify default all)") r.infer("(enumerative_diversify default all)") assert np.allclose([1, 2, 3, 4] * 4, strip_types( r.sivm.core_sivm.engine.sample_all(v.sym("x")))) assert np.allclose( [ 0.01, 0.02, 0.03, 0.04, 0.02, 0.04, 0.06, 0.08, 0.03, 0.06, 0.09, 0.12, 0.04, 0.08, 0.12, 0.16 ], #TODO Are these actually the weights I want here? logWeightsToNormalizedDirect( r.sivm.core_sivm.engine.model.log_weights))
def hmm_smoothed(inferrer, states, likelihood_weight=True): states = u.strip_types(states) n = len(states[0]) marginals = [ marginalize(inferrer, [s[i] for s in states], likelihood_weight) for i in range(n) ] time = hmm_time() hmm_pause() for i in range(n): import sys tvd = total_variation_distance(marginals[i], smoothed_marginals[i]) print >> sys.stderr, ('Smoothed marginals at %2d (tvd %s): %s' % (i, tvd, marginals[i])) m, v = metric2(marginals) print '%s,%s,%s' % (time, m, v) hmm_resume()
def printValue(directive): '''Gets the actual value returned by an assume, predict, report, or sample directive.''' if directive is None or 'value' not in directive: pass else: print strip_types(directive['value'])
def testSampleSugar(): r = get_ripl() r.set_mode("venture_script") vals = r.execute_program("sample 2 + 2;") eq_([4], u.strip_types([v['value'] for v in vals]))
def testReportObserveActionSmoke(): vals = get_ripl().execute_program("""\ foo : [observe (normal 0 1) 0.2] (report 'foo) """) eq_(0.2, u.strip_types(vals[1]['value']))
def testReportActionSmoke(): vals = get_ripl().execute_program("""\ foo : [assume x (+ 1 2)] (report 'foo) """) eq_([3.0, 3.0], u.strip_types([v['value'] for v in vals]))