[AMBER-Developers] A Parameter File Editor (that DOESN'T pipe everything through leap); parmed.py

From: Jason Swails <jason.swails.gmail.com>
Date: Fri, 30 Sep 2011 23:25:33 -0400

Hello everyone,

I'll try to avoid rambling here... Awhile ago I began a small project with
several aims:

1) I wanted to get rid of the laborious procedure of running ambpdb-PDBs
through leap (I hope you remembered to keep your leap.logs,
off/mol2/prepins, and leaprcs!) just to do something like change the
charge/LJ parameters of an atom or change the PBRadii set you wanted to use,
and instead be able to modify the topology file directly (faster, cleaner,
and "safer" in some respects).

2) I wanted to provide a program that is easy to use, easy to understand,
and easy to modify for your prmtop-hacking needs

3) Lastly, I wanted to provide a central location for prmtop modification
scripts to break the current trend (to which I'm a contributor) of "new
program for new prmtop modification"

The program I wrote, parmed.py, should be easy to use (hopefully) because it
operates just like ptraj and cpptraj (only instead of playing with
trajectories it plays with topology files). It's hopefully easy to modify
because it's written in python with only a tiny number of steps to add new
functionality (API documentation forthcoming), and I have yet to see a more
readable language than Python.

I've fully documented all of its (known) functionality in the latest
AmberTools.lyx file (Miscellaneous programs->parmed), so I'll only briefly
outline some of its more attractive features (IMO).

1) Change atomic properties (in bulk if you want), such as charge, mass,
name, type name, GB/PB radius, or screening parameter of an atomic
selection. (Charges are e-charges, amber conversions are done before writing
and after reading)
2) Change the PBRadii to any of mbondi, mbondi2, bondi, amber6, or mbondi3
(currently the only place in the git repo to get Carlos & Co.'s new igb=8
radii modifications)
3) Dump an FRCMOD file with all of the parameters found in the topology file
and/or an OFF file with every residue (termini properly adjusted) in your
4) Combine adjacent "molecules" for your wrapping pleasure.
5) In the off-chance that tleap gets your (strange system's)
ATOMS_PER_MOLECULE/SOLVENT_POINTERS section messed up (Ross and I have seen
it happen), this can correct it
6) Convince programs that ions are either solute or solvent molecules (your
choice, whatever difference that makes).
7) Change specific LJ pairwise interactions (impossible in vanilla leap --
you can specify NTYPES depths and NTYPES radii, which creates ~NTYPES**2 LJ
parameters via combination rules)*
8) Support for chamber prmtops
9) All atom selections are done with a (mostly) full amber mask parser
implemented in python. Rather than devise and write a pythonic
implementation from the ground up, I basically copied the mask parser in
(cp)ptraj and adjusted for C/Python syntax differences. As such, I would
appreciate any reports about the mask parser not working properly (all of
the common uses I've found work fine, like :1,8,10-20,26.%CT,CX, but I know
I haven't been exhaustive in my testing). printDetails will spit out every
atom (with atomic properties) which helps verify a mask's (im)proper
10) Write out as many topology files as you want after whichever
modifications as you want (similar to Dan's outtraj in cpptraj).
11) Change scee/scnb like you used to be able to in the mdin file.
12) Built-in help: just type "help" to get a list of actions and "help
action" to get a description of how to use that action and what it does.
13) It will NOT overwrite your original prmtop unless you *explicitly* give
it permission to (setOverwrite True)

and most importantly,
14) Random greeting art with a customizable input prompt

*LJ terms are slightly complex in the prmtop file such that changing only
one specific atom pair interaction requires each atom to have its own LJ
type so you don't change every other atom that shares the same LJ type.
parmed can add LJ types as well to accomplish just this. This effectively
implements FIXNB from the CHARMM world through the topology file (perhaps
most useful for chamber topologies).

I've found this program helpful whenever I've had to do prmtop modifications
(like charge interpolation for perturbed prmtops in H-REMD), and perhaps
(hopefully) it'll be helpful to others as well. The test directory contains
examples of how to run it: $AMBERHOME/AmberTools/test/parmed for both normal
and chamber prmtops.

Questions, comments, suggestions, bug reports, feature suggestions/requests
are all highly appreciated. If anything about it (like documentation) is
confusing or ambiguous, I'd like to know so I can fix/improve it.


Jason M. Swails
Quantum Theory Project,
University of Florida
Ph.D. Candidate
AMBER-Developers mailing list
Received on Fri Sep 30 2011 - 20:30:02 PDT
Custom Search