• ## Outreach

From: Maxim Belkin (mbelkin_at_ks.uiuc.edu)
Date: Fri Jan 23 2015 - 14:44:27 CST

> On Jan 23, 2015, at 2:05 PM, Axel Kohlmeyer <akohlmey_at_gmail.com> wrote:
>
> On Fri, Jan 23, 2015 at 2:04 PM, Thomas C. Bishop <bishop_at_latech.edu> wrote:
>> Dear VMD,
>> I"m looking for a quick way to generate a list of atom pairs that are within
>> a specified distance of each other.
>> e.g find oxygen atoms that are within say 3A of each other.
>>
>> I thought I could use the within command
>> set sel [atomselect top "within 3 of name O" ]
>>
>> This selects all atoms within the specified distance (in Å) from a
>> selection,
>> BUT ALSO INCLUDES THE SELECTION ITSELF.
>>
>> So the above sel includes ALL atoms named O b/c each oxygen is within 3 of
>> itself :-)
>>
>> Maybe it's just Friday but I dont' see a simple solution here.
>> This selection is being used to highlight various pairs associated with a
>>
>> Any tips,tricks or solutions greatly appreciated.
>
> you want to use "exwithin" instead of "within".

.. and a little bit of coding.

For example, one could use a very (ultra?) slow script like this:

# result: pairlist with a list of pairs
#####################
set pairlist {}

set sel [atomselect top "name OH2"]
set sellist [\$sel list]

foreach index \$sellist {
set selection [atomselect top "name OH2 and exwithin 3 of index \$index"]
set n [\$selection num]
if {\$n > 0} {
set selectionlist [\$selection list]
for {set i 0} {\$i < \$n} {incr i} {
set idx [lindex \$selectionlist \$i]
set pair [lsort [list \$index \$idx]]
if {\$pair ni \$pairlist} {
lappend pairlist \$pair
}
}
}
\$selection delete
}

\$sel delete
#############################

Maxim

>
> axel.
>
>> Is it worthwhile to suggest a " -self" option be added to the within command
>>
>> Tom.
>>
>>
>>
>>
>> --
>> *******************************
>> Thomas C. Bishop
>> Tel: 318-257-5209
>> Fax: 318-257-3823
>> www.latech.edu/~bishop
>> ********************************
>
>
>
> --
> Dr. Axel Kohlmeyer akohlmey_at_gmail.com http://goo.gl/1wk0
> College of Science & Technology, Temple University, Philadelphia PA, USA
> International Centre for Theoretical Physics, Trieste. Italy.