mirror of
https://github.com/arcan1s/moldyn.git
synced 2025-07-03 17:15:47 +00:00
added hb-select script
This commit is contained in:
70
hb-select/hb-select.py
Executable file
70
hb-select/hb-select.py
Executable file
@ -0,0 +1,70 @@
|
|||||||
|
#!/usr/bin/python2
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
def readAtoms(file):
|
||||||
|
"""function to read *gro file"""
|
||||||
|
atoms = {}
|
||||||
|
with open(file, 'r') as coordFile:
|
||||||
|
coordFile.readline()
|
||||||
|
num = int(coordFile.readline())
|
||||||
|
for i in range(num):
|
||||||
|
line = coordFile.readline()
|
||||||
|
resNum = int(line[0:5])
|
||||||
|
atomNum = int(line[15:20])
|
||||||
|
atoms[atomNum] = resNum
|
||||||
|
return atoms
|
||||||
|
|
||||||
|
|
||||||
|
def readHb(files):
|
||||||
|
"""function to read *.ndx file"""
|
||||||
|
hbs = []
|
||||||
|
start = False
|
||||||
|
for file in files:
|
||||||
|
with open(file, 'r') as ndxFile:
|
||||||
|
for line in ndxFile:
|
||||||
|
if (line[0:9] == "[ hbonds_"):
|
||||||
|
start = True
|
||||||
|
continue
|
||||||
|
elif (line.count('[') > 0):
|
||||||
|
start = False
|
||||||
|
continue
|
||||||
|
elif (start):
|
||||||
|
donor = int(line[0:7])
|
||||||
|
hydrogen = int(line[7:14])
|
||||||
|
acceptor = int(line[14:21])
|
||||||
|
if (hbs.count([donor, hydrogen, acceptor]) == 0):
|
||||||
|
hbs.append([donor, hydrogen, acceptor])
|
||||||
|
return hbs
|
||||||
|
|
||||||
|
|
||||||
|
def selectHb(atoms, hbs):
|
||||||
|
"""funtion to select hydrogen bond"""
|
||||||
|
selectedHbs = []
|
||||||
|
for hb in hbs:
|
||||||
|
if ((atoms[hb[0]] - atoms[hb[2]]) > 5):
|
||||||
|
selectedHbs.append(hb)
|
||||||
|
return selectedHbs
|
||||||
|
|
||||||
|
|
||||||
|
def printToFile(selectedHbs, file):
|
||||||
|
"""function to print results"""
|
||||||
|
with open(file, 'w') as ndxFile:
|
||||||
|
ndxFile.write("[ sel_hbs ]\n")
|
||||||
|
for hb in selectedHbs:
|
||||||
|
ndxFile.write("%7i%7i%7i\n" % (hb[0], hb[1], hb[2]))
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(description = 'Select hidrogen bond from GROMACS index file')
|
||||||
|
parser.add_argument('-i', '--input', dest = 'input',
|
||||||
|
help = '*.gro file', action = 'store')
|
||||||
|
parser.add_argument('-n', '--ndx', dest = 'ndx',
|
||||||
|
help = '*.ndx files, comma separated', action = 'store')
|
||||||
|
parser.add_argument('-o', '--output', dest = 'output',
|
||||||
|
help = 'output *.ndx file', action = 'store')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
atoms = readAtoms(args.input)
|
||||||
|
hbs = readHb(args.ndx.split(','))
|
||||||
|
selectedHbs = selectHb(atoms, hbs)
|
||||||
|
printToFile(selectedHbs, args.output)
|
Reference in New Issue
Block a user