Google
      
发新话题
打印

[经验总结] Errors in GROMACS simulation procedure(大家继续补充)

本主题由 cycle 于 2008-6-28 22:12 推荐主题

Errors in GROMACS simulation procedure(大家继续补充)

The vast majority of error messages generated by GROMACS are descriptive, informing the user where the exact error lies. Some errors that arise are noted below, along with more details on what the issue is and how to solve it.


General
Cannot allocate memory
The executed script has attempted to assign memory to be used in the calculation, but is unable to due to insufficient memory.
Possible solutions are:
install more memory in the computer.
use a computer with more memory.
reduce the scope of the number of atoms selected for analysis.
reduce the length of trajectory file being processed.
in some cases confusion between Ångström and nm may lead to users wanting to generate a water box that is 103 times larger than what they think it is (e.g. genbox).
The user should bear in mind that the cost in time and/or memory for various activities will scale with the number of atoms/groups/residues N or the simulation length T as order N, NlogN, or N2 (or maybe worse!) and the same for T, depending on the type of activity. If it takes a long time, have a think about what you are doing, and the underlying algorithm (see the manual, man page, or use the -h flag for the utility), and see if there's something sensible you can do that has better scaling properties.

Blowing Up
"Blowing up" is a highly technical term used to describe a common sort of simulation failure. In brief, it describes a failure typically due to an unacceptably large force that ends up resulting in a failure of the integrator.
To give a bit more background, it's important to remember that molecular dynamics numerically integrates Newton's equations of motion by taking small, discrete timesteps, and using these timesteps to determine new velocities and positions from velocities, positions, and forces at the previous timestep. If forces become too large at one timestep, this can result in extremely large changes in velocity/position when going to the next timestep. Typically, this will result in a cascade of errors: one atom experiences a very large force one timestep, and thus goes shooting across the system in an uncontrolled way in the next timestep, overshooting its preferred location or landing on top of another atom or something similar. This then results in even larger forces the next timestep, more uncontrolled motions, and so on. Ultimately, this will cause the simulation package to crash in some way, since it can't cope with such situations. In simulations with constraints, the first symptom of this will usually be some LINCS or SHAKE warning or error -- not because the constraints are the source of the problem, but just because they're the first thing to crash.
Because blowing up is due, typically, to forces that are too large for a particular timestep size, there are a couple basic solutions:
Make sure the forces don't get that large, or
use a smaller timestep.
Better system preparation can help with 1, if the problems are occurring near the beginning of a simulation.

TOP

pdb2gmx

Residue 'XXX' not found in residue topology database
This means that the force field you have selected while running pdb2gmx does not have an entry in the residue database for XXX. The residue database entry is necessary both for stand-alone molecules (e.g. formaldehyde) or a peptide (standard or non-standard). This entry defines the atom types, connectivity, bonded and non-bonded interaction types for the residue and is necessary to use pdb2gmx to build a .top file. A residue database entry may be missing simply because the database does not contain the residue at all, or because the name is different.
For new users, this error appears because they are running pdb2gmx blindly on a PDB file they have without consideration of the contents of the file. A force field is not something that is magical, it can only deal with molecules or residues (building blocks) that are provided in the residue database or included otherwise.
If there is not an entry for this residue in the database, then the options for obtaining the force field parameters are:
see if there is a different name being used for the residue in the residue database and rename as appropriate,
parameterize the residue / molecule yourself,
find a topology file for the residue / molecule and include as a .itp file,
use another force field which has parameters available for this,
search the primary literature for publications for parameters for the residue that are consistent with the force field that is being used.

Long bonds and/or missing atoms
There are probably atoms missing earlier in the .pdb file which makes pdb2gmx go crazy. Check the screen output of pdb2gmx, as it will tell you which one is missing. Then add the atoms in your pdb file, energy minimization will put them in the right place, or fix the side chain with e.g. the WhatIF program.

TOP

grompp

Found a second defaults directive file
This is caused by the [defaults] directive appearing more than once in the topology or force field files for the system - it can only appear once. A typical cause of this is a second defaults being set in an included topology file, .itp, that has been sourced from somewhere else. For specifications on how the topology files work, see GROMACS Manual, Section 5.6.
[ defaults ]
; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ
1       1       no       1.0       1.0
One solution is to simply comment out (or delete) the lines of code out in the file where it is included for the second time i.e.,
;[ defaults ]
; nbfunc comb-rule gen-pairs fudgeLJ fudgeQQ
;1       1       no       1.0       1.0
A better approach to finding a solution is to re-think what you are doing. The [defaults] directive should only be appearing at the top of your .top file where you choose the force field. If you are trying to mix two force fields, then you are asking for trouble. If a molecule .itp file tries to choose a force field, then whoever produced it is asking for trouble.

