Thanks, that's pretty much what I was thinking but I assumed that if I read
a variable, modified the string, and set the variable after modification, it
would now just be part of the file that would save as usual -- but it
doesn't matter exactly how it is done in the end.

 

Where is the best place to go to figure out how to do this kind of (for me
anyway) advanced scripting? I'm familiar with the command documentation at
http://chemapps.stolaf.edu/jmol/docs/. What I need guidance on is how one
puts those commands together with Javascript so that simple things like
string splitting (as you demonstrate below), regex's, and control structures
are available. You example below seems to imply that I just write Javascript
within a script file. Is that correct, that a script file can be a mixture
of Jmol-specific commands and Javascript? So far I have been using Perl to
generate script files which only contain Jmol commands because it isn't
clear to me how/where one merges those commands with Javascript.

 

Sincerely,
James Ryley

 

From: Robert Hanson [mailto:hans...@stolaf.edu] 
Sent: Monday, June 03, 2013 3:03 PM
To: jmol-users@lists.sourceforge.net
Subject: Re: [Jmol-users] showing annotations and labels

 

That's an interesting idea. Jmol already reads the SITE records and assigns
variable names to those. So, for example, in 1AI6 we have:

SITE     1 CAA  6 ASP B  73  VAL B  75  ASP B  76  GLU A 152

SITE     2 CAA  6 PRO B 205  ASP B 252

SITE     1 CAT  4 SER B   1  ALA B  69  GLN B  23  ASN B 241

SITE     1 AC1  6 GLU A 152  ASP B  73  VAL B  75  ASP B  76

SITE     2 AC1  6 PRO B 205  ASP B 252

SITE     1 AC2  9 MET A 142  PHE A 146  SER B   1  PHE B  24

SITE     2 AC2  9 SER B  67  ALA B  69  ILE B 177  ASN B 241

SITE     3 AC2  9 HOH B 572


and then:

load =1ai6

$ show site?
  site_ac1 = [GLU]152:A
[ASP]73:B
[VAL]75:B
[ASP]76:B
[PRO]205:B
[ASP]252:B
;
  site_ac2 = [MET]142:A
[PHE]146:A
[SER]1:B
[PHE]24:B
[SER]67:B
[ALA]69:B
[ILE]177:B
[ASN]241:B
[HOH]572:B
;
  site_caa = [ASP]73:B
[VAL]75:B
[ASP]76:B
[GLU]152:A
[PRO]205:B
[ASP]252:B
;
  site_cat = [SER]1:B
[ALA]69:B
[GLN]23:B
[ASN]241:B
;
  site_list = site_AC1
site_CAA
site_CAT
site_AC2
;

and then, 

select site_AC1

selects those specific atoms, for instance. 

I suspect the distinctions among UNK, UNX, UNL are lost to general PDB
users. I've only seen UNK, and it could be anything. So I think you can just
use that. 

The idea of "labeling" a site with its REMARK 800 description is not
impossible right now. A relatively simple Jmol script could do that. It
would look something like this:

function labelSite(id) {

  var desc = getProperty("fileinfo.remark800").split("SITE_IDENTIFIER:
"+id+\n")[2].split("SITE_DESCRIPTION: ")[2].split("\n")[1];

  select @{"site_"+id};

  set echo @{"label_"+id}  {selected}
  echo @id
}

As for modifying PDB files and re-saving them, that's not what Jmol is for,
and I doubt there is much interest in going there. Some cleverly written
Perl scripts could probably do that, though. No need for Jmol. Or, no need
to do that in Jmol. But, if you wanted to use Jmol for that, you could do
that by loading the file into a variable, using something like that function
to find the specific line in the file with the description, and then write
that modified variable back to a file. Not impossible.

Bob




 

 

 

On Mon, Jun 3, 2013 at 12:31 PM, James Ryley <ja...@ryley.com
<mailto:ja...@ryley.com> > wrote:

[I sent this from a different account previously. I don't think it got
posted -- sorry if it is a duplicate]

 

Greetings,

 

