# one observation at node 4
observations={4:0.0}

# directed edges for kernel BP implementation
edges=model.extract_edges(observations)

print "graph:", graph
print "observations:", observations
print "edges:", edges

# sample data, random number of samples for each edge
n_min=5
n_max=6
data={} 
for edge in edges:
    samples = model.sample_real(randint(n_min, n_max))
    
    # only sample once per undirected edge
    inverse_edge=(edge[1], edge[0])
    if (edge not in data and inverse_edge not in data):
        data1=samples[edge[0]]
        data2=samples[edge[1]]
        
        data[edge]=(data1,data2)
        data[inverse_edge]=(data2,data1)
        
# compute all (here Gaussian) kernels of node data at edges with themselves
kernel=GaussianKernel(sigma=1)

# use the example class for dense matrix data that can be stored in memory
precomputer=PrecomputeDenseMatrixKernelBP(graph, edges, data, observations, \