An automatic generator of OPLS-AA force-field parameters for organic molecules and ligands — bond, angle, dihedral and Lennard-Jones terms with 1.14*CM1A or 1.14*CM1A-LBCC partial charges, ready for the major molecular-dynamics packages.
Powered by BOSS — the group's Monte Carlo engine does the work behind this form.
Before you can simulate a small molecule — a drug candidate, a ligand, a solvent — a computer needs its full force field: the numbers describing how each of its atoms bonds, bends, twists, and interacts with everything around it. Working those out by hand is slow and easy to get wrong.
LigParGen puts that job one paste away. Give it a molecule — as a SMILES string or a structure file — and it hands the work to BOSS, the group’s simulation engine, which assigns the OPLS-AA atom types and computes the CM1A partial charges. LigParGen then writes what comes back out as a complete parameter set — every bonded term included — formatted for GROMACS, OpenMM, AMBER, CHARMM and seven more packages.
That convenience is why LigParGen is cited in well over a thousand studies — it turns a fiddly, error-prone setup step into a few seconds.
A single atom or ion, such as Na+, Cl- or argon, was refused with “LigParGen parameterizes molecules, not single atoms or monatomic ions”. Those that BOSS's oplsaa.par has parameters for now run with exactly those parameters: He, Ne, Ar, Kr, Xe; F-, Cl-, Br-, I-; Li+, Na+, K+, Rb+, Cs+; Mg2+, Ca2+, Sr2+, Ba2+; and La3+, Nd3+, Eu3+, Gd3+. The net charge now follows a charged structure by itself: type [Na+] and it is set to +1. An ion BOSS has no parameters for, such as Zn2+, is still refused, with the list of those that run.
Some structure files written by BOSS from its own Z-matrices, such as many molecules from BOSS's library, failed with “BOSS did not finish, so there are no parameters to read. Its last message was: (its output was empty)”. These files put one atom exactly where LigParGen places one of its three dummy atoms. An earlier fix moved that atom only when it came first, but LigParGen reorders the atoms, so it was often second or later. Any atom on a dummy atom's position is now moved off it. All 140 of BOSS's 1,625 library molecules that failed this way now get parameters, with the same atom types as BOSS's own tools, and your files keep your structure's coordinates.
When an atom of the structure lay on the line through two of the helper (dummy) atoms the Z-matrix is built from, as tetrahydropyran's oxygen does in files written by BOSS, the molecule still built, but with part of it turned about that line, up to 2 Å from your coordinates. Such atoms are now moved clear first, like those sitting exactly on a dummy atom.
In the DESMOND .cms file, a coordinate below −10 Å ran into the one before it (“-2.9190-10.0660”), and the file could not be read. That happened for 35 of the 1,625 molecules in BOSS's library. Coordinates are now separated.
OpenMM's force-field file matched improper torsions to atoms in its own order, not BOSS's. At the molecule's own shape the energy was right, but at any other shape, such as during a simulation, the improper energy was wrong. The OpenMM loader in the download now applies BOSS's impropers, charges and Lennard-Jones parameters atom by atom.
GROMACS, AMBER, CHARMM, X-PLOR, TINKER, Q and PQR wrote partial charges to 4 decimals and OpenMM to 6, so the programs disagreed by up to 0.06 kcal/mol on the same molecule. Every format now carries BOSS's own 6 decimals, and GROMACS's torsion constants have 5 decimals instead of 3, which reached 0.11 kcal/mol on long chains. The programs now agree within 0.03 kcal/mol.
Since the 26 September fix for nitriles and alkynes, the 180° angle of such a group (C–C≡N, C≡C–H, N=N=N, C=C=C, O=C=O) was missing from every program's files. TINKER and NAMD stopped with “Undefined Angle” or “UNABLE TO FIND ANGLE PARAMETERS”, and the other programs let the group bend freely. The angle is back, with OPLS-AA's own parameters. AMBER's sander reports about 0.3 kcal/mol more per straight angle than OpenMM reading the same files; that comes from sander itself, which can't measure an angle very close to 180°.
X-PLOR reads atom names in a topology in capitals but takes a PDB's names as written, so any molecule with Cl or Br stopped with “atom … not found in molecular structure”. The download now includes its own .xplor.pdb with the names in capitals. Large molecules stopped with “exceeded MAXCP (PARAM) parameter --> recompile program”, or with “duplication of bond” above 100 atoms, because X-PLOR keeps only four characters of a type name. Zero torsion terms are no longer written, and the type names now fit. Finally, X-PLOR-NIH refused the nonbonded settings given in the .param header, and its default shifted electrostatics changed the energy. The header now gives settings X-PLOR accepts, with plain Coulomb. Across BOSS's library, X-PLOR now agrees with OpenMM within 0.03 kcal/mol on all but very large or strained molecules (within 0.02% of the energy).
For a molecule with no torsions, such as methane, ammonia or CO2, LAMMPS stopped with “Invalid data file section: Dihedrals”, because the data file had an empty section. Long chains, such as a 50-carbon alkane, stopped with “Did not assign all atoms correctly”, because the box was always 50 Å wide. Empty sections are no longer written, and the box now fits the molecule. LAMMPS now runs every molecule in BOSS's library and agrees with OpenMM.
TINKER builds an improper torsion only when its central atom is the third on the imptors line. LigParGen wrote it second, so TINKER silently left out every improper torsion: 1.3 kcal/mol on carvone, 7.7 on camphor. The fourth Fourier term of each torsion was also left off (0.33 kcal/mol on atorvastatin), and a molecule of more than 100 atoms stopped with “Undefined Atom Types”. All three are fixed. Across BOSS's library of 1,625 molecules, TINKER now agrees with GROMACS and OpenMM to within 0.03 kcal/mol.
Atoms that are equivalent by symmetry could get different partial charges: urea's two nitrogens came out as −1.364 and −1.385, and guanidinium's three nitrogens differed by up to 0.45. LigParGen computed the CM1A charges once, on the starting 3D shape, and a slightly lopsided shape gave lopsided charges. The charges now come from BOSS's own charge cycle (CM1A charges, then an OPLS-AA optimization, three times), as the earlier LigParGen version did: urea's nitrogens are both −1.327, and equivalent atoms get the same charge. Your files keep your structure's own coordinates, and atom types, bonds, angles and torsions are unchanged. Charges for other molecules shift a little too, since they are now computed on BOSS's optimized shape. Runs take longer, a minute or two for the largest molecules, and the page now waits for them.
A structure file whose first atom sits exactly at x = 1, y = 1, z = 0 (the frame BOSS uses when it writes out the Z-matrices of its own molecule library) gave BOSS a bond of length zero: that atom landed on one of the helper (dummy) atoms the Z-matrix is built from. The run ended with “LigParGen timed out — try a smaller molecule or fewer optimizations”, even for a molecule as small as aspirin. The atom is now moved clear first, every output file keeps your coordinates, and such files run in seconds.
A structure file larger than 1 MB, such as a supercell of a framework or crystal, was refused before it reached LigParGen, but the page showed “Couldn’t reach the parameter service” instead of the reason. Such a file is now stopped as soon as you choose it, with its size, the 1 MB limit, and how to parameterize a fragment instead: LigParGen handles one molecule of up to about 110 non-hydrogen atoms.
After an uploaded file failed, the button “Try a fresh 3D shape” rebuilt the molecule from the file's atoms and bonds. A PDB file does not say which bonds are double or triple, so the rebuild read every bond as single and added hydrogens to fill them: acetonitrile came back as ethylamine. The bond types are now worked out from the hydrogens the file already has, no atoms are added, and the rebuild is refused if the molecule would change. No one had used the button on a PDB file before this was fixed.
Some molecules, most often with a terminal alkyne, stopped with “ERROR in atom order”, depending on the 3D shape: the same SMILES could fail several times and then work. After putting the atoms in order, LigParGen worked out the bonds again from the distances between atoms, and for some shapes it missed a bond that was there. It now uses the molecule's own bonds whenever the two disagree; molecules where they agreed come out exactly as before.
A structure file with three atoms on an exactly straight line — C–C≡N at 180°, as drawing programs write a nitrile or an alkyne — could end with “LigParGen stopped without producing parameters for this molecule … BOSS did not finish”. With the line exactly straight, the hydrogens on the end carbon had no direction to be placed from, so all three were put on the same spot and BOSS stopped. Such a line is now bent by a tenth of a degree (a few thousandths of an ångström) before the run, and the molecule runs; its charges match the same molecule built in an ordinary 3D shape. Allene, which failed the same way, now runs too. The 26 September fix for nitriles and alkynes covered lines that were nearly straight, not exactly.
A two-atom molecule such as N₂ uploaded as a PDB file ended with “LigParGen stopped without producing parameters for this molecule, for a reason it does not explain”, however often it was tried. Typed as SMILES it was already turned away with the reason; a file slipped past because the check first filled in missing hydrogens, which made two bonded nitrogens look like hydrazine. A file with two atoms and no carbon — N₂, O₂, Cl₂, HCl and the like — now gets the same explanation before the run: LigParGen's OPLS-AA atom types are for atoms in larger molecules, and a model made for small gas molecules, such as TraPPE's for N₂ and O₂, is the one to use.
“Send this molecule to the lab” attached the SMILES as a file our mail labelled a multimedia file (.smi is also the extension of one), and it arrived without the molecule. It is now sent as text, and written into the message as well. If you sent us a typed molecule before 23 October, please send it again.
A typed SMILES of more than about 152 atoms, run with optimization rounds, could end with “The structure could not be read (RDKit could not interpret the file)” — about a file nobody had uploaded. Two things lay behind it: building the 3D shape from the SMILES sometimes failed, and the molecule was in any case too large for BOSS's geometry optimizer, which holds at most 450 variables. The 3D shape is now built with a second RDKit method before falling back to Open Babel; a shape that still cannot be built is reported as a problem with the SMILES; and a molecule too large to optimize is told so before the run starts, with what to do: set “Optimization rounds” to 0, and the parameters are produced from the 3D shape as built.
For some large molecules typed as SMILES, RDKit's standard method for building the 3D shape took minutes, so the run was stopped with “LigParGen timed out — try a smaller molecule or fewer optimizations” even with 0 optimization rounds. When that method has not finished within 15 seconds, the shape is now built by a faster one (plain distance geometry, then a short MMFF clean-up), which keeps the E/Z double bonds and stereocentres your SMILES specifies, and the run continues from it. Molecules the standard method handles in time are built exactly as before.
The LAMMPS input script set the pair, bond, angle and dihedral styles but not the improper one, so for any molecule with impropers — an aromatic ring, a carbonyl, an amide — LAMMPS stopped with “Must define improper_style before Improper Coeffs”. The data file writes impropers in cvff form, which is OPLS's improper term exactly, and the script now says improper_style cvff. Its fixed box walls (boundary f f f) also lost atoms when a larger molecule was minimised (“Angle atoms … missing”); the box now follows the molecule (boundary m m m). The parameters themselves were always right: checked on nine molecules, LAMMPS and GROMACS agree to 0.015 kcal/mol, and a short constant-energy run keeps the total energy steady. If you have older files, add improper_style cvff after the dihedral_style line and change boundary f f f to boundary m m m.
The PDB we send had no CONECT records, so OpenMM could not match the residue and ForceField.createSystem stopped with “no bonds between its atoms”. It now carries them. Separately, OpenMM's force-field format cannot express the geometric combination rule OPLS is parameterised with, so loading the XML on its own gives energies about 0.5 kcal/mol out on a molecule the size of aspirin, and more in solution. Every run now also includes a .py file that builds the system with the right rule — use it, and OpenMM agrees with GROMACS.
The data file was right, but we sent nothing to say which conventions it was written with, and two of LAMMPS's defaults are wrong for OPLS — its special_bonds removes the 1-4 interactions OPLS keeps at half strength, which on ethanol is 20.9 kcal/mol where the answer is 9.5. Every run now includes a .in file with the units, styles, geometric mixing and 1-4 scaling. Run it as it stands and it prints the energy.
The topology declared RESI MOL while the PDB beside it used the name you asked for, so psfgen could not find the residue. It now uses your name in both. And NAMD mixes Lennard-Jones radii arithmetically whatever the NONBONDED line asks for, which put the van der Waals energy out by about 10%; the OPLS rule is now written out as NBFIX entries, which NAMD honours. NAMD and GROMACS now agree to 0.0001 kcal/mol.
Three faults, all in what X-PLOR was told rather than in the parameters. The multiplicity of a torsion has to be declared in the topology as well as the parameter file, or X-PLOR reads the first of its four Fourier terms and drops the rest — torsion energy −0.3 kcal/mol where it should be 2.8. The nonbonded block we documented is not recognised outside a parameter statement, so the 1-4 electrostatic scaling was silently ignored, worth 9 kcal/mol on ethanol. And X-PLOR has no setting for the geometric combination rule, so it is now written out as NBFIX entries, one per pair of atom types.
Every OPLS convention was already in the key file, but nothing said so, and Tinker stopped before doing anything to ask for a parameter file that does not exist — with no terminal to press Enter in, it failed outright. One line, parameters NONE, says the parameters are there.
The .gro was written with three decimals in nanometres, ten times coarser than the three decimals in ångström of the PDB in the same download. The same molecule therefore reached GROMACS at a slightly different shape from every other program — 0.7 kcal/mol on ethanol, which is rounding and not the force field. It now carries six decimals, which GROMACS reads and which matches the PDB.
The CHARMM and Q coordinate files stopped after the last atom. A strict reader keeps going: X-PLOR's coordinate statement carried on through the file and swallowed the commands after it.
A molecule above about 152 atoms cannot be geometry-optimized by BOSS: its optimizer holds at most 450 internal coordinates, a limit built into the program. BOSS said so in its own output and then stopped, but nothing read that file, so the run ended with a bare Python message (“AttributeError: 'NoneType' object has no attribute 'group'”) that looked like a problem with your structure. The reason is now reported instead, with the numbers for your molecule and what to do: run it again with 0 optimization rounds and the parameters are produced from the geometry you supplied. Nothing else about large molecules has changed — only optimization has this ceiling.
A ligand taken from a PDB file often names its hydrogens 1H10, 2H10, 3H10. We kept those names in the files we send back, but GROMACS's pdb2gmx moves a leading digit to the end (H101, H102, H103) when it reads the coordinates, so the topology no longer matched them and gmx grompp stopped with “non-matching atom names”. Names starting with a digit are now rotated the same way before anything is written, so every file agrees. Names that already start with a letter, including every name LigParGen generates itself, are unchanged.
A structure with nothing but monatomic ions, such as lithium chloride, passed the check and then stopped with an error that didn't explain why. It is now flagged before the run: LigParGen parameterizes molecules, so use your force field's standard ion parameters for each ion.
BOSS's charge calculation handles at most 250 atoms, hydrogens included. Larger molecules, such as long alkane chains (C83H168 and up), passed the size check and then stopped with “'NoneType' object has no attribute 'group'”. They are now flagged before the run, with how to split the molecule into fragments that fit.
Molecules of only two atoms stopped with “IndexError: list index out of range”. OPLS-AA atom types are not built for them: when we made them run, no bond was written and CO's carbon was typed as an alkane carbon. They are now flagged before the run, with what to use instead: a model made for small gas molecules (such as TraPPE's for N2 and O2), or Cl- and Br- ion parameters for HCl and HBr in water.
A SMILES copied from a polymer repeat unit, such as *CC*, has open ends marked *, and the run stopped with an error. It is now flagged before the run, with how to fix it: cap each * with a hydrogen or a methyl group (*CC* becomes CCCC), or for a polymer use a capped trimer.
Structures saved from a drawing program with their hydrogens left implicit stopped with an error ending in “'NoneType' object has no attribute 'group'”. They are now flagged before the run, with how to fix it: enter the molecule as SMILES or save it with explicit hydrogens.
Borane and carborane cages were rejected with “This file could not be read”, which suggested re-exporting the file might help. They are now recognised and the page explains why LigParGen cannot parameterize them: cage atoms are bonded to five or six neighbours, which OPLS-AA atom types do not describe.
Flat 2D structures, such as PubChem's 2D SDF or a drawing program's export, can place unbonded atoms closer together than a bond. LigParGen then joins them and the run stopped with “'NoneType' object has no attribute 'group'” or “ERROR in atom order”. These files are now flagged before the run: upload a 3D structure (PubChem's 3D conformer SDF works) or enter the molecule as SMILES.
Some larger molecules, such as alkylthiophene oligomers, stopped with “invalid literal for int() with base 10: 'are'” because a note BOSS writes among its torsion parameters was read as data. They now run normally.
A file with many molecules, such as a box built with Packmol, was rejected with “This file could not be read”. The page now says how many separate molecules the file holds and to submit one molecule, or a capped repeat unit for a polymer.
Ions such as perchlorate, chlorate, bromate and periodate stopped with an error ending in “has no attribute 'GetBonds'”. OPLS-AA has no atom types for a halogen with more than one bond, so they are now refused before the run with a clear message and a pointer to published ion parameters.
Neutral amino acids labelled as standard residues (MET, GLY, …) with the acid hydrogen on the atom named O stopped with an error ending in “has no attribute 'GetBonds'”. They now run normally.
Files with more than one molecule, atoms missing a bonded partner, an odd electron count, elements BOSS cannot type, or too many atoms are now flagged under the file in about a second, all at once and with how to fix each, instead of failing after the run.
Molecules with a linear group, such as benzonitrile, acetonitrile or phenylacetylene, failed with two or more optimization rounds, and a structure drawn with an exactly 180° angle could run until it timed out. They now run normally.
PDB files that use HETATM rather than ATOM records are now accepted, and a run that would have returned all-zero charges is stopped with an explanation.
44 in all — scroll inside the box
If your problem is listed here, please run it again — whether the run failed or finished: several of these gave files that ran, with the wrong numbers.
Citation count from Google Scholar, October 2026. Map from the peer-reviewed research citing LigParGen (doi:10.1093/nar/gkx312; via OpenAlex).
Dodda, L. S.; Cabeza de Vaca, I.; Tirado-Rives, J.; Jorgensen, W. L. LigParGen Web Server: An Automatic OPLS-AA Parameter Generator for Organic Ligands. Nucleic Acids Res. 2017, 45, W331–W336. doi:10.1093/nar/gkx312
Dodda, L. S.; Vilseck, J. Z.; Tirado-Rives, J.; Jorgensen, W. L. 1.14*CM1A-LBCC: Localized Bond-Charge Corrected CM1A Charges for Condensed-Phase Simulations. J. Phys. Chem. B 2017, 121, 3864–3870. doi:10.1021/acs.jpcb.7b00272 (for 1.14*CM1A-LBCC charges)
Jorgensen, W. L.; Tirado-Rives, J. Molecular Modeling of Organic and Biomolecular Systems Using BOSS and MCPRO. J. Comput. Chem. 2005, 26, 1689–1700. doi:10.1002/jcc.20297