def smoothen(self, width): """smoothen the data with a window function average The window width is given in fraction of the number of datapoints""" if width >= 0.0 and width <= 1.0: ww = int(width*len(self.data[0])) else: print("ERROR: window width must be in [0.0,1.0]") sys.exit(1) for i, d in enumerate(self.data): self.data[i] = ra.running_average(d, ww, win="gaussian")
def main(): # filenames = ["/home/oliver/SiSc/Courses/Thesis/iGRASP/liPASe/jubiofs/iGRASP/Complex/folded/citrate_bound/structure1/prod01.pdb", # "/home/oliver/SiSc/Courses/Thesis/iGRASP/liPASe/jubiofs/iGRASP/Complex/folded/citrate_bound/structure2/prod01.pdb", # "/home/oliver/SiSc/Courses/Thesis/iGRASP/liPASe/jubiofs/iGRASP/Complex/folded/citrate_bound/structure4/prod01.pdb", # "/home/oliver/SiSc/Courses/Thesis/iGRASP/liPASe/jubiofs/iGRASP/Complex/folded/citrate_bound/structure6/prod01.pdb"] filenames = ["/home/oliver/BigData/ThinkPad/citrate_bound/structure1/prod01.pdb", "/home/oliver/BigData/ThinkPad/citrate_bound/structure2/prod01.pdb", "/home/oliver/BigData/ThinkPad/citrate_bound/structure4/prod01.pdb", "/home/oliver/BigData/ThinkPad/citrate_bound/structure6/prod01.pdb", "/home/oliver/BigData/ThinkPad/citrate_free/structure1/prod01.pdb", "/home/oliver/BigData/ThinkPad/citrate_free/structure2/prod01.pdb", "/home/oliver/BigData/ThinkPad/citrate_free/structure4/prod01.pdb", "/home/oliver/BigData/ThinkPad/citrate_free/structure6/prod01.pdb"] # filenames = ["/home/oliver/BigData/prod01.pdb"] pickleFileName = "complex_traj_collective_coords.pickle" if os.path.isfile(pickleFileName): start = time.time() pickleFile = open(pickleFileName, 'r') MDs = pickle.load(pickleFile) pickleFile.close() print "Read MDs with {} frames from pickled file in {:.2f} sec.".format(len(MDs[0].CitA_r), time.time()-start) else: MDs = [] for filename in filenames: start = time.time() MDs.append(Trajectory(filename)) MDs[-1].get_collective_coordinates() MDs[-1].sm_CitA_r = 180.0/math.pi*ra.running_average(MDs[-1].CitA_r , int(0.02*len(MDs[-1].CitA_r)), 'gaussian') MDs[-1].sm_CitA_theta = 180.0/math.pi*ra.running_average(MDs[-1].CitA_theta, int(0.02*len(MDs[-1].CitA_theta)), 'gaussian') MDs[-1].sm_CitA_phi = 180.0/math.pi*ra.running_average(MDs[-1].CitA_phi , int(0.02*len(MDs[-1].CitA_phi)), 'gaussian') MDs[-1].sm_Lip_r = 180.0/math.pi*ra.running_average(MDs[-1].CitA_r , int(0.02*len(MDs[-1].CitA_r)), 'gaussian') MDs[-1].sm_Lip_theta = 180.0/math.pi*ra.running_average(MDs[-1].CitA_theta, int(0.02*len(MDs[-1].CitA_theta)), 'gaussian') MDs[-1].sm_Lip_phi = 180.0/math.pi*ra.running_average(MDs[-1].CitA_phi , int(0.02*len(MDs[-1].CitA_phi)), 'gaussian') MDs[-1].frames = [] print "Done with file {}\n in {:.2f} sec.".format(filename, time.time()-start) pickleFile = open(pickleFileName, 'w') pickle.dump(MDs, pickleFile) pickleFile.close() a = 10 for i in range(len(MDs)): print "MDs[{}]".format(i) print "\tCitA_theta = [", for n in MDs[i].CitA_theta[:a]: print "{:.2f}, ".format(n), print "{:.2f}]".format(MDs[i].CitA_theta[a]) # i = 0 # plt.plot(MDs[i ].CitA_theta, MDs[i ].CitA_phi, 'r') # plt.plot(MDs[i+4].CitA_theta, MDs[i+4].CitA_phi, 'b') markerSize = 2; plot = '2d' if plot == '3d': fig = plt.figure() ax = fig.add_subplot(111, projection='3d') for i in range(4): ax.plot([0], [0], [0], 'o') x = []; y = []; z = []; for n in range(len(MDs[i].CitA_phi)): # x.append(MDs[i].CitA_r[n] * math.sin(MDs[i].CitA_theta[n]) * math.cos(MDs[i].CitA_phi[n]) ) # y.append(MDs[i].CitA_r[n] * math.sin(MDs[i].CitA_theta[n]) * math.sin(MDs[i].CitA_phi[n]) ) # z.append(MDs[i].CitA_r[n] * math.cos(MDs[i].CitA_theta[n]) ) x.append(MDs[i].r[n][0]) y.append(MDs[i].r[n][1]) z.append(MDs[i].r[n][2]) ax.plot3D(x, y, z, '-') i = i + 4 x = []; y = []; z = []; for n in range(len(MDs[i].CitA_phi)): # x.append(MDs[i].CitA_r[n] * math.sin(MDs[i].CitA_theta[n]) * math.cos(MDs[i].CitA_phi[n]) ) # y.append(MDs[i].CitA_r[n] * math.sin(MDs[i].CitA_theta[n]) * math.sin(MDs[i].CitA_phi[n]) ) # z.append(MDs[i].CitA_r[n] * math.cos(MDs[i].CitA_theta[n]) ) x.append(MDs[i].r[n][0]) y.append(MDs[i].r[n][1]) z.append(MDs[i].r[n][2]) ax.plot3D(x, y, z, '-') xmax = max(abs(max(x)), abs(min(x))) ymax = max(abs(max(y)), abs(min(y))) zmax = max(abs(max(z)), abs(min(z))) totalMax = max([xmax, ymax, zmax]) ax.set_xlim3d([-totalMax, totalMax]) ax.set_ylim3d([-totalMax, totalMax]) ax.set_zlim3d([-totalMax, totalMax]) plt.savefig('structure_{}_and_{}.png'.format(i-4, i), bbox_inches='tight') plt.show() elif plot == '2d': max_theta = -1*float('inf') min_theta = float('inf') max_phi = -1*float('inf') min_phi = float('inf') for i in range(8): theta = max(MDs[i].sm_CitA_theta) phi = max(MDs[i].sm_CitA_phi) if theta > max_theta: max_theta = theta if phi > max_phi: max_phi = phi theta = min(MDs[i].sm_CitA_theta) phi = min(MDs[i].sm_CitA_phi) if theta < min_theta: min_theta = theta if phi < min_phi: min_phi = phi theta_diff = max_theta - min_theta phi_diff = max_phi - min_phi for i in range(4): plt.figure() plt.plot(MDs[i ].sm_CitA_theta, MDs[i ].sm_CitA_phi, 'r', lw=1) plt.plot(MDs[i+4].sm_CitA_theta, MDs[i+4].sm_CitA_phi, 'b', lw=1) plt.plot(MDs[i ].sm_CitA_theta[0], MDs[i ].sm_CitA_phi[0], '^r', ms=15) plt.plot(MDs[i+4].sm_CitA_theta[0], MDs[i+4].sm_CitA_phi[0], '^b', ms=15) plt.title('structure {}'.format(i+1)) plt.xlabel('theta (degree)') plt.ylabel('phi (degree)') # plt.xlim([0, math.pi]) # plt.ylim([-math.pi, math.pi]) plt.xlim([-0.1*theta_diff+min_theta, 0.1*theta_diff+max_theta]) plt.ylim([-0.1*phi_diff +min_phi, 0.1*phi_diff +max_phi]) plt.legend(['citrate bound', 'citrate free'], loc='lower left') plt.savefig('collecitve_coords_structure{}.png'.format(i+1), bbox_inches='tight') plt.savefig('collecitve_coords_structure{}.pdf'.format(i+1), bbox_inches='tight') plt.show()
filename = "testfile.txt" # READ DATA a = open(dir + filename, "r") data = [] # CONVERT STRING IN DATA LIST TO FLOAT with a as file: for line in file: for element in line.split(): data.append(float(element)) print data # CALL FUNTION running_average TO CALCULATE RUNNING AVERAGE OF data data_avg = [] n = 3 data_avg = running_average.running_average(data, n) print data_avg # PLOT THE DATA plt.plot(data) plt.xlabel('# of data') plt.ylabel('data') plt.show() # PLOT THE DATA plt.plot(data_avg) plt.xlabel('# of data') plt.ylabel('data running average') plt.show()