Releases: jewettaij/moltemplate
check for missing masses
Moltemplate (specifically "lttree_postprocess.py") now complains whenever the user fails to specify the mass of one of the particle types in the "Data Masses" section.
(This assumes that a "Data Masses" section exits. If not, moltemplate prints a warning message. Moltemplate does not force users to define a "Data Masses" section. But if one is present, moltemplate will check that all atom type masses are defined there.)
atom type names in Masses section of DATA file are consistent
Atom type names are now listed as comments in the Masses section of the DATA files generated by moltemplate for all popular force fields supported by moltemplate. (The atom type names will now be consistent with the string following "@atom:") The scripts that convert these force field files into LT format have been updated for python3 compatibility. The "cleanup_moltemplate.sh" script has been updated to preserve these atom type names (and not erase them). Finally, the "ltemplify.py" script now has a "-preamble" argument allowing users to prepend text at the beginning of the files generated by "ltemplify.py".
fixed a bug in cleanup_moltemplate.sh and ltemplify.py
A bug in ltemplify.py was preventing the cleanup_moltemplate.sh script from working correctly sometimes. In particular some files from the ATB database were causing it to fail. Thanks to Alberto Zoccante (Università del Piemonte Orientale) for reporting the bug!
pair_coeff commands can now appear anywhere
- Fixed bug preventing "pair_coeff" commands from being understood correctly if they appear outside of the "system.in.settings" file (ie. outside the "In Settings" section). (This is the place where those commands usually appear.) Now "pair_coeff" commands can appear in any file created by the user, and they will be post-processed correctly (even if the @atom-variable-names contain wildcards).
- Made some additions to the moltemplate_manual including a new chapter on creating (and using) force fields.
edge case bug
fixed a bug preventing generation of helpful error messages in response to non-sensical user input (eg "@atom:"). The previous version would crash with an uncaught exception when presented with this input:
write_once("In Settings") {
pair_coeff @atom:WallParticle/W @atom:
}
Molecule {
write("Data Atoms") {
$atom:w $mol:. @atom:W 0.0 0.0 0.0 0.0
}
}
(The syntax error in this example is on line 2. The new version of ttree.py and moltemplate.sh generate error messages instead of crashing.)
fixed python3 specific bug involving ".."
fixed a python3-specific bug in ttree.py causing expressions containing ".." (like "@atom:../A") to sometimes cause an uncaught exception. Example:
MoleculeTypeA {
write_once("In Settings") {
@atom:../A
}
}
MoleculeTypeB {
}
These kinds of expressions should work again now. (The A leaf node should be created in "/" now.)
updated the manual and fixed 2 bugs
updated the manual. updated dump2data.py. fixed a bug reading triclinic boundary conditions from PDB files that affects some versions of awk. Corrected the README file for the EFF example.
fixed a minor edge-case bug in genpoly_modify_lt.py
Previous versions of genpoly_modify_lt.py would crash when told to make 0 modifications. The current version handles this edge case more gracefully. Several examples and README files were also updated.
COMPASS bug fix
fixed a bug in COMPASS and "msifrc2lt.py" causing low priority dihedrals and impropers to occasionally override high priority ones
infrastructure, regex, COMPASS improvements
Summary:
This release contains infrastructure improvements for parsing text, as well as bug fixes for the COMPASS force field as well as the "msifrc2lt.py" converter script.
Infrastructure:
- Greater consistency with the way wildcards and regular expressions are handled. All rules for generating angles, dihedrals, impropers, and looking up bond types and charge-by-bonds, as well as all pair_coeff, bond_coeff, angle_coeff, dihedral_coeff, and improper_coeffs can accept wildcards and regular expressions (eg "@atom:re.c[1-6]") . (NOTE: Regular expressions have not been tested yet, but the infrastructure for supporting them is finally there.)
- Counter variables ($ and @) can no longer contain , or () characters. (In the future, this will make it much easier to create source code for programming languages. Note to self: The +-=/. characters are still allowed. The / and . characters are used for path resolution and should never be forbidden.)
COMPASS: The "msifrc2lt.py" script has been (hopefully) fixed and is now able to convert the COMPASS force field files again. This made it possible to fix 2 bugs in the "compass_published.lt" force field file: 1) wildcards are now given low priority instead of high priority, and 2) non-hybrid bond, angle, dihedral, improper, and pair styles are used by default (for KOKKOS compatibility). Also: Commas were removed from the atom type names (and replaced with ~ characters).