My sincere thanks to you Rolf! I apologize for taking so long to respond,
but I had some unexpected travel to do over the weekend. I was "not seeing"
the concept of "x=script("show chains");" -- it is not intuitively obvious
(to me) that that will create an array rather than just a string (although
it is rather flexible and handy that it does).
Thanks again!
-Tom
PS -- I've been busily working at implementing your suggestion and it does
appear to be working as expected, but I have currently gotten hung up with
something in this portion of my script causing the Jmol graphics to freeze
and stop responding. It's quite odd: the console still works.
On Fri, Aug 1, 2008 at 3:37 AM, Rolf Huehne <[EMAIL PROTECTED]> wrote:
> Thomas Stout wrote:
> > Hi All --
> >
> > Well, I've stumbled over this long enough & I need to ask for help! I
> have
> > a case where I want to step through the chains of a selection (many PDB
> > files have more than one identical protein-ligand complex per
> > crystallographic asymmetric unit and use the identical atom names and
> > residue numbering, thereby only differing in chain ID). I would like to
> use
> > the "*show chains*" command introduced in 11.5.51, since that returns
> > exactly what I need, but I admit to not fully understanding how to grab
> this
> > output into my scripting environment. I'd love to have an array that I
> > could loop through (eg "chains[0]", chains[1]", etc). I could jump back
> > and forth between javascript and JmolScript and accomplish the task with
> > something like:
> >
> > function getChainArray() {
> > var chainString = script("show chains"); //pass result of script
> into
> > variable as string
> > var chains = chainString.split("\n"); //split string on
> > linefeeds, or \r\n if Windows linefeeds
> > }
> >
> > function UseTheSelection(){
> > var chains = getChainArray();
> > for (var j=0;j<chains.length;j++){
> > jmolScriptWait("select {selected} and chains[j]};");
> > jmolScriptWait("do other stuff");
> > }
> >
> >
> > but, I really don't want to have to throw it back and forth. I'm
> guessing
> > there *must* be a simple way -- within JmolScript -- to get an array of
> > chain IDs from the current selection, but I've not come up with it yet.
> >
>
> You could use for example:
>
> x=script("show chains");
> for (i=1; i<=x.size; i=i+1);
> # do some stuff using x[i]
> end for;
>
> Unfortunately you get more lines than chains. For example with '1deh',
> containing 2 protein chains (A,B) plus an empty chain identifier " " for
> the water molecules you will get an array with 7 elements. so you still
> might have to check if it is a valid chain identifier.
>
> Currently I am using the following solution to identify valid protein
> chain identifiers:
>
> chain_id_list = array(" ","A","B","C","D","E","F","G","H","I","J","K",
> "L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c",
> "d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u",
> "v","w","x","y","z","0","1","2","3","4","5","6","7","8","9");
>
> for (i=1; i<=chain_id_list.size; i=i+1);
> selection_expression = "protein AND *:" + chain_id_list[i];
> selected_atom_count = [EMAIL PROTECTED];
> if (selected_atom_count > 0);
> # do whatever you want
> end if;
> end for;
>
> Regards,
> Rolf
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's
> challenge
> Build the coolest Linux based applications with Moblin SDK & win great
> prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Jmol-users mailing list
> Jmol-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jmol-users
>
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-users