From: Sadegh Faramarzi Ganjabad (safaramarziganjabad_at_mix.wvu.edu)
Date: Fri Apr 27 2018 - 11:38:34 CDT

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
>>>
>>
>>
>