Hi, I am trying to use openMM to perform protein docking calculations. Is there a way in openMM to just calculate the potential energies between the atoms of different interacting partners (i.e. molecules) of a system, excluding the energetic contributions that arise from the internal interactions within the molecules, without creating a ton of exceptions?
Thanks
-Jack
Exclusions for protein docking
- John Chodera
- Posts: 53
- Joined: Wed Dec 13, 2006 6:22 pm
RE: Exclusions for protein docking
Hi Jack,
Currently, OpenMM does not allow the decomposition of potential energies by groups of interacting molecules. However, on the Reference and Cuda platforms, you can have multiple Context objects in existence at the same time. This means you can do the following:
Suppose we have two proteins A and B. I create three OpenMM System objects, (1) AB, (2) A only, (3) B only. I can create a Context object for each of the three systems. To compute the AB interaction energy, I can (1) push coordinates for complex AB to the first context and compute the potential energy; (2) push coordinates of just A to the second context to compute the intramolecular energy of A; (3) push coordinates of just B to the third context to compute the intramolecular energy of B. Then the intermolecular interaction energy will be (1) - [(2) + (3)].
There's clearly some overhead in doing this, but at least it should work for now. If you think the overhead is terribly bad for your application, it's worth submitting a Feature Request to see if the developers will add support for decomposing interaction energies by molecule.
Best,
John
Currently, OpenMM does not allow the decomposition of potential energies by groups of interacting molecules. However, on the Reference and Cuda platforms, you can have multiple Context objects in existence at the same time. This means you can do the following:
Suppose we have two proteins A and B. I create three OpenMM System objects, (1) AB, (2) A only, (3) B only. I can create a Context object for each of the three systems. To compute the AB interaction energy, I can (1) push coordinates for complex AB to the first context and compute the potential energy; (2) push coordinates of just A to the second context to compute the intramolecular energy of A; (3) push coordinates of just B to the third context to compute the intramolecular energy of B. Then the intermolecular interaction energy will be (1) - [(2) + (3)].
There's clearly some overhead in doing this, but at least it should work for now. If you think the overhead is terribly bad for your application, it's worth submitting a Feature Request to see if the developers will add support for decomposing interaction energies by molecule.
Best,
John
- Peter Eastman
- Posts: 2606
- Joined: Thu Aug 09, 2007 1:25 pm
RE: Exclusions for protein docking
> However, on the Reference and Cuda platforms, you can have multiple Context objects in existence at the same time.
That should have been Reference and OpenCL, not CUDA. Actually, you can do it on CUDA too, but each Context needs to be created and accessed from a separate thread due to the way CUDA binds context information to thread state.
Peter
That should have been Reference and OpenCL, not CUDA. Actually, you can do it on CUDA too, but each Context needs to be created and accessed from a separate thread due to the way CUDA binds context information to thread state.
Peter
- John Chodera
- Posts: 53
- Joined: Wed Dec 13, 2006 6:22 pm
RE: Exclusions for protein docking
Peter,
Thanks for the correction here!
John
Thanks for the correction here!
John