A few weeks ago I posed some questions about being able to use annotations
and labels via a .pdb file. I've been revisiting this possibility, going
over the pdb spec, and searching for programs that might provide useful
guidance in the way they implement such features. I finally found one, the
ICM Browser ( <http://www.molsoft.com/icm_browser.html>
http://www.molsoft.com/icm_browser.html). This program (in terms of data
usage, it's graphical implementation leaves something to be desired) does
exactly what I was thinking.

 

Specifically, it takes pdb SITE records and labels the relevant residues
with, by default, the siteID field of the SITE record. A sample SITE record
looks like this:

 

SITE 1 AC1 3 HIS A 94 HIS A 96 HIS A 119

 

Which means: Site 1 is called AC1, is composed of 3 residues, which are, in
this case, all on the "A" chain, and are Histidines at sequence numbers 94,
96 and 119.

 

Per the pdb spec, each SITE record must be associated with a REMARK 800
record, which contains a SITE_DESCRIPTION entry, like:

 

REMARK 800

REMARK 800 SITE

REMARK 800 SITE_IDENTIFIER: FREE TEXT GOES HERE.

REMARK 800 EVIDENCE_CODE: (AUTHOR or SOFTWARE or UNKNOWN)

REMARK 800 SITE_DESCRIPTION: FREE TEXT GOES HERE.

 

ICM Browser can switch between labeling a site with siteID and
SITE_DESCRIPTION. Since SITE_DESCRIPTION can be free form text of arbitrary
length, this provides a way to label a residue with essentially anything you
want, within the confines of the pdb format.

 

However, labeling a residue, if "residue" is taken to mean an amino acid,
isn't sufficient, and during the previous conversations on this topic it was
mentioned that the pdb format does not support per-atom annotation. Here I
start to guess a bit, but I think it can support per-atom annotation.

 

While residues are typically amino acids, they do not have to be. A HET
record can be used to describe non-standard residues, and HET residues can
(in addition to a dictionary of known non-standard residues) be named UNL
("Unknown Ligand"), UNK ("Unknown Amino Acid"), or UNX ("Unknown atom"). So,
arbitrary residues seem to be provided for, and those residues can be a
single atom, which implies the ability to associate a SITE, and hence a
SITE_DESCRIPTION, with any atom or atoms you choose.

 

Certainly there are details that I've missed, in terms of complying with the
pdb spec, and perhaps for users who are concerned with ADIT validation.
Also, there may be consequences to using an arbitrary residue name to alias
an atom to a SITE_DESCRIPTION. For example, what if you also need to put
that atom into a "real" residue? Can you list an ATOM/HETATM twice, as part
of two different residues? Or could you create a dummy atom at the same
coordinates as the "real" atom, as a placeholder for a label? ("DUM" seems
to be an atom abbreviation used for this purpose, although it is not
referenced in the latest spec). I don't know the answers to those questions,
but at least for my purposes these details are not all that important. It
would seem that the pdb format can support arbitrary labeling/annotation of
atoms, and presumably such information, being part of a standard pdb file,
would survive a round-trip to any other software that at least read and
wrote anything it saw in the file, even if it did not offer the ability to
act upon all the data.

 

I'd like to suggest that JMol add an ICM Browser-like ability to display and
edit SITE/REMARK 800 information (graphically -- I know JMol already reads
at least SITE information, which is accessible through scripting).

 

Regardless of whether this suggestion is implemented graphically, perhaps
scripting can accomplish these tasks already. Is it possible to go from an
ATOM/HETATM to a SITE entry, to a REMARK 800 entry, get the
SITE_DESCRIPTION, alter it, and have the alterations be saved when the pdb
file is saved?

 

Sincerely,
James Ryley

 


----------------------------------------------------------------------------
--
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net <mailto:Jmol-users@lists.sourceforge.net> 
https://lists.sourceforge.net/lists/listinfo/jmol-users




-- 
Robert M. Hanson
Larson-Anderson Professor of Chemistry
Chair, Chemistry Department
St. Olaf College
Northfield, MN
http://www.stolaf.edu/people/hansonr


If nature does not answer first what we want,
it is better to take what answer we get. 

-- Josiah Willard Gibbs, Lecture XXX, Monday, February 5, 1900

------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Jmol-users mailing list
Jmol-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-users

Reply via email to