annotate parmconv.py @ 9:6d0677a148fe draft default tip

"planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit def3e8d4a983ab47ceedde678f585b54c79bb8d1"
author chemteam
date Thu, 27 Jan 2022 17:17:20 +0000
parents 2b82fc7bec67
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
1 import argparse
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
2 import io
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
3 import sys
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
4 from contextlib import redirect_stdout
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
5
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
6 import parmed
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
7 from parmed import amber, gromacs
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
8 from parmed.tools.changeradii import ChRad
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
9
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
10
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
11 def parse_command_line(argv):
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
12 parser = argparse.ArgumentParser()
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
13 parser.add_argument('--istr', help='input structure', required=True)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
14 parser.add_argument('--itop', help='input topology file', required=True)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
15 parser.add_argument('--istripmask', help='stripmask')
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
16 parser.add_argument('--iradii', required=True, help='parmed radii are \
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
17 GB_RADII amber6,bondi, mbondi, mbondi2, mbondi3')
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
18 parser.add_argument('--removedihe', action='store_true',
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
19 default=False, help='remove dihedrals with zero \
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
20 periodicity')
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
21 parser.add_argument('--removebox', action='store_true',
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
22 default=False, help='remove periodic box info')
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
23 parser.add_argument('--o_prmtop', help='AMBER output topology',
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
24 required=True)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
25 return parser.parse_args()
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
26
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
27
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
28 def get_ids(dihedrals):
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
29 """
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
30 goes through dihedrals and looks for any with per=0.
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
31 returns a reverse sorted list of ids to be removed.
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
32 """
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
33 indices = []
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
34 for k, v in enumerate(dihedrals):
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
35 f = io.StringIO()
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
36 with redirect_stdout(f):
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
37 print(v)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
38 if f.getvalue().find("per=0") != -1:
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
39 indices.append(k)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
40 indices.sort(reverse=True)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
41 return indices
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
42
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
43
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
44 args = parse_command_line(sys.argv)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
45
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
46 gmx_top = gromacs.GromacsTopologyFile(args.itop)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
47 gmx_gro = gromacs.GromacsGroFile.parse(args.istr)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
48
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
49 if not args.removebox:
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
50 # keep box info
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
51 gmx_top.box = gmx_gro.box
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
52 gmx_top.positions = gmx_gro.positions
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
53
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
54
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
55 if args.removedihe:
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
56 ids_to_remove = get_ids(gmx_top.dihedrals)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
57 print("Original number of dihedrals %i" % len(gmx_top.dihedrals))
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
58 for i in ids_to_remove:
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
59 gmx_top.dihedrals.pop(i)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
60 print("Update number of dihedrals %i" % len(gmx_top.dihedrals))
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
61
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
62 if args.istripmask is not None:
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
63 if args.istripmask == "":
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
64 pass
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
65 else:
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
66 gmx_top.strip(args.istripmask)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
67
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
68 radii = str(args.iradii)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
69 parmed.tools.changeRadii(gmx_top, radii)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
70 amb_prm = amber.AmberParm.from_structure(gmx_top)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
71 parmed.tools.changeRadii(amb_prm, radii)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
72
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
73 if args.removebox:
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
74 amb_prm.pointers['IFBOX'] = 0
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
75
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
76 ChRad(amb_prm, radii)
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
77 for i, atom in enumerate(amb_prm.atoms):
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
78 amb_prm.parm_data['RADII'][i] = atom.solvent_radius
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
79 amb_prm.parm_data['SCREEN'][i] = atom.screen
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
80
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
81
2b82fc7bec67 "planemo upload for repository https://github.com/galaxycomputationalchemistry/galaxy-tools-compchem/ commit cc13bd32ef2d80b01dc197a3ca120a4ff9f0dacc"
chemteam
parents:
diff changeset
82 amb_prm.write_parm(args.o_prmtop)