Becksteinlab / GromacsWrapper

GromacsWrapper wraps system calls to GROMACS tools into thin Python classes (GROMACS 4.6.5 - 2024 supported).
https://gromacswrapper.readthedocs.org
GNU General Public License v3.0
169 stars 53 forks source link

edit_mdp() should use the MDP parser #167

Open orbeckst opened 5 years ago

orbeckst commented 5 years ago

As pointed out in PR #164 , the edit_mdp() function should use the MDP parser.

This would also reduce extremely cryptic errors such as gmx grompp: -include is not an option, which happens when a custom template MDP file is used with gromacs.setup.MD() but the template does not contain an include = ... line, which edit_mdp() tries to replace but fails. The failed replacement is then interpreted as a commandline option for gromacs.grompp. Although that's pretty hacky/crappy code logic in the https://github.com/Becksteinlab/GromacsWrapper/blob/cda0874a6469238197e1bef2bd51274b5c80f641/gromacs/setup.py#L796 function, writing a better edit_mdp() (which could, for instance, insert variables as opposed to a simple search and replace, or could check if they are legal variables) would help.

orbeckst commented 5 years ago

For checking if input is legal: run gromacs.grompp() with an empty empty.mdp and then parse the resulting default mdout.mdp for all parameters that are legal with this version of Gromacs.

Actually, we should just create these lists for supported versions of Gromacs so that the function can also be used without gmx being available.