From: Eric M. <em...@mi...> - 2015-02-23 14:23:25
|
Thanks so much, Bob! This seems to be working perfectly. The only change I had to make is that rings.length is an array of zeros. So I used rings.lines.count. I was able to get His rings with ringsh = {*}.find("SMARTS","c1cncn1", true) and then make a single array ringsall = rings + ringsh Jmol continues to amaze and delight me! Eric On 2/10/15 5:47 PM, Robert Hanson wrote: > This is what SMARTS searching does. > > rings = {*}.find("SMARTS","c1ccccc1", true) // an array of atom sets > centers = rings.xyz // centers of those atom sets; still an array > print centers[1] > print centers[2] > ... > > > On Tue, Feb 10, 2015 at 3:59 PM, Eric Martz <em...@mi... > <mailto:em...@mi...>> wrote: > > I would like to generate a list of distances between the centers of > aromatic rings, identifying the pair of residues that each distance > represents. > > I believe the following reports the center of the 6-carbon ring of > Tyr3 > in 1pgb: > > > $ load =1pgb > IMMUNOGLOBULIN BINDING PROTEIN 23-NOV-93 1PGB > TWO CRYSTAL STRUCTURES OF THE B1 IMMUNOGLOBULIN-BINDING > DOMAIN OF STREPTOCCOCAL PROTEIN G AND COMPARISON WITH NMR > found biomolecule 1: A > > // all rings: > > $ rings = {*}.find("SMARTS","c1ccccc1", true) > $ print rings.xyz > {13.123668 14.505501 26.274666} > {7.7295 15.019166 20.959} > {1.7821666 16.910334 17.072166} > {7.07 8.775001 16.5255} > {15.482834 9.6655 22.505835} > {11.408334 10.879166 21.280832} > > // just tyr > > $ rings = {tyr}.find("SMARTS","c1ccccc1", true) > $ print rings.xyz > {13.123668 14.505501 26.274666} > {1.7821666 16.910334 17.072166} > {15.482834 9.6655 22.505835} > > // with labels > > for (var i = 1; i <= rings.length; i++) { > print (rings[i])[1].label("%n%r") + " " + rings[i].xyz > } > > TYR3 {13.123668 14.505501 26.274666} > TYR33 {1.7821666 16.910334 17.072166} > TYR45 {15.482834 9.6655 22.505835} > > If I had such lists, how would I generate a list of distances between > > the ring-centers, being able to identify the two residues for each > distance? > > > // use .xyz.distance (average position...distance....) > > for (var i = 1; i <= rings.length; i++) { > for (var j = i + 1; j <= rings.length; j++) { > print (rings[i])[1].label("%n%r") + "\t" + > (rings[j])[1].label("%n%r") + "\t" + > rings[i].xyz.distance(rings[j].xyz).format("%6.3f") > } > } > > TYR3 TYR33 14.802 > TYR3 TYR45 6.572 > TYR33 TYR45 16.423 > > > :) > > > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming. The Go Parallel Website, > sponsored by Intel and developed in partnership with Slashdot Media, is your > hub for all things parallel software development, from weekly thought > leadership blogs to news, videos, case studies, tutorials and more. Take a > look and join the conversation now. http://goparallel.sourceforge.net/ > > > _______________________________________________ > Jmol-users mailing list > Jmo...@li... > https://lists.sourceforge.net/lists/listinfo/jmol-users |