michellab / Sire

Sire Molecular Simulations Framework
http://siremol.org
GNU General Public License v3.0
95 stars 26 forks source link

Restarts do not work #5

Closed ppxasjsm closed 9 years ago

ppxasjsm commented 9 years ago

Is it possible that restarts do not work using the 'current' openMMMD.py script?

ppxasjsm commented 9 years ago

/home/ppxasjsm/sire.app/bin/python() [0x40456a] EndTrace Exception 'SireStream::magic_error' thrown by the thread 'master:main'. Magic error for "SireMove::Integrator". Got 1074836238, but expected 33672432. Thrown from FILE: /home/ppxasjsm/Projects/Sire/Sire_git/Sire/corelib/src/libs/SireStream/datastream.cpp, LINE: 133, FUNCTION: SireStream::VersionID SireStream::readHeader(QDataStream&, const Sire::RegisterMetaTypeBase&)

jmichel80 commented 9 years ago

Hi Antonia,

Restarting from a previously serialized object doesn't work if you have update the data that is normally being streamed to/from a s3 file

(see the code in QDataStream SIREMOVE_EXPORT &operator<<(QDataStream &ds, const OpenMMFrEnergyST &velver) .. and /* Extract from a binary datastream / QDataStream SIREMOVE_EXPORT &operator>>(QDataStream &ds, OpenMMFrEnergyST &velver) { ...

If you want to ensure backward compatibility of the new code with old restart files you can use version numbers

See for example /corelib/src/libs/SireMove/mtsmc.cpp

Best wishes,

Julien


Dr. Julien Michel, Royal Society University Research Fellow Room 263, School of Chemistry Joseph Black Building, University of Edinburgh David Brewster Road

Edinburgh

EH9 3FJ United Kingdom phone: +44 (0)131 650 4797

http://www.julienmichel.net/

On Tue, May 5, 2015 at 4:53 PM, ppxasjsm notifications@github.com wrote:

/home/ppxasjsm/sire.app/bin/python() [0x40456a] EndTrace Exception 'SireStream::magic_error' thrown by the thread 'master:main'. Magic error for "SireMove::Integrator". Got 1074836238, but expected 33672432. Thrown from FILE: /home/ppxasjsm/Projects/Sire/Sire_git/Sire/corelib/src/libs/SireStream/datastream.cpp, LINE: 133, FUNCTION: SireStream::VersionID SireStream::readHeader(QDataStream&, const Sire::RegisterMetaTypeBase&)

— Reply to this email directly or view it on GitHub https://github.com/michellab/Sire/issues/5#issuecomment-99122905.

The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336.

ppxasjsm commented 9 years ago

Ok maybe I don't quite understand this then. Say I run a short run of 5 cycles (which finish successfully). Then rather than going back to starting from scratch, I want to use the restart file that was generated...Rerunning with the restart file in the current directory produces the error. Isn't the reason for deleting restart files, such that we always start with a new run? I just want to make sure, that my minimization/annealling isn't executed when I start from a restart file.

jmichel80 commented 9 years ago

What you described should work. Are you sure that your code is reading in the object variables in the reverse order they are written to the s3 file?


Julien Sent from my phone. On 5 May 2015 17:28, "ppxasjsm" notifications@github.com wrote:

Ok maybe I don't quite understand this then. Say I run a short run of 5 cycles (which finish successfully). Then rather than going back to starting from scratch, I want to use the restart file that was generated...Rerunning with the restart file in the current directory produces the error. Isn't the reason for deleting restart files, such that we always start with a new run? I just want to make sure, that my minimization/annealling isn't executed when I start from a restart file.

— Reply to this email directly or view it on GitHub https://github.com/michellab/Sire/issues/5#issuecomment-99132568.

The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336.

ppxasjsm commented 9 years ago

Well I don't think I have changed, the part for the restarts/saving of the system. I'll have a look tomorrow.

ppxasjsm commented 9 years ago

This thread had super helpful explanations. https://groups.google.com/forum/#!msg/sire-developers/PLPDmjrcJqQ/IQiRl-DfFkwJ I though I was reading and writing the same variables, but in the end due to the very long in and output stream I had made a mistake. Fixed now.