In [1]:
import sys
sys.path.append("../nmpath/")
from tools_for_notebook0 import *
%matplotlib inline
from mappers import rectilinear_mapper
from ensembles import Ensemble, DiscreteEnsemble, PathEnsemble, DiscretePathEnsemble
In [2]:
plot_traj([],[])
In [3]:
#Generating MC trajectories
mc_traj1_2d = mc_simulation2D(100000)
mc_traj2_2d = mc_simulation2D(10000)
In [4]:
# Empty ensemble with no trajectories
my_ensemble = Ensemble()
From a single trajectory:
In [5]:
# from a single trajectory
my_ensemble = Ensemble([mc_traj1_2d],verbose=True)
From a list of trajectories:
In [6]:
# We have to set list_of_trajs = True
my_list_of_trajs = [mc_traj1_2d, mc_traj2_2d]
my_ensemble = Ensemble(my_list_of_trajs, verbose=True)
In [7]:
for traj in my_ensemble:
print(len(traj))
In [8]:
my_ensemble = Ensemble(verbose=True)
my_ensemble.add_trajectory(mc_traj1_2d)
my_ensemble.add_trajectory(mc_traj2_2d)
In [9]:
print(my_ensemble)
In [10]:
stateA = [[0,pi],[0,pi]]
stateB = [[5*pi,6*pi],[5*pi,6*pi]]
my_ensemble.empirical_mfpts(stateA, stateB)
Out[10]:
In [11]:
seq1 = mc_simulation2D(20000)
seq2 = mc_simulation2D(20000)
my_e1 = Ensemble([seq1])
my_e2 = Ensemble([seq2])
ensemble1 = my_e1 + my_e2
In [12]:
e1 = Ensemble([[1.,2.,3.,4.]],verbose=True)
e2 = Ensemble([[2,3,4,5]])
e3 = Ensemble([[2,1,1,4]])
my_ensembles = [e1, e2, e3]
ensemble_tot = Ensemble([])
for ens in my_ensembles:
ensemble_tot += ens
#ensemble_tot.mfpts([1,1],[4,4])
In [13]:
n_states = N**2
bin_bounds = [[i*pi for i in range(7)],[i*pi for i in range(7)]]
C1 = my_ensemble._count_matrix(n_states, map_function=rectilinear_mapper(bin_bounds))
print(C1)
In [14]:
K1 = my_ensemble._mle_transition_matrix(n_states, map_function=rectilinear_mapper(bin_bounds))
print(K1)
In [15]:
#p_ensemble = PathEnsemble()
In [16]:
p_ensemble = PathEnsemble.from_ensemble(my_ensemble, stateA, stateB)
print(p_ensemble)
In [17]:
p_ensemble.empirical_mfpts(stateA, stateB)
Out[17]:
In [18]:
print(p_ensemble._count_matrix(n_states, mapping_function2D))
In [19]:
#clusters = p_ensemble.cluster(distance_metric = 'RMSD', n_cluster=10, method = 'K-means')
In [20]:
d_ens = DiscreteEnsemble.from_ensemble(my_ensemble, mapping_function2D)
print(d_ens)
In [21]:
C2 = d_ens._count_matrix(n_states)
print(C2)
In [22]:
K2= d_ens._mle_transition_matrix(n_states)
print(K2)
In [23]:
stateA = [0]
stateB = [N*N-1]
d_ens.empirical_mfpts(stateA, stateB)
Out[23]:
In [24]:
d_ens2 = DiscreteEnsemble.from_transition_matrix(K2, sim_length = 100000)
In [25]:
#d_ens2.mfpts(stateA,stateB)
In [26]:
dpathEnsemble = DiscretePathEnsemble.from_ensemble(my_ensemble, stateA, stateB, mapping_function2D)
print(dpathEnsemble)
In [27]:
#MFPT from the transition matrix
dpathEnsemble.nm_mfpt(ini_probs = None, n_states = N*N)
Out[27]:
In [28]:
n_paths = 200
dpathEnsemble2 = DiscretePathEnsemble.from_transition_matrix\
(K2, stateA = stateA, stateB = stateB, n_paths = n_paths,ini_pops = [1])
print(dpathEnsemble2)
In [29]:
FSs, weights, count = dpathEnsemble2.weighted_fundamental_sequences(K2)
size = len(FSs)
paths = dpathEnsemble2.trajectories
print(count)
In [30]:
discrete = [True for i in range(size)]
plot_traj([[paths[i],[]] for i in range(size)] , discrete, \
line_width=0.2, std=0.5, color='k', title = '{} paths A->B'.format(n_paths))
In [31]:
plot_traj([[FSs[i],[]] for i in range(size)] ,discrete, \
line_width=0.5, std=0.2, color='k', title = '{} FSs A->B'.format(n_paths))
In [32]:
lw = [weights[i]*100 for i in range(size)]
In [33]:
#np.random.seed(12)
plot_traj([[FSs[i],[]] for i in range(size)] ,discrete=[True for i in range(size)],\
line_width = lw,std = 0.002, alpha=0.25)
In [ ]: