!!!!!!! If you miss functionality please send suggestions !!
@ christophgil @ googlemail .com

STRAP-scripting language

The STRAP-alignment can be controlled with Web-links. This page explains how scripts are included in Web-pages. An alphabetic list of all script commands is found here.

When a link in this page is clicked, the example proteins are loaded and the script lines are executed in STRAP. Please watch the Web-addresses in the browser's status line when the mouse pointer hovers over the links.

Embedding in forms: The script text and the list of proteins to be loaded are contained in hidden input fields within an html form. The html code looks as follows:
        <form  action="http://www.bioinformatics.org/strap/strap.php"  method="POST"  style="display:inline;" >
          <input  type="hidden"  name="load"       value="List of protein IDs "  >
          <input  type="hidden"  name="script"     value="...the script text..." >
          <input  type="SUBMIT"  name="SUBMIT" value="Click here"  style="display:inline;" >      
The field with name "load" contains the protein entries to be loaded. Alternatively, the name "align" or "alignAndRearange" can be used. In this case the proteins are aligned after loading. The field with the name "script" contains the script. The script is run after all proteins are loaded. The style attributes prevent line breaks before and after the submit button.

Problems: Java-confirmation dialogs might be hidden behind the browser. If the response of the Browser after pressing the link is too slow, then clear the "Downloads" window in the web browser.

Java-Web-start: STRAP is a Java-Webstart application. It is not available as a so-called web browser embedded because this technology has proven to be inefficient for complex applicatrions like STRAP.

Security: STRAP and included Bioinformatics tools have full access to the user's files. For file modifications, there is an embedded security check which permits modification of files only within the project directory. Please see Security.html. Users may be concerned about running applications on their computer from program authors they do not know. Therefore the STRAP-lite version has been created which does not offer the full functionality for security reasons: It cannot run native code and cannot run Java code unless specified in the jnlp file.


The command "close" removes all proteins from the view. The following example links will load a new set of proteins for the commands to act on.

  close *    

  gaps x---xxxxx-xxxxxxxxxxxxxx--------------------xxxxxxxxxxxxxxxxx , subtilisin.pdb     Run
Gaps are inserted into the protein. This may be used to infer the gaps of a multiple sequence alignment that is computed on a server. The gaps are specified by a string of letters and non-letter characters.

  align hslv_ecoli hslv_bacsu hslv_haein     Run
A number of proteins are aligned. If at least two of the proteins have a 3D-structure then 3D-superposition is used to improve the alignment.

  close hslv_bacsu     Run
Removes the protein.

Residue Annotation

  new_selection subtilisin.pdb/myAnnotation1, a_new_group, 10-30,32    
The residue annotation with name "myAnnotation1" is created. The residues are 10-30 and 32. It is found in the node "a_new_group" of the graphical tree. This tree is usually not visible. It becomes visible when the vertical divider located at the very left is dragged to the right.

  new_aminoacid_selection subtilisin.pdb/myAnnotation2, a_new_group, 3:-5:     Run
For pdb-proteins, the residue number can be specified using the Rasmol notation "residue-number:chain". The chain can be left off if there is only one.

  set_annotation subtilisin.pdb/myAnnotation1, Color, #FF0000     Run
  set_annotation subtilisin.pdb/myAnnotation1, Color, #FF00FF     Run
The Color is specified with command set_annotation which is similar to add_annotation (see below). The only difference is that all previous values are removed before adding the new one. The command set_annotation is used when there should only be one annotation with the given key, here "Color".

  add_annotation subtilisin.pdb/myAnnotation1, Balloon, Example of a balloon message which appears when the mouse is over the underlining     Run
The residue selection "myAnnotation1" has been created with the previous commands. If it does not exist, then an error message will appear. Annotated residue selections contain a set of key-value pairs. The keys are "Note", "Balloon", "Color" etc.. The key-value pair ("Balloon","Example of...") is added to the annotation. Double click the annotation or open "View/edit annotation" from the Context-menu to see the stored information.

  add_annotation subtilisin.pdb/myAnnotation1, Balloon, Another line     Run
With add_annotation, more text can be added. Annotations with the key "Balloon" appear in the

  delete subtilisin.pdb/myAnnotation1     Run
Deletes the residue annotation.

Residue Annotation from BioDAS services

  DAS_features CSA%20-%20extended uniprot cbs_total netphos netoglyc , hslv_ecoli     Run
The given DAS services are contacted to obtain the sequence features. The sequence features appear as underlining. The first feature demonstrates of white space within names.

The DAS-features which are shown as underlinings under the sequences can be dragged with the mouse to 3D views like Astex. See below, how to open a 3D-view.

Residue selections and Displaced positions

Consider, the residues 80 to 90 "CLEASGMQCPI" of the protein P29590.
  close *
load UNIPROT:P29590
ants UNIPROT:P29590/80-90
scroll_to UNIPROT:P29590/80-90  
Now let's load PFAM:PF00097 and highlight these residues in Pfam.
  close *
load PFAM:PF00097
new_aminoacid_selection UNIPROT:P29590/select80_to_90, myTest, 80-90
scroll_to UNIPROT:P29590/80-90  
However in earlier PFAM-releases the selection, had been displaced by 2 amino acids because it it had been using an earlier UNIPROT version of UNIPROT P29590. This is a rare situation but might occure due to sequence updates in Uniprot entries.
Solution to the Problem: Specification of the sequence object:
  new_aminoacid_selection UNIPROT:P29590/select80_to_90, myTest, REFERENCE=UNIPROT:P29590 80-90     Run


  wire subtilisin.pdb    
  wire subtilisin.pdb PDB:1wmd_A PDB:1v6c_A     Run
The C-Alpha atom trace of the protein structures are shown.

  wire PDB:1v6c_A     Run
Proteins can be specified by name. But they can also be specified by the expression they were loaded with or by an accession or PDB id. In the URL the protein is loaded with "PDB:1v6c_A".

  wire .*pdb     Run
The proteins matching the regular expressions *\.pdb are added to the 3D-view of subtilisin.pdb. If subtilisin.pdb is not yet in a 3D-view, then a new 3D panel is created.

  close_wire *     Run
Closes the C-alpha trace of all proteins.

  project_coordinates PDB:1ned_A , hslv_bacsu
wire hslv_bacsu  
The Swissprot file hslv_bacsu contains only the amino acid sequence. The 3D-coordinates of PDB:1ned_A will be infered. The PDB-file can refer to the smae protein or to a homologous protein. A sequence alignment algorithm is used for mapping the postition.
  project_coordinates AUTO , hslv_ecoli
wire hslv_ecoli  
If the pdb ID is not known, "AUTO" indicates that STRAP should automatically search for the best structure. This may even fail. It depends on precomputed blast results.

  superimpose subtilisin.pdb PDB:1wmd_A PDB:1v6c_A
wire subtilisin.pdb PDB:1wmd_A PDB:1v6c_A  
A number of proteins are superimposed three-dimensionally. The optimal reference structure is selected automatically. After superimposition all but one proteins are in a new coordinate system. The user can restore the original coordinates: Context-menu-of-proteins>3D.

  rotate_translate NULL , subtilisin.pdb PDB:1wmd_A PDB:1v6c_A     Run
Restore original coordinates:

  rotate_translate -0.51 -0.69 0.50 0.22 0.45 0.86 -0.82 0.55 -0.80 91.15 25.13 55.68 , subtilisin.pdb     Run
The rotation matrix (9 numbers) and the translation vector (3 numbers) are applied.
        X' = X *  -0.51 +  Y *  -0.69 +  Z *   0.50 +   91.15
        Y' = Y *   0.22 +  Y *   0.45 +  Z *   0.86 +   25.13
        Z' = Z *  -0.82 +  Y *   0.55 +  Z *  -0.80 +   55.68

  load PDB:1a34
wire PDB:1a34_A  
  select_3D $ANY_WIRE, PDB:1a34
3D_biomolecule -1  
  select_3D $ANY_WIRE, PDB:1a34
3D_biomolecule 0x2  
Show 1 or the respectively. The biological units are given as a decimal or hexadecimal bit masks. For example 0x8 denotes the biological unit 3 since 2^3=8. Also see the BIOMT lines in PDB files.


