From: Ashar Malik (asharjm_at_gmail.com)
Date: Fri Apr 27 2018 - 12:23:12 CDT

Please note that calculation of RMSD is a sub-optimal process. You can
never truly know if the solution is good enough.
Since this is just a warning and not an error, I am guessing you do get a
result? which I think you should. Is that result reasonable? If it is you
can ignore the warning.

On Sat, Apr 28, 2018 at 4:38 AM, Sadegh Faramarzi Ganjabad <
safaramarziganjabad_at_mix.wvu.edu> wrote:

> Hello,
>
> Thank you all for your comments. I have 385 lipids, but the error happened
> even for smaller number of residues. It seems deleting selections solves
> the problem. Now it does not take too much of memory, although it gives
> that error
>
> Matrix: Warning: no convergence (0.00000000<2177.16064453 after 1000
> iterations).
>
> Best,
> Sadegh Faramarzi,
> Research Assistant
> West Virginia University, Department of Chemistry
> Email:safaramarziganjabad_at_mix.wvu.edu
>
> On Fri, Apr 27, 2018 at 10:21 AM, Udaya Dahal <dahal.udaya_at_gmail.com>
> wrote:
>
>> If you want to delete all atom selection after each run, just use
>> foreach sel [atomselect list] {$sel delete}
>>
>> otherwise you have to explicitly delete variables as Brian mentioned.
>>
>> Regards,
>>
>> On Fri, Apr 27, 2018 at 9:59 AM, Brian Radak <brian.radak_at_gmail.com>
>> wrote:
>>
>>> +1 to Giacomo.
>>>
>>> For the record (although you should really read the documentation!) the
>>> syntax for deleting a selection freeing up memory is:
>>>
>>> <selection value> delete
>>>
>>> as in this pseudocode:
>>>
>>> set compare [atomselect top "residue 1"]
>>> for # iterate frames {
>>> $compare frame $frame
>>> <measure>
>>> }
>>> $compare delete
>>>
>>> I would hazard a guess that VMD attempts to clean up all such objects
>>> whenever it exits, but it will almost always be much better to delete them
>>> explicitly.
>>>
>>> On Fri, Apr 27, 2018 at 8:01 AM, Giacomo Fiorin <
>>> giacomo.fiorin_at_gmail.com> wrote:
>>>
>>>> Any atom selection created in VMD will take up memory. I'm not sure if
>>>> that's the cause in your case (how many POPC molecules are there?), but you
>>>> should remove the selections that you don't use any more. The
>>>> documentation of the atomselect command contains the syntax for that.
>>>>
>>>> Also, the "get" method for an atomselection returns the requested
>>>> property for each atom in the selection. Try printing the result of "get
>>>> residue".
>>>>
>>>> Giacomo
>>>>
>>>> On Fri, Apr 27, 2018 at 12:30 AM, Sadegh Faramarzi Ganjabad <
>>>> safaramarziganjabad_at_mix.wvu.edu> wrote:
>>>>
>>>>> Hello all,
>>>>>
>>>>> I am trying to calculate RMSD of individual lipids in a protein-lipid
>>>>> system. I found this code that aligns a single residue and gets the RMSD of
>>>>> the entire trajectory.
>>>>>
>>>>> # Prints the RMSD of the protein atoms between each timestep
>>>>> # and the first timestep for the given molecule id (default: top)
>>>>> proc print_rmsd_through_time {{mol top}} {
>>>>> # use frame 0 for the reference
>>>>> set reference [atomselect $mol "residue X" frame 0]
>>>>> # the frame being compared
>>>>> set compare [atomselect $mol "residue X"]
>>>>>
>>>>> set num_steps [molinfo $mol get numframes]
>>>>> for {set frame 0} {$frame < $num_steps} {incr frame} {
>>>>> # get the correct frame
>>>>> $compare frame $frame
>>>>>
>>>>> # compute the transformation
>>>>> set trans_mat [measure fit $compare $reference]
>>>>> # do the alignment
>>>>> $compare move $trans_mat
>>>>> # compute the RMSD
>>>>> set rmsd [measure rmsd $compare $reference]
>>>>> # print the RMSD
>>>>> puts "RMSD of $frame is $rmsd"
>>>>> }
>>>>> }
>>>>>
>>>>>
>>>>> but when I iterate this code for all lipid residues it takes a lot of memory and my computer freezes. I'm not sure why. Here is the code I'm using
>>>>>
>>>>>
>>>>>
>>>>> set selmode [[atomselect top "resname POPC"] get residue]
>>>>> #gets stdin selmode
>>>>> foreach r $selmode {
>>>>>
>>>>> # selection
>>>>> set reference [atomselect top "residue $r" frame 0]
>>>>> set compare [atomselect top "residue $r"]
>>>>> set num_steps [molinfo top get numframes]
>>>>> set output [open "rmsd_$r.dat" w]
>>>>> # rmsd calculation loop
>>>>> for {set frame 0} {$frame < $num_steps} {incr frame} {
>>>>> # get the correct frame
>>>>> $compare frame $frame
>>>>>
>>>>> # compute the transformation
>>>>> set trans_mat [measure fit $compare $reference]
>>>>> # do the alignment
>>>>> $compare move $trans_mat
>>>>> # compute the RMSD
>>>>> set rmsd [measure rmsd $compare $reference]
>>>>> # print the RMSD
>>>>> #puts "$r"
>>>>> puts $output "$rmsd"
>>>>> }
>>>>>
>>>>> close $output
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>>
>>>>> Does anybody know a better way of doing this?
>>>>>
>>>>> Thanks,
>>>>> Sadegh Faramarzi,
>>>>>
>>>>> Research Assistant
>>>>> West Virginia University, Department of Chemistry
>>>>> Email:safaramarziganjabad_at_mix.wvu.edu
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Giacomo Fiorin
>>>> Associate Professor of Research, Temple University, Philadelphia, PA
>>>> Contractor, National Institutes of Health, Bethesda, MD
>>>> http://goo.gl/Q3TBQU
>>>> https://github.com/giacomofiorin
>>>>
>>>
>>>
>>
>

-- 
Best,
/A