From: William Ray (ray.29_at_osu.edu)
Date: Thu Sep 27 2012 - 13:09:55 CDT

Another data point.

If I pull on a residue using a mouse->residue force, and add, say 5.5kcal/mol/A to the simulation and then wait for it to stretch the h-bonds to the maximum, but not break them, then middle-click to remove that force, switch to mouse->atom forces, and add on the order of 2kcal/mol/A to an atom of the same residue, I'll stretch the 10ala more, breaking a few h-bonds in the process. If I remove that single atom force, the system "recoils" to about where it was before the addition of the single atom force, but not back to the no-force state. If I add, and then delete forces on all of the atoms of that same residue, the behavior remains the same - the system acts as though the "residue force" remained present on the residue atoms. Behaviors are similar regardless of the temperature for the simulation.

A possible alternative explanation would be if all _other_ forces on the molten segment were deleted at the same time the IMD force was deleted, leaving the system with only velocities. I don't think this could quite account for the behavior I'm seeing, but I can't completely rule it out.

Without digging in the code enough to follow how forces are being passed from VMD into NAMD, it looks like perhaps when forces are attached to a residue they're sent in some form of "append" mode into NAMD (where canceling them appends a zero force, instead of removing the applied force), whereas individual atom forces are sent in such a fashion as they're added, and subtracted?

I'm having a bit of difficulty getting VMD to compile under Lion, so I'm a bit away from being able to test enough to start to understand the guts.

Thanks again,
Will Ray

On Sep 27, 2012, at 11:51 AM, William Ray wrote:

>
> Hmmm...
>
> ufx, ufy and ufz seem to be correctly zeroed across the entire molecule when the force is removed.
>
> Nonetheless, the molecule continues to fall apart, as though forces were still present.
>
> Forgive me for not knowing the VMD internals well enough yet, but it looks like ufx/y/z are external forces? Is there another set of variables we could look at for full integrated per-atom forces?
>
>
> Thanks much!
> Will Ray
>
>
>
>
> (Main< (ray) 32 % set sel [atomselect top "resid 2 to 10"]
> atomselect18619
>
>
>> Main< (ray) 33 % set force [$sel get {ufx ufy ufz}]
> {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0}
 {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0}
>
>
>> Main< (ray) 34 % set force [$sel get {ufx ufy ufz}]
> {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0}
 {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898} {-0.3580720126628876 -0.11941620707511902 0.15656539797782898}
>
>
>> Main< (ray) 35 % set force [$sel get {ufx ufy ufz}]
> {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0}
 {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0} {0.0 0.0 0.0}
>
>
>
> On Sep 27, 2012, at 11:15 AM, John Stone wrote:
>
>> Hi,
>> Can you use an atom selection and print out the active values of
>> "ufx", "ufy", and "ufz" before and after you try and reset the
>> forces to zero?
>>
>> I just read through the code, and the Mouse-based IMD code is indeed
>> trying to zero-out the forces when you press the middle or right mouse
>> buttons when applying forces to residues. It is possible that there's a
>> bug in the code that manages the force list or that the residue case is
>> following an unexpected code path, but we should be able to determine
>> where the problem is by watching the values of ufx/ufy/ufz as it runs.
>> You can use a callback to trigger the atom selection query/printing
>> if you prefer.
>>
>> Cheers,
>> John Stone
>> vmd_at_ks.uiuc.edu
>>
>> On Thu, Sep 27, 2012 at 10:57:52AM -0400, William Ray wrote:
>>>
>>> VMD 1.9.1 and NAMD 2.9 on MacOS 10.7.4
>>>
>>> I'm seeing what seems to be a bug in IMD/AutoIMD when using the mouse to apply a force to a residue. Specifically, when the force is released in the interface, it doesn't actually appear to be removed from the simulation.
>>>
>>> This is demonstrable with the deca-alanine tutorial PDB and PSF, using either the 10ala tutorial dedicated process, or loading the 10ala files and using AutoIMD.
>>>
>>> When a force is applied to a single atom, 10ala stretches, h-bonds break, etc. Middle-clicking on the atom to which the force was applied makes the red force-arrow disappear, and 10ala generally "springs back". h-bonds reform, etc.
>>>
>>> When a force is applied to a residue, multiple force-arrows appear, 10ala stretches, and even if I middle-click to remove the force immediately after the first h-bond breaks (all red force-arrows disappear), 10ala will continue stretching in the direction of the originally applied force, breaking all the other h-bonds until it is a stretched linear chain, and will never spring back. The interface does show zero for the applied force, after middle-clicking to remove it.
>>>
>>> This happens nomatter how small a force I attempt to apply to a residue. If it's sufficient to break a single h-bond, even after middle-click removing the force, 10ala will be inexorably unfolded, never to regain structure.
>>>
>>>
>>> My guess is that the middle-click is not deleting forces from all the atoms where a force was applied, but I don't know how to diagnose this further.
>>>
>>>
>>> Yes, I'm working on getting a Phantom set up, but the mouse will have to do until I get a spare linux box for the office.
>>>
>>> Any suggestions?
>>> Will Ray
>>> OSU Biophysics
>>>
>>
>> --
>> NIH Resource for Macromolecular Modeling and Bioinformatics
>> Beckman Institute for Advanced Science and Technology
>> University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801
>> http://www.ks.uiuc.edu/~johns/ Phone: 217-244-3349
>> http://www.ks.uiuc.edu/Research/vmd/ Fax: 217-244-6078
>>
>>
>