A protein-complex consist of several peptide chains. If two multimeric proteins are loaded, the script command "superimpose" can not be applied because it would also superimpose non-homologous chains of the same multimeric structure.

For the structural comparison of two protein-complexes the command superimpose_protein_complexes can be used. Now knowledge of which chains are matching is needed.

  load PDB:1scg PDB:1a0r
wire PDB:1scg PDB:1a0r
superimpose_protein_complexes PDB:1scg PDB:1a0r  
For superimposing these two heter-trimeric G-proteins, the superpositions of all three chains of PDB:1scg versus the three chains of PDB:1a0r is probed. Comparing the score values of these nine superpositions shows that the chains PDB:1A0R_B PDB:1SCG_B are very similar. Having identified this pair of similar peptide chains, the superposition of the two complexes will be based on these chains.

If it is already known, which chains from either complex are best matching, these chains can be directly superimposed. Then the resulting transformation matrix can be applied to the other chains in the complex using the command rotate_translate_protein_complex.

  superimpose PDB:1SCG_B PDB:1A0R_B     Run
  rotate_translate_protein_complex PDB:1A0R_B , PDB:1A0R_B     Run
  rotate_translate_protein_complex PDB:1SCG_B , PDB:1SCG_B     Run


Strap contains full featured 3D-molecule viewers such as OpenAstex.

  open_3D myView , subtilisin.pdb 1wmd.pdb PDB:1v6c_A    
The three proteins (given after the colon) are loaded into the same 3D view. The 3D-view is called "myView". This id will be used in the subsequent commands.

  select_3D myView , subtilisin.pdb
3D_select 20-30,35
3D_spheres on  
The respective residues are shown as spheres. Residue numbering starts at 1. To refer to the pdb-residue numbering, please use the Rasmol syntax "number-colon-chain". For example "20:A" means amino acid with number 20 in chain A.

  select_3D myView , subtilisin.pdb
3D_select 20-30,35
3D_spheres off  

  select_3D myView , subtilisin.pdb
3D_select 100-130.CA.CB
3D_spheres on  
The atoms can be specified. Asterisks are allowed as for example ".N*" denoting all nitrogen atoms.

  select_3D myView , subtilisin.pdb
3D_select 100-120
Move the view such that the selection is centered in the viewer panel. Otherwise, the change might remain unnoticed when it is beyond the screen border.

There are many other style commands which can be used in this context. See menu of the 3D-view.

  close_3D myView , subtilisin.pdb     Run
Removes a protein from view "myView".

  close_3D myView     Run
Removes the entire 3D-view "myView".

  use_3D_viewer jmol     Run
The prefered 3D-viewer can be selected. The above 3D-commands are viewer-independent and should work more or less with all 3D-programs embedded in STRAP.
  use_3D_viewer astex     Run

  use_3D_viewer pymol     Run

Change order of proteins

  to_row 1, hslv_ecoli    
  to_row 3, hslv_ecoli     Run
  to_row 99 , hslv_ecoli     Run
  to_row hslv_haein , hslv_ecoli     Run
  below_row hslv_haein , hslv_ecoli     Run
  to_row 2, hslv_ecoli hslv_haein hslv_bacsu     Run
Move the given protein to the given row. A row can be defined by a number or indirectly by another protein.

  hide subtilisin.pdb     Run
The protein is not shown in the alignment but it remains loaded. To access hidden proteins open the vertical divider which is at the left edge of the STRAP panel.

  unhide subtilisin.pdb     Run
Show the protein again.

  hide *     Run
  unhide *     Run


  scroll_to hslv_ecoli/150-170    
  scroll_to hslv_ecoli/20-30     Run
The alignment is scrolled so that amino acids 20-30 of protein hslv_ecoli is visible. If more than one item is given, then the program tries to find a scroll position where all items are visible.

  scroll_to PDB:1v6c_A     Run
  scroll_to hslv_bacsu     Run
If the vertical scroll bar is visible, the alignment is scrolled so that protein hslv_ecoli is visible. The horizontal scroll position remains unchanged.

  scroll_to subtilisin.pdb/274:A     Run
  scroll_to subtilisin.pdb/20:A     Run
