Пример #1
0
def parallelParser(
    pdbFrameName
):  #arg: list with universe, start and stop frame, distance and angle to calculate hbond
    sys.stdout = open(outputFolder + "/.temp_RIP-MD/temp_hbond", 'a')
    sys.stderr = open(outputFolder + "/.temp_RIP-MD/temp_hbond", 'a')

    edges_file = open(outputFolder + "/RIP-MD_Results/Edges/" +
                      pdbFrameName[0] + ".edges",
                      "a")  #0 contains the frame_number
    edges_file.write(
        "Hydrogen Bonds\nSource Node\tTarget Node\tEdge Name\tDistance\tAngle\n"
    )
    u = MDAnalysis.Universe(pdbFrameName[1])
    h = hbonds.HydrogenBondAnalysis(u,
                                    "protein",
                                    "protein",
                                    distance=Distance,
                                    angle=Angle)
    h.run()
    h.generate_table()

    for hbond in h.table:

        node1 = str(hbond[5]) + ":" + dictAtom[hbond[1]] + ":" + str(hbond[6])
        node2 = str(hbond[8]) + ":" + dictAtom[hbond[2]] + ":" + str(hbond[9])
        if nodes.has_key(node1) and nodes.has_key(node2):
            name = node1 + ":" + str(hbond[7]) + "-(HB)-" + node2 + ":" + str(
                hbond[10])
            distance = str(round(float(str(hbond[11])), 3))
            angle = str(round(float(str(hbond[12])), 3))
            edges_file.write(
                str(nodes[node1]) + "\t" + str(nodes[node2]) + "\t" + name +
                "\t" + distance + "\t" + angle + "\n")
    edges_file.write("\n")
    edges_file.close()
Пример #2
0
        if len(pdbfile) == 0:
            with open('gmx_pdb.log', 'w') as outfile:
                p = subProcess.Popen(
                    'gmx trjconv -f {0} -s {1} -o {2} -conect -pbc mol'.format(
                        grofile, tprfile, pdbfile),
                    shell=True,
                    stdout=outfile,
                    stderr=outfile)
                p.wait()

        # Compute hbonds for every tracer and output to a different file
        for tracer_index, tracer in enumerate(tracers):
            u = mda.Universe(pdbfile)
            hbond_analysis = hbonds.HydrogenBondAnalysis(
                u,
                'resid {}'.format(tracer),
                'resname HOH or resname SOL',
                distance=2.5,
                angle=150)
            hbond_analysis.run()
            hbond_analysis.generate_table()
            hbond_info = pd.DataFrame.from_records(hbond_analysis.table)
            hbond_dict = {}
            for donor, acceptor in zip(hbond_info['donor_resnm'],
                                       hbond_info['acceptor_resnm']):
                key = donor + '-' + acceptor
                if key in hbond_dict:
                    hbond_dict[key] += 1
                else:
                    hbond_dict[key] = 1

            file_index = (tracer_index * n_sims) + sim_index
#!/bin/python
import MDAnalysis as mda, sys
from MDAnalysis.analysis import hbonds
from datetime import datetime

now = datetime.now()

traj = 'prot_debug.xtc' #sys.argv[1]
top = 'prot.tpr' #sys.argv[2]
outfile = 'hbond_original.dat' #sys.argv[3]

u = mda.Universe(top,traj)
nframe = len(u.trajectory)

start = 0

for iframe in range(start,nframe):    
    sys.stdout.flush()
    sys.stdout.write('%d\r'%iframe)
    h = []
    h = hbonds.HydrogenBondAnalysis(u, 'protein or resname NH2', 'protein or resname NH2', distance = 3.0, angle = 120.0, pbc = True)