Invalid order for directive defaults
This is a result of defaults being set in the topology or force field files more than once, the [defaults] section can only appear once, and is typically in the force field files. For solution see Errors#Found a second defaults directive file.
[edit] System has non-zero total charge
Notifies you that counter-ions may be required for the system to neutralize the charge or there may be problems with the topology.
If the charge is a non-integer, then this indicates that there is a problem with the topology. If pdb2gmx has been used, then look at the right hand comment column of the atom listing, which lists the cumulative charge. This should be an integer after every residue (and/or charge group where applicable). This will assist in finding the residue where things start departing from integer values. Also check the capping groups that have been used.
If the charge is already close to an integer, then the difference is caused by rounding errors and not a major problem.
Note for PME users: It is possible to use a uniform neutralizing background charge in PME to compensate for a system with a net background charge. There is probably nothing wrong with this in principle, because the uniform charge will not perturb the dynamics. Nevertheless, it is standard practice to actually add counter-ions to make the system net neutral.

Incorrect number of parameters
Look at the topology file for the system. You've not given enough parameters for one of the bonded definitions.
Sometimes this also occurs if you've mangled the Include File Mechanism or the topology file format (see: GROMACS Manual Chapter 5) when you edited the file.

Number of coordinates in coordinate file does not match topology
This is pointing out that, based on the information provided in the topology file, .top, the total number of atoms or particles within the system does not match exactly with what is provided within the coordinate file, .gro.
The most common reason for this is simply that the user has failed to update the topology file after solvating or adding additional molecules to the system, or made a typographical error in the number of one of the molecules within the system. Ensure that the end of the topology file being used contains something like the following, that matches exactly with what is within the coordinate file being used:
[ molecules ]
; Compound   #mol
Protein      1
NA+          10
SOL          10189
In a case when grompp can't find any any atoms in the topology file at all (number of coordinates in coordinate file (conf.gro, 648) does not match topology (topol.top, 0)) and that error is preceded by warnings like:
calling /lib/cpp...
sh: /lib/cpp: No such file or directory
cpp exit code: 32512
Tried to execute: '/lib/cpp  -I/usr/local/gromacs-...
The '/lib/cpp' command is defined in the .mdp file
then your system's cpp is not being found or run correctly. One reason might also be that the cpp variable is not properly set in the .mdp file.
This error can also occur when the .mdp file has been edited under Windows, and your cpp is intolerant of the mismatch between Windows and Unix end-of-line characters. If it is possible that you have done this, try running your .mdp file through the standard Linux dos2unix utility.

Fatal error: No such moleculetype XXX
Each type of molecule in your [ molecules ] section of your .top file must have a corresponding [ moleculetype ] section defined previously, either in the .top file or an included .itp file. See GROMACS Manual section 5.6.1 for the syntax description. Your .top file doesn't have such a definition for the indicated molecule. Check the contents of the relevant files, and pay attention to the status of #define variables.

T-Coupling group XXX has fewer than 10% of the atoms
It is possible to specify separate thermostats, temperature coupling groups for each and every molecule type within a simulation. This is a particular bad practice used by many new users to MDS. However, this is a bad idea to do this as you can introduce errors and artifacts that are hard to predict. In most cases it is best to have all molecules within a single group, using system. If separate coupling groups are required, then ensure that they are of "sufficient size" and combine molecule types that appear together within the simulation. For example, for a protein in water with counter ions, could use Protein and Non-Protein.

The cut-off length is longer than half the shortest box vector or longer than the smallest box diagonal element. Increase the box size or decrease rlist
This error is generated in the cases as noted within the message. The dimensions of the box is such that an atom will interact with itself (since using PBC). Which is total unrealistic and will introduce some serious artefacts. The solution is again what is noted within the message, either increase the size of the simulation box so that it is at an absolute minimum twice the cut-off length in all three dimensions (take care here if are using a constant pressure simulation as the box dimension will change and may go over the threshold only just larger) or decrease the cut-off length (depending on the force field utilised, this may not be an option).

TOP

mdrun

