VMD-L Mailing List
From: Josh Vermaas (vermaas2_at_illinois.edu)
Date: Fri Jan 23 2015 - 15:40:38 CST
- Next message: Maxim Belkin: "Re: within command"
- Previous message: Thomas C. Bishop: "Re: within command"
- In reply to: Maxim Belkin: "Re: within command"
- Next in thread: Maxim Belkin: "Re: within command"
- Reply: Maxim Belkin: "Re: within command"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
If you aren't aiming for visualization, measure contacts does what you
want exactly, generating two lists, with the index for the atom in the
pair in corresponding lists.
set sel [atomselect top "name \"O.*\""]
set twolists [measure contacts 3.0 $sel]
for {set i 0} { $i < [llength [lindex $twolists 0]] } { incr i} {
puts "[lindex $twolists 0 $i] [lindex $twolists 1 $i] are a pair"
}
For visualization, you'd just cat them together.
-Josh
On 01/23/2015 02:44 PM, Maxim Belkin wrote:
>> 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
>>> radial distribution analysis.
>>>
>>> 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
>>>
>>> Thanks in advance,
>>> 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.
>
- Next message: Maxim Belkin: "Re: within command"
- Previous message: Thomas C. Bishop: "Re: within command"
- In reply to: Maxim Belkin: "Re: within command"
- Next in thread: Maxim Belkin: "Re: within command"
- Reply: Maxim Belkin: "Re: within command"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]