From: Rolf H. <rh...@fl...> - 2007-11-26 12:08:40
|
Eran Hodis wrote: > Hello all, > > Please direct me to a previous group posting if the answers to my > questions have already been posted but... > > I seem to be having a problem selecting atoms by their atom numbers > using "select atomno". > > When I enter a sequence of atoms like "select atomno=30-40", I get an > error: > > select atomno=30-40 > pending > script compiler ERROR: end of expression expected > ---- > select atomno=30-40 <<<< > > ("select atomno=30" works fine. As does any selection of a single > atom number.) > > I'm using Jmol 11.3.34. > I think it just isn't implemented (yet?) to use a range in an "atomno=" expression. But if you use a slightly newer version (script below was tested with 11.3.47) you could define yourself a function that does what you want: function atomnoSelection(start_atomno,end_atomno); var sel_exp = ""; for (i=start_atomno; i<=end_atomno; i=i+1); if (sel_exp = ""); sel_exp = "atomno=" + i; else; sel_exp = sel_exp + " OR atomno=" + i; end if; end for; if (sel_exp != ""); sel_exp = "(" + sel_exp + ")"; end if; return sel_exp; end function; I surrounded the resulting expression with brackets in order to be able to use it in combination with any other expression. You could use the function for example like this: select @{atomnoSelection(30,40)} and */1 This would select atoms 30-40 of model 1. You can take a look at the output of the function with the "print" command: print atomnoSelection(1,5); Isn't it amazing what is possible now with Jmol scripting? Regards, Rolf |