def _do_lumping(self): """Do the MVCA lumping. """ model = LandmarkAgglomerative(linkage='ward', n_clusters=self.n_macrostates, metric=self.metric, n_landmarks=self.n_landmarks, landmark_strategy=self.landmark_strategy, random_state=self.random_state) microstate_mapping_ = model.fit_transform([self.transmat_])[0] self.microstate_mapping_ = microstate_mapping_
def traj_load(irow): i, row = irow traj = md.load(row['traj_fn'], top=tops[row['top_fn']]) return i, traj traj_dict = dict(map(traj_load, meta.iterrows())) trajs = [traj for traj in traj_dict.values() if traj.n_frames > 1000] print(len(trajs)) num_clust = 20 cluster = LandmarkAgglomerative(n_clusters=num_clust, n_landmarks=int(totframes / 100), linkage='ward', metric='rmsd') ctrajs = cluster.fit_transform(trajs) # print('Fitting cluster labels for MSM') # ctraj = {} # count = 0 # for k, v in traj_dict.items(): # print(k, count) # count +=1 # ctraj[k] = cluster.partial_predict(v) # # ctrajs = [traj for traj in ctraj.values() if traj.shape[0] > 1000] print('Fitting MSM') lag = 4000 msm = MarkovStateModel(lag_time=lag, n_timescales=50) msm.fit(ctrajs)