Using the Rasmol notation "residue-number:chain".

  scroll_to subtilisin.pdb/myAnnotation1     Run
The alignment is scrolled so that the given selection is visible.

  cursor hslv_ecoli/20     Run
  cursor hslv_ecoli/30     Run
The alignment cursor is set to the given amino acid.

Selecting proteins and residue selections

  select hslv_ecoli subtilisin.pdb/myAnnotation1 subtilisin.pdb/myAnnotation2    
The given protein and the given residue selections are selected. The residue selections are surrounded by marching ants.

  select *     Run
All proteins are selected.

  select hslv.*     Run
Regular expression matching is activated if an asterisk or a square bracket occurs in the text.

  select subtilisin.pdb/*     Run
All residue selections of this protein are selected.

  select subtilisin.pdb/myA.*     Run
myAnnotation1 and myAnnotation2 is matching.

  unselect *     Run
Unselect all proteins.

  unselect */*     Run
Unselect all residue selections.

  ants hslv_ecoli/20-30 subtilisin.pdb/myAnnotation1     Run
A ants is drawn encompassing all given residue annotations and amino acids.

Nucleotide Reading Frame

  cds 1 , M57965    
Use the first CDS of the EMBL or GenBank file.

  cds join(10..20,30..40) , M57965     Run
  cds complement(join(10..20,30..40)) , M57965     Run
Apply the given coding sequence for translation into amino acids.

  cds 1 , M57965     Run
  new_nucleotide_selection M57965/myNucleotides , a_new_group, 5731-5750     Run
The "new_nucleotide_selection" command works the same as "new_aminoacid_selection" with the difference, that the positions refer to the nucleotide sequence.


  new_aminoacid_selection hslv_ecoli/myAnnot, a_new_group, 10-20
scroll_to hslv_ecoli/myAnnot
mseconds 1000 set_annotation hslv_ecoli/myAnnot, Color, #0000FF
mseconds 2000 set_annotation hslv_ecoli/myAnnot, Color, #FF0000
mseconds 3000 set_annotation hslv_ecoli/myAnnot, Color, #FFFF00
mseconds 4000 set_annotation hslv_ecoli/myAnnot, Color, #00FF00  

Icons for proteins and for residue selections

  new_aminoacid_selection subtilisin.pdb/myAnnotation1, a_new_group, 10-30,32
icon http://www.goldenweb.it/software/immagini/icone/animals/insects/Bee.gif , subtilisin.pdb/myAnnotation1  
  icon NULL ,subtilisin.pdb     Run
Removes an icon.

  icon http://www.goldenweb.it/software/immagini/icone/animals/insects/Bee.gif , subtilisin.pdb     Run
Sets a protein icon.

External applications

Depending on the security settings, STRAP may start external applications.   seqvista M57965
Loads a nucleotide file in EMBO or Genbank format into SeqVista and hides the STRAP window. Sequista cannot be used in Strap-Lite version yet.

  jalview *     Run
Loads the specified proteins into Jalview.

  spice hslv_ecoli     Run
Loads the specified protein into Spice.


Accession-IDs and cross references act as references to protein database entries. They are listed in the balloon texts of the protein labels. These balloon texts appear when the mouse is over the left edge of the protein label. Read the balloon texts to observe the effect of the commands above. These database IDs allow to obtain additional information from Web-resources such as sequence features like phosphorylation sites, active sites and signal peptides. Further they are used for forming Web links. A list of Web links can be obtained by clicking the left part of a protein label in the row-header of the alignment.

  accession_id SWISS:HSLV_ECOLI , hslv_ecoli     Run
  accession_id UNIPROT:P0A7B8 , hslv_ecoli     Run
  accession_id UNIPROT:P12883 , M57965     Run
  remove_xref PDB:1NED , hslv_ecoli     Run
  add_xref PDB:1NED , hslv_ecoli     Run
In case of errorneous PDB reference. Wrong PDB will be noticed at least when it is used to assiociate a 3D-structure by the bad alignment.

  add_xref PDB:1RYP:F , M57965     Run

Test your own script lines