def draw_index(probs, n_picks=1, UseFastMethod=True): """Draw a number (or many numbers, controlled by n_picks), weighted by the probabilities probs.""" if UseFastMethod: t = np.cumsum(probs) s = sum(probs) return np.searchsorted(t, np.random.rand(n_picks) * s) tcounts = mmread( '/Users/tud51931/projects/MSM/msm/ff03-hybridkcenter/RMSDCluster4.2/lagtime50/tCounts.UnMapped.mtx' ) Assignment = Serializer.LoadFromHDF( '/Users/tud51931/projects/MSM/msm/ff03-hybridkcenter/RMSDCluster4.2/lagtime50/Assignments.Fixed.h5' ) trajnum = 100 frames = Assignment['Data'].shape[1] a = Serializer() a['Data'] = -1 * np.ones((trajnum, frames)) for traj in range(trajnum): print '%d of %d Trajectories' % (traj, trajnum) startstate = 126 a['Data'][traj, 0] = startstate for step in range(1, frames): probs = tcounts.data[tcounts.row == startstate] / sum( tcounts.data[tcounts.row == startstate]) a['Data'][traj, step] = tcounts.col[tcounts.row == startstate][ draw_index(probs)[0]] startstate = a['Data'][traj, step] a.SaveToHDF('Assignments.rmsd4.2.faked.h5')
Path = "/Users/tud51931/projects/MSM/msm/ff03-dihedralhybrid/" metrics = 'Dihedral' elif metrics.lower() == 'rmsd': Path = "/Users/tud51931/projects/MSM/msm/ff03-hybridkcenter/" metrics = 'RMSD' Path = os.path.join(Path, '%sCluster%0.1f' % (metrics, cutoff)) AssignmentFile = os.path.join(Path, "Data", "Assignments.h5") A = Serializer.LoadFromHDF(AssignmentFile) StateAssignment = hct.get_StatesAssignments(AssignmentFiles=A) RMSDFile = os.path.join(Path, "Data", "RMSD.h5") RMSD = Serializer.LoadFromHDF(RMSDFile) rmsd_allstates = {} for state in StateAssignment.keys(): rmsd_singlestate = [] for trajid in StateAssignment[state].keys(): rmsd_singlestate += list( RMSD['Data'][int(trajid)][StateAssignment[state][trajid]]) rmsd_allstates[int(state)] = rmsd_singlestate maxstatelength = max([len(i) for i in rmsd_allstates.values()]) StateRMSDs = copy.deepcopy(RMSD) StateRMSDs['Data'] = -1 * np.ones((len(rmsd_allstates), maxstatelength)) for state in rmsd_allstates.keys(): statelength = len(rmsd_allstates[state]) StateRMSDs['Data'][state][:statelength] = rmsd_allstates[state][:] fn = "StateRMSDs_%sCluster%0.1f.h5" % (metrics, cutoff) Serializer.SaveToHDF(StateRMSDs, fn) print "Save to %s" % fn print "Done."