AtomTyping¶
AtomTyping is a simple tool that assigns atom types to molecular systems. It handles atomtyping for the GAFF, UFF, and APPLE&P force fields. For UFF there is an alternative option for metal organic frameworks (MOFS), named UFFAutograf. The AtomTyping tool is a wrapper around several other atomtyping tools (e.g. AMBER AnteChamber for GAFF atomtyping), meant to provide a common interface.
Command Line Tool¶
This is a simple example showing how to generate force field parameters for ethanol:
#!/bin/sh
$AMSBIN/atomtyping << EOF
Type GAFF
System
Atoms
C -4.537101 -0.602542 -0.008859
C -3.601843 -1.804345 0.037274
O -2.267293 -1.387375 -0.058902
H -4.301877 0.096761 0.821305
H -5.588912 -0.942676 0.095614
H -4.425039 -0.071643 -0.977931
H -3.829607 -2.474689 -0.818032
H -3.766077 -2.377916 0.977441
H -2.012143 -1.043722 0.837186
End
End
EOF
The most important input options are:
Type: The force field type for which atom types and charges should be generated. Currently GAFF is the default. Other options are UFF, APPLE&P, and UFFAutograf.
System: in the System block we specify the initial structure of the molecule for which you want to generate force field information.
The utility writes a new AMS input file for a ForceField engine job using the new forcefield parameters. The new input is written to the logfile, and it is also stored in the .rkf file. The user can change the file as needed, or import it into amsinput and change settings from there.
Tip
GAFF atomtyping by Antechamber involves an AM1 geometry optimization of all molecules, in order to determine the atomic charges. For very big systems this can be very tome consuming. There is an option to only compute AM1 single point atomic charges, with the option AntechamberTask SinglePoint. Do keep in mind that this will make the resulting force field parameters less reliable.
Python scripting¶
It is also possible to run atomtyping via Python scripting.
from scm.plams import Settings, Molecule
from scm.atomtyping import AtomTypingJob, AtomTypingResults
# Run the atomtyping job
mol = Molecule("mol.in")
settings = Settings()
job = AtomTypingJob(molecule=mol,settings=settings)
results = job.run()
# Create the forcefield job (change the settings if needed)
newjob = results.get_plamsjob()