#    h = hbonds.HydrogenBondAnalysis(u, 'resname NH2', 'protein or resname NH2', distance = 3.0, angle = 120.0, pbc = True)
    h.run(start = iframe, stop = iframe+1)
    h.generate_table()
    outf = open(outfile,'a')
    for hbond in h.table:
        outf.write('%d %d %d %s %d %s %s %d %s %.8f %.8f\n'%(hbond[0],hbond[1],hbond[2],hbond[3],hbond[4],hbond[5],hbond[6],hbond[7],hbond[8],hbond[9],hbond[10]))
    outf.close()

print(datetime.now()-now)
Пример #4
0
            ]))
    }


if __name__ == '__main__':

    argparser = argparse.ArgumentParser(
        description="Script to count hydrogen bonds")
    argparser.add_argument('-f', '--file', help="the trajectory file.")
    argparser.add_argument('-s', '--struct', help="a structure file")
    args = argparser.parse_args()

    u = MDAnalysis.Universe(args.struct, args.file)
    h_all = hbonds.HydrogenBondAnalysis(u,
                                        "protein",
                                        "protein",
                                        update_selection1=False,
                                        update_selection2=False)
    results_all = h_all.run()
    cnt = h_all.count_by_time().count
    print "All:\t%.3f\t%.3f" % (cnt.mean(), cnt.std())

    h_main = HydrogenBondAnalysis_mainchain(u,
                                            "protein",
                                            "protein",
                                            update_selection1=False,
                                            update_selection2=False)
    results_main = h_main.run()
    cnt = h_main.count_by_time().count
    print "Main:\t%.3f\t%.3f" % (cnt.mean(), cnt.std())
Пример #5
0
us.append(u17)
us.append(u18)
us.append(u19)
us.append(u20)
us.append(u21)

ns = []
dists = []
ave_dists = []
tabs = []

ind = 0

for i in us:
    print(ind)
    h = hb.HydrogenBondAnalysis(i, 'resid 1-6', 'resid 8-12', distance = 3)
    h.run()
    h.generate_table()
    tab = h.table
    tabs.append(tab)
    ns.append(len(tab))
    ds = np.empty(len(tab))
    for j in range(len(tab)):
        bonds = tab[j]
        ds[j] = bonds[-2]
    ave = np.sum(ds)/len(ds)
    dists.append(ds)
    ave_dists.append(ave)
    ind += 1

Пример #6
0
#!/bin/python
import MDAnalysis as mda, sys
from MDAnalysis.analysis import hbonds

traj = sys.argv[1]
top = sys.argv[2]
outfile = sys.argv[3]

u = mda.Universe(traj, top)

nframe = len(u.trajectory)

start = 0

#for iframe in range(start,nframe):
#    sys.stdout.flush()
#    sys.stdout.write('%d\r'%iframe)
#    h = []

h = hbonds.HydrogenBondAnalysis(u,
                                'protein',
                                'resname SOL',
                                distance=3.0,
                                angle=120.0,
                                pbc=True,
                                verbose=True)
h.run(verbose=True)
print h.count_by_time()
Пример #7
0
local_hbonds_array = np.zeros((local_n, timesteps), dtype=np.float)

## Do smth

folder = 'data/charmm36m/2us/'
for i, j in enumerate(range(ind_start, ind_end)):
    struct = folder + 'chain.pdb'
    traj = folder + 'chain_{}.xtc'.format(j + 1)
    print(traj)
    sys.stdout.flush()

    #local_hbonds_array[i] = np.zeros(timesteps, dtype=np.float) + rank

    system = md.Universe(struct, traj)
    ## compute information about hbonds and write it to the 'hb.timeseries'
    hb = hbonds.HydrogenBondAnalysis(system)
    hb.run(step=step)

    ## go through the 'hb.timeseries' file and calculate number of bonds for each time frame
    ## (it's the length of array frame)
    hb_number = []
    for frame in hb.timeseries:
        hb_number.append(len(frame))
    hb_number = np.array(hb_number)
    local_hbonds_array[i] = hb_number

comm.barrier()

## Gather data
comm.Gather(local_hbonds_array, hbonds_array, root=0)