-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Inconsistent Reporting of Dihedral Energies #391
Comments
Hi there, This is a known behaviour due to the way our parsers work. Apologies that this wasn't clearer. It's tricky because of the way that dihedrals are represented in different engines and how they are treated when interconverting between one format and another. In practice, both are dihedrals, and for AMBER, the current parser collects both propers and impropers together (as you see). I'll have a think if there's an easy way to make things consistent. However, I think it would require quite a bit of reworking to several parsers. Thanks for catching the typo in the GROMACS log file extractor. I'll update that when I get a chance. |
Going forward I need to think of a way of flagging which |
OK, thank you for the clarification. No problem. |
Apologies if I'm missing something, but it's still not clear to me why getDihedralEnergy() can't return the total dihedral energy, given that AMBER, GROMACS, and NAMD all support either finding the total dihedral energy, or both its proper and improper components. As in, why can't this line:
Be changed to
and similarly for NAMD? This would prevent confusing behavior where changing the engine results in different output from getDihedralEnergy() (e.g. I'm assuming the discrepancy between dihedral angle energies you show here is because the improper energy isn't included for GROMACS #289 (comment)). Why couldn't the function getProperEnergy could then be implemented only for GROMACS and NAMD, as is getImproperEnergy? Thanks very much! |
No problem, that makes sense. I guess I would need to remove the return self.getRecord("PROPERDIH", time_series, _Units.Energy.kj_per_mol, block) + self.getRecord("IMPROPERDIH", time_series, _Units.Energy.kj_per_mol, block) Something like this should work, but the logic would need to be changed since records return I'll add a note to implement this when I get a moment. Cheers. |
Hello,
The reporting of dihedral energies between AMBER and GROMACS seems to be inconsistent. For AMBER, getDihedralEnergy() reports the total dihedral energy, whereas in GROMACS, getDihedralEnergy() only reports the proper dihedral energy. This means that the dihedral energy for AMBER is the sum of the dihedral and improper energies for GROMACS:
I've attempted to show this using a BioSimSpace script, but getImproperEnergy() returns None for GROMACS, I'm guessing because IMPRPROPERDIH" should be "IMPROPERDIH" here:
BioSimSpace/python/BioSimSpace/Sandpit/Exscientia/Process/_gromacs.py
Line 1359 in 0fc24e0
However, I can confirm this by checking the outputs.
The script and input files to reproduce are here: dihedral_issue.tar.gz.
It might be clearer if getDihedralEnergy in GROMACS and NAMD returned the total dihedral energy, and separate functions were created for querying the proper and improper components.
Thanks.
The text was updated successfully, but these errors were encountered: