Role of inter- and intra-molecular hydrogen bonding on structure

30 views
Skip to first unread message

sajid iqbal

unread,
Aug 30, 2017, 10:30:34 PM8/30/17
to Sire Users
Hello sire community,

I performed Molecular dynamics simulations on polymer with Amber and Gromcas. The results showed the formation of compact and aggregated structures due to inter- and intra-molecular hydrogen bonding. I have performed MC simulations with Sire using Rigid body and Internal moves and did not observe the same behavior. I would appreciate your kind response to know if Sire can capture the influence of inter- and intra-hydrogen bondings in conformational sampling.

Kind regards,
Sajid

Christopher Woods

unread,
Aug 31, 2017, 4:35:40 AM8/31/17
to sire-...@googlegroups.com

  Dear Sajid,

Sire does calculate the inter and intramolecular energy of molecules fully, including hydrogen bonding interactions, assuming that all molecules are fully parameterised. I assume that you are using an Amber-type forcefield and are loading the molecules up from Amber prmtop and ascii coordinate files?

I suspect that the problem is that Monte Carlo is not a good method of sampling polymer melts, at least how it is implemented in Sire. What Monte Carlo moves are you using? If they are just RigidBodyMC and InternalMove then these are unlikely to efficiently sample conformational space fully for polymers (especially if the polymers are longer than 10-12 heavy atoms in the chain). Different types of Monte Carlo move are needed to sample polymers, which are not implemented in Sire, and would need to be coded in.

To give more feedback, I'd need to know more about your simulation, i.e. how are you running Sire (custom script or top-level program, and if custom script, then it would help if I could take a look). Also, I'd need to know what polymer you are investigating, i.e. just a rough size of polymer in terms of chain length and number of chains in the box would be enough.

  Best wishes,

  Christopher




--
You received this message because you are subscribed to the Google Groups "Sire Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sire-users+unsubscribe@googlegroups.com.
To post to this group, send email to sire-...@googlegroups.com.
Visit this group at https://groups.google.com/group/sire-users.
For more options, visit https://groups.google.com/d/optout.



--
---------------------------------------------------------
Christopher Woods
+44 (0) 7786 264562
http://chryswoods.com

sajid iqbal

unread,
Sep 1, 2017, 12:21:06 AM9/1/17
to Sire Users
Dear Prof. Christopher Woods,

Thank you for your response. I am working with polyethylene glycol [H-(O-CH2-CH2)n-OH where n is from 70 to 180] of molecular weights in the range of 3 to 8 kDa. I performed MC simulations using a single, and multiple molecules (25-200) in a box, by uploading the Amber prmtop and inpcrd input files in Sire. I believe, I am using top-level program to perform the conformational sampling using Rigid body, and InternalMoves as described in MC methods for Biomodelling: Part 2 tutorial. For the testing purpose, I can use a small sized polymer up to ten monomers in a single molecule case, while up five or more molecules in multiple molecule case.

I am pretty comfortable in writing python scripts using Sire, and can write script for additional MC moves for hydrogen bonding with some guidance.

Kind regards,



On Thursday, August 31, 2017 at 2:35:40 AM UTC-6, Christopher wrote:

  Dear Sajid,

Sire does calculate the inter and intramolecular energy of molecules fully, including hydrogen bonding interactions, assuming that all molecules are fully parameterised. I assume that you are using an Amber-type forcefield and are loading the molecules up from Amber prmtop and ascii coordinate files?

I suspect that the problem is that Monte Carlo is not a good method of sampling polymer melts, at least how it is implemented in Sire. What Monte Carlo moves are you using? If they are just RigidBodyMC and InternalMove then these are unlikely to efficiently sample conformational space fully for polymers (especially if the polymers are longer than 10-12 heavy atoms in the chain). Different types of Monte Carlo move are needed to sample polymers, which are not implemented in Sire, and would need to be coded in.

To give more feedback, I'd need to know more about your simulation, i.e. how are you running Sire (custom script or top-level program, and if custom script, then it would help if I could take a look). Also, I'd need to know what polymer you are investigating, i.e. just a rough size of polymer in terms of chain length and number of chains in the box would be enough.

  Best wishes,

  Christopher



On 31 August 2017 at 03:30, sajid iqbal <sajidi...@gmail.com> wrote:
Hello sire community,

I performed Molecular dynamics simulations on polymer with Amber and Gromcas. The results showed the formation of compact and aggregated structures due to inter- and intra-molecular hydrogen bonding. I have performed MC simulations with Sire using Rigid body and Internal moves and did not observe the same behavior. I would appreciate your kind response to know if Sire can capture the influence of inter- and intra-hydrogen bondings in conformational sampling.

Kind regards,
Sajid

--
You received this message because you are subscribed to the Google Groups "Sire Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sire-users+...@googlegroups.com.

To post to this group, send email to sire-...@googlegroups.com.
Visit this group at https://groups.google.com/group/sire-users.
For more options, visit https://groups.google.com/d/optout.

Christopher Woods

unread,
Sep 1, 2017, 10:14:54 AM9/1/17
to sire-...@googlegroups.com

  Dear Sajid,

Would you be ok sending me a copy of the script and top/crd you have written? (personal message is fine)

The tutorial provided instructions to learn about how to run Monte Carlo simulations, but it missed out some details, e.g. periodic boxes, maximum move deltas etc. I'd like to see how much you have included and to add in extra bits that may help.

Even with this though, I am not confident that it will work. Your polymers are quite large and I worry that Monte Carlo is not good enough to properly sample their conformational space. The more complex moves need to be implemented in C++ as Sire is really a set of C++ libraries that are exposed to Python. For example, take a look at the code for InternalMove here


The function "InternalMove::move(...)" is the one in which the molecule is actually moved (e.g. changing the bond, angle and dihedral lengths).

  Best wishes,

  Christopher



To unsubscribe from this group and stop receiving emails from it, send an email to sire-users+unsubscribe@googlegroups.com.

To post to this group, send email to sire-...@googlegroups.com.
Visit this group at https://groups.google.com/group/sire-users.
For more options, visit https://groups.google.com/d/optout.

sajid iqbal

unread,
Sep 2, 2017, 1:53:12 AM9/2/17
to Sire Users
Dear Prof. Christopher Woods,

Thank you for kind response. I have attached two different test cases of small sized polymers, with a single (Files: internal_sim.py (main file), test.inpcrd, test.prmtop) and multiple molecules (Minim.py (main file),Myfunctions.py,testbox.dat, testbox.inpcrd, testbox.prmtop). Kindly inform me if any of the file is missing or does not work. I can also write function in C++ as well but have less command in C++ compare to Python. I am looking forward your guidance on how can I implement inter- and intra- hydrogen bondings and , and what does it require?

Kind regards,
internal_sim.py
test.inpcrd
test.prmtop
flex_system.s3
Minim.py
Myfunctions.py
testbox.dat
testbox.inpcrd
testbox.prmtop

Christopher Woods

unread,
Sep 3, 2017, 7:03:11 AM9/3/17
to sire-...@googlegroups.com

  Hi Sajid,

I've attached a script that runs a Monte Carlo simulation with full inter and intramolecular energies evaluated for either your test or testbox systems. The full electrostatic energy is evaluated, including hydrogen bonds. 

When you run this on the test.inpcrd/prmtop system you can see the limited amount of backbone motion that is obtained using normal MC. Also, I noted near the end of the simulation that the hydrogen on the end gets far too close to one of the oxygens, suggesting there isn't a LJ interaction between this hydrogen and the oxygen. I've not had time to check this, but you may want to double check the parameters.

I suggest that you play with the flexibility of the molecule to try to improve the intramolecular bond/angle/dihedral sampling using the single molecule simulation. You want to see the single molecule fold up nicely before you try to use the same flexibility on the multi-molecule simulation. If you can't get the single molecule simulation to work, then you may need to look at enhanced sampling MC moves, e.g. crankshaft moves (not implemented yet in Sire). Alternatively look at mixed MC/MD hybrid Monte Carlo moves. These are implemented. Julien Michel implemented these and can provide advice.

  Best wishes,

  Christopher




To unsubscribe from this group and stop receiving emails from it, send an email to sire-users+unsubscribe@googlegroups.com.

To post to this group, send email to sire-...@googlegroups.com.
Visit this group at https://groups.google.com/group/sire-users.
For more options, visit https://groups.google.com/d/optout.
runsim.py

Julien Michel

unread,
Sep 3, 2017, 10:11:55 AM9/3/17
to sire-...@googlegroups.com
Hi Sajid,

You can try running your input files with somd from the command line
to see if MD sampling gives you the expected behaviour. See tutorials
for instructions

http://siremol.org/tutorials/somd/

If that does the trick you may be able to study the source code to
merge sections of the somd python script with yours.

Best wishes,

Julien


--------------------------------------------------------------
Dr. Julien Michel,
Royal Society University Research Fellow
Room 263
School of Chemistry
University of Edinburgh
West Mains Road
Edinburgh, EH9 3JJ
United Kingdom
phone: +44 (0)131 650 4797
http://www.julienmichel.net/
-------------------------------------------------------------

sajid iqbal

unread,
Sep 7, 2017, 3:23:55 AM9/7/17
to Sire Users
Dear Prof. Christopher Woods, and Prof. Julien,

I am very thankful for your support and assistance. I found that the runsim.py formed compact structures for small sized molecules, as seen in MD simulations. I have tried to execute somd and I am getting the following error message. I tried with and without box dimensions, and water solvation in the Amber input files, but did not help. My simulations run fine by using the simtk.openmm package as described in example here (http://docs.openmm.org/6.1.0/userguide/application.html).

somd -t PG8000s.prmtop -c PG8000s.inpcrd
Starting somd: number of threads equals 4

Using parameters:
===============
crdfile == PG8000s.inpcrd
topfile == PG8000s.prmtop
===============

### Running Molecular Dynamics simulation on unknown ###
###================Setting up calculation=====================###
"FILE: /home/sajid/Downloads/Sire-2016.3.1/corelib/src/libs/SireMove/openmmmdintegrator.cpp, LINE: 387, FUNCTION: void SireMove::OpenMMMDIntegrator::initialise()"
Index GPU = 0
Loaded a restart file on which we have performed 0 moves.
There are 660 atoms in the group
###===========================================================###

###=======================somd run============================###
Starting somd run...
1000 moves 1 cycles, 2 ps simulation time

Cycle =  1
Traceback (most recent call last):
  File "/home/sajid/sire.app/pkgs/sire-2016.3.1/share/Sire/scripts/somd.py", line 125, in <module>
    OpenMMMD.run(params)
  File "/home/sajid/sire.app/lib/python3.6/site-packages/Sire/Tools/__init__.py", line 172, in inner
    retval = func()
  File "/home/sajid/sire.app/lib/python3.6/site-packages/Sire/Tools/OpenMMMD.py", line 1458, in run
    system = moves.move(system, nmoves.val, True)
UserWarning: Exception 'SireError::invalid_cast' thrown by the thread 'master:main'.
Cannot cast from an object of class "SireVol::Cartesian" to an object of class "SireVol::PeriodicBox".
Thrown from FILE: /home/sajid/Downloads/Sire-2016.3.1/corelib/src/libs/SireBase/property.cpp, LINE: 120, FUNCTION: void SireBase::Property::throwInvalidCast(const char*) const
__Backtrace__
(  0) /home/sajid/sire.app/bin/../lib/libSireError.so.2016 ([0x7f3464abf551] ++0x41)
  -- SireError::getBackTrace()

(  1) /home/sajid/sire.app/bin/../lib/libSireError.so.2016 ([0x7f3464abc0fb] ++0xab)
  -- SireError::exception::exception(QString, QString)

(  2) /home/sajid/sire.app/bin/../lib/libSireBase.so.2016 ([0x7f3464f7884f] ++0x23f)
  -- SireBase::Property::throwInvalidCast(char const*) const

(  3) /home/sajid/sire.app/bin/../lib/libSireMove.so.2016 ([0x7f344c215d04] ++0x84)
  -- SireVol::PeriodicBox const& SireBase::Property::asA<SireVol::PeriodicBox>() const

(  4) /home/sajid/sire.app/bin/../lib/libSireMove.so.2016 ([0x7f344c210193] ++0x1f3)
  -- SireMove::OpenMMMDIntegrator::createContext(SireMove::IntegratorWorkspace&, SireUnits::Dimension::PhysUnit<0, 0, 1, 0, 0, 0, 0>)

(  5) /home/sajid/sire.app/bin/../lib/libSireMove.so.2016 ([0x7f344c2122a5] ++0x55)
  -- SireMove::OpenMMMDIntegrator::integrate(SireMove::IntegratorWorkspace&, SireCAS::Symbol const&, SireUnits::Dimension::PhysUnit<0, 0, 1, 0, 0, 0, 0>, int, bool)

(  6) /home/sajid/sire.app/bin/../lib/libSireMove.so.2016 ([0x7f344c15e8d8] ++0xe8)
  -- SireMove::MolecularDynamics::move(SireSystem::System&, int, bool)

(  7) /home/sajid/sire.app/bin/../lib/libSireMove.so.2016 ([0x7f344c1e883e] ++0x29e)
  -- SireMove::WeightedMoves::move(SireSystem::System const&, int, bool)

/home/sajid/sire.app/lib/python3.6/site-packages/Sire/Move/_Move.so(+0x2676bc) [0x7f344b46a6bc]
(  9) /home/sajid/sire.app/bin/../lib/libboost_python.so ([0x7f345e443bdd] ++0x27d)
  -- boost::python::objects::function::call(_object*, _object*) const

/home/sajid/sire.app/bin/../lib/libboost_python.so(+0x28d98) [0x7f345e443d98]
( 11) /home/sajid/sire.app/bin/../lib/libboost_python.so ([0x7f345e436a83] ++0x63)
  -- boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const

/home/sajid/sire.app/lib/python3.6/site-packages/Sire/Error/_Error.so(+0x25b9) [0x7f345e2155b9]
( 13) /home/sajid/sire.app/bin/../lib/libboost_python.so ([0x7f345e436a58] ++0x38)
  -- boost::python::detail::exception_handler::operator()(boost::function0<void> const&) const

/home/sajid/sire.app/lib/python3.6/site-packages/Sire/Error/_Error.so(+0x2577) [0x7f345e215577]
( 15) /home/sajid/sire.app/bin/../lib/libboost_python.so ([0x7f345e43683d] ++0x3d)
  -- boost::python::handle_exception_impl(boost::function0<void>)

/home/sajid/sire.app/bin/../lib/libboost_python.so(+0x26319) [0x7f345e441319]
( 17) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f346569eade] ++0x9e)
  -- _PyObject_FastCallDict

