In [1]:
# GET DISTRIBUTION OF DIHEDRAL ANGLES IN THE LINKAGE OF TWO TRIANGLES
# FIX BOTH THE CENTER OF MASS AND ROTATION

In [2]:
%matplotlib inline

In [3]:
import datetime
dts = str(datetime.datetime.now())
date_time_str = dts[:10] + "-" + dts[11:13] + "-" + dts[14:16]
print date_time_str


2015-03-22-13-38

In [4]:
import numpy as np

import matplotlib.pyplot as plt

import bga_4_0 as bga
import manifold_reflected_brownian_motion as mrbm

bga = reload(bga)
mrbm = reload(mrbm)

In [5]:
save_images = True

In [6]:
manifold_name = 'building_game'
poly_name = 'octahedron'
int_num = 2

unary_boundary_name = 'self_intersection'
binary_boundary_name = 'dihedrals'

stat_name = 'test_1'

In [7]:
manifold_kwargs = {'poly_name': poly_name, 
                   'int_num': int_num, 
                   'fixed_com': True,
                   'fixed_rotation': True}
unary_boundary_kwargs = {'poly_name': poly_name, 'int_num': int_num}
binary_boundary_kwargs = {'poly_name': poly_name, 'int_num': int_num}
stat_kwargs = {}

In [8]:
err_tol = 10**-12
h = 0.025
N = 10**1

hist_min = 0.0
hist_max = 2.0*np.pi
hist_bins = 1000

In [9]:
kwargs_nb = {'manifold_name': manifold_name,  
             'stat_name': stat_name,
             'manifold_kwargs': manifold_kwargs,
             'stat_kwargs': stat_kwargs,
             'record_hist': True, 
             'hist_min': hist_min, 
             'hist_max': hist_max, 
             'hist_bins': hist_bins,
             'err_tol': err_tol}

kwargs_b  = {'manifold_name': manifold_name,  
             'unary_boundary_name': unary_boundary_name,
             'binary_boundary_name': binary_boundary_name,
             'stat_name': stat_name,
             'manifold_kwargs': manifold_kwargs,
             'unary_boundary_kwargs': unary_boundary_kwargs,
             'binary_boundary_kwargs': binary_boundary_kwargs,
             'stat_kwargs': stat_kwargs,
             'record_hist': True, 
             'hist_min': hist_min, 
             'hist_max': hist_max, 
             'hist_bins': hist_bins,
             'err_tol': err_tol}

In [10]:
x0, links, lengths, faces = bga.load_bg_int(poly_name, int_num)

In [11]:
z_nb = mrbm.MRBM(x0, h, **kwargs_nb)
#z_b = mrbm.MRBM(x0, h, **kwargs_b)

In [12]:
s_nb = z_nb.sample(N=N, record_trace=False, record_stats=True)
print 'done'


done

In [13]:
#s_b = z_b.sample(N=N, record_trace=False, record_stats=False)
#print 'done'

In [14]:
a = 0.5/np.pi
b = -a*0.1
c = -a*0.1
a2 = a
b2 = 0.028
x_range = np.linspace(0.0, 2.0*np.pi)
ys = a + b*np.cos(x_range) + c*np.cos(2*x_range)
ys2 = a2 + b2*np.cos(x_range)

In [15]:
xx1 = plt.hist(z_nb.hist.midpoints, weights=z_nb.hist.hist[0,:], normed=True, bins=40)
yy1 = plt.plot(x_range, ys, 'r') 
yy2 = plt.plot(x_range, ys2, 'g') 
if save_images == True:
    plt.savefig('test_6_n_'+date_time_str+'.png')



In [16]:
#xx2 = plt.hist(z_b.hist.midpoints, weights=z_b.hist.hist[0,:], normed=True, bins=40)
#yy2 = plt.plot(x_range, ys, 'r')
#if save_images == True:
#    plt.savefig('test_1_b_'+date_time_str+'.png')
plt.plot(z_nb.stat_log[:100])