Stepsize too small, or no change in energy. Converged to machine precision, but not to the requested precision
This is not an error as such. It is simply informing you that during the energy minimisation process it reached the limit possible to minimise the structure with your current parameters. It does not mean that the system has not been minimised fully, but in some situations that may be the case. If the system has a significant amount of water present, then a Epot of the order of -105 to -106 is typically a reasonable value for almost all cases, e.g. starting a MDS from the resulting structure. Only for special purposes, such as normal mode analysis type of calculations, it may be required to minimise further.
Further minimisation may be achieved by using a different energy minimisation method or moving to double precision using version of GROMACS configured for this.

LINCS warnings
Sometimes, when running dynamics, mdrun may suddenly stop (perhaps after writing several pdb files) after a series of LINCS warnings are written to the log file. LINCS is a constraint algorithm often used to constrain bond lengths. When a system is blowing up (i.e. exploding due to diverging forces), the constraints are usually the first thing to fail. This doesn't necessarily mean you need to troubleshoot LINCS. Usually it is a sign of something more fundamental wrong (physically unrealistic) with your system. Perhaps you didn't minimize well enough, have a bad starting structure/steric clashes, are using too large a timestep, or are doing particle insertion in free energy calculations without using soft core. This can also be caused by a single water molecule that is isolated from the rest of water molecules, somewhere within the system.

1-4 interaction not within cut-off
Some of your atoms have moved so two atoms separated by three bonds are separated by more than the cut-off distance. This is BAD. Most important: do not increase your cut-off! This error actually indicates that the atoms have very large velocities, which usually means that (part of) your molecule(s) is (are) blowing up. If you are using LINCS for constraints, you probably also already got a number of LINCS warnings. When using SHAKE this will give rise to a SHAKE error, which halts your simulation before the "1-4 not within cutoff" error can appear.
There can be a number of reasons for the large velocities in your system. If it happens at the beginning of the simulation, your system might be not equilibrated well enough (e.g. it contains some bad contacts). Try a(nother) round of energy minimization to fix this. Otherwise you might have a very high temperature, and/or a too large timestep. Experiment with these parameters till the error stops occurring. If this doesn't help, check your topology!

Simulation running but no output
Not an error as such, but mdrun appears to be chewing up CPU time but nothing is being written to the output files. There are a number of reasons why this may occur:
Your simulation might simply be (very) slow, and since output is buffered, it can take quite some time for output to appear in the respective files. If you are trying to fix some problems and you want to get output as fast as possible, you can set the environment variable LOG_BUFS to 0 by using setenv LOG_BUFS 0, this disables output buffering. Use unsetenv LOG_BUFS to turn buffering on again.
Something might be going wrong in your simulation, causing e.g. not-a-numbers (NAN) to be generated (these are the result of e.g. division by zero). Subsequent calculations with NAN's will generate floating point exceptions which slow everything down by orders of magnitude. On a SGI system this will usually result in a large percentage of CPU time being devoted to 'system' (check it with osview, or for a multi-processor machine with top and osview).
You might have all nst* parameters (see your .mdp file) set to 0, this will suppress most output.
Your disk might be full. Eventually this will lead to mdrun crashing, but since output is buffered, it might take a while for mdrun to realize it can't write.
You are runnning an executable compiled with MPI support (e.g. LAM) and did not start the LAM daemon (lamboot). See LAM documentation.

Can not do Conjugate Gradients with constraints
This means you can't do energy minimization with the conjugate gradient algorithm if your topology has constraints defined - see here.

Pressure scaling more than 1%
This error tends to be generated when the simulation box begins to oscillate (due to large pressures and / or small coupling constants), the system starts to resonant and then crashes. This can mean that the system isn't equilibrated sufficiently before using pressure coupling. Therefore, better / more equilibration may fix the issue.
It is recommended to obseve the system trajectory prior and during the crash. This may indicate if a particular part of the system / structure is the problem.
In some cases, if the system has been equilibrated sufficiently, this error can mean that the pressure coupling constant, tau p, is too small (particularly when using Berendsen). Increasing that value with slow down the response to pressure changes and may stop the resonance from occuring.
This error can also appear when using a timestep that is too large, eg 5 fs.

TOP

阳光直树

TOP

很有帮助,谢谢!:)

TOP

不错的贴!!谢谢!!

TOP

这个很有用呀。有的时候Gromacs的一些错误提示太笼统了,搞不清楚到底错在哪儿。这个帖子好啊

TOP

thanks a lot!

TOP

好帖,lz辛苦了

TOP

学习了,谢谢!

TOP

赞助商链接

论坛之星

发新话题