/home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0(+0x1482bb) [0x7f346577b2bb]
( 19) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f346577e15d] ++0x26fd)
  -- _PyEval_EvalFrameDefault

/home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0(+0x145e74) [0x7f3465778e74]
/home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0(+0x1485e8) [0x7f346577b5e8]
( 22) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f346577e15d] ++0x26fd)
  -- _PyEval_EvalFrameDefault

/home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0(+0x146a60) [0x7f3465779a60]
/home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0(+0x14848a) [0x7f346577b48a]
( 25) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f346577e15d] ++0x26fd)
  -- _PyEval_EvalFrameDefault

/home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0(+0x146a60) [0x7f3465779a60]
( 27) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f3465779ee3] ++0x63)
  -- PyEval_EvalCodeEx

( 28) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f3465779f2b] ++0x3b)
  -- PyEval_EvalCode

( 29) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f34657ac6c0] ++0x130)
  -- PyRun_FileExFlags

( 30) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f34657adc83] ++0x173)
  -- PyRun_SimpleFileExFlags

( 31) /home/sajid/sire.app/bin/../lib/libpython3.6m.so.1.0 ([0x7f34657c90b5] ++0xe25)
  -- Py_Main

somd() [0x402d60]
( 33) /lib/x86_64-linux-gnu/libc.so.6 ([0x7f34639d3830] ++0xf0)
  -- __libc_start_main

( 34) somd ([0x4033e9] ++0x29)
  -- _start

__EndTrace__
Exception 'SireError::invalid_cast' thrown by the thread 'master:main'.
Cannot cast from an object of class "SireVol::Cartesian" to an object of class "SireVol::PeriodicBox".
Thrown from FILE: /home/sajid/Downloads/Sire-2016.3.1/corelib/src/libs/SireBase/property.cpp, LINE: 120, FUNCTION: void SireBase::Property::throwInvalidCast(const char*) const

Kind regards,

Julien Michel

unread,
Sep 7, 2017, 5:39:05 AM9/7/17
to sire-...@googlegroups.com
Dear Sajid,

This error normally happens when there is no periodic box information
in the crd file because in the absence of a user provided config file,
somd attempts by default to use a periodic cutoff.
Try to adapt a config file from one of the somd tutorials (e.g.
http://siremol.org/tutorials/somd/) to run your input files.
If that still fails and the box dimensions are included in your input
post them to the ML if possible.

Best wishes,
--------------------------------------------------------------
Dr. Julien Michel,
Royal Society University Research Fellow
Room 263
School of Chemistry
University of Edinburgh
West Mains Road
Edinburgh, EH9 3JJ
United Kingdom
phone: +44 (0)131 650 4797
http://www.julienmichel.net/
-------------------------------------------------------------


Reply all
Reply to author
Forward
0 new messages