예제 #1
0
파일: xvg_read3.py 프로젝트: schilli/Tools
    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()
예제 #3
0
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()