Author: bugman
Date: Wed Oct  1 19:44:10 2014
New Revision: 26105

URL: http://svn.gna.org/viewcvs/relax?rev=26105&view=rev
Log:
Created the frontend of the structure.align user function.

This is almost the same as that of the structure.superimpose user function 
except that the pipes
argument has been added and the titles and description changed to indicate the 
differences.

Modified:
    trunk/user_functions/structure.py

Modified: trunk/user_functions/structure.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/user_functions/structure.py?rev=26105&r1=26104&r2=26105&view=diff
==============================================================================
--- trunk/user_functions/structure.py   (original)
+++ trunk/user_functions/structure.py   Wed Oct  1 19:44:10 2014
@@ -34,6 +34,7 @@
 
 # relax module imports.
 from graphics import WIZARD_IMAGE_PATH
+from pipe_control.pipes import pipe_names
 import pipe_control.structure.geometric
 import pipe_control.structure.main
 from user_functions.data import Uf_info; uf_info = Uf_info()
@@ -144,6 +145,90 @@
 uf.menu_text = "&add_model"
 uf.gui_icon = "oxygen.actions.list-add-relax-blue"
 uf.wizard_size = (700, 400)
+uf.wizard_image = WIZARD_IMAGE_PATH + 'structure' + sep + '2JK4.png'
+
+
+# The structure.align user function.
+uf = uf_info.add_uf('structure.align')
+uf.title = "Align and superimpose different structures."
+uf.title_short = "Structural alignment and superimposition."
+uf.add_keyarg(
+    name = "pipes",
+    py_type = "str_list",
+    desc_short = "data pipes",
+    desc = "The data pipes to include in the alignment and superimposition.",
+    wiz_element_type = 'combo',
+    wiz_combo_iter = pipe_names,
+    wiz_read_only = True,
+    can_be_none = True
+)
+uf.add_keyarg(
+    name = "models",
+    py_type = "int_list_of_lists",
+    desc_short = "model list",
+    desc = "The list of models for each data pipe to superimpose.  The number 
of elements must match the pipes argument.",
+    can_be_none = True
+)
+uf.add_keyarg(
+    name = "method",
+    default = "fit to mean",
+    py_type = "str",
+    desc_short = "superimposition method",
+    desc = "The superimposition method.",
+    wiz_element_type = "combo",
+    wiz_combo_choices = ["fit to mean", "fit to first"],
+    wiz_read_only = True
+)
+uf.add_keyarg(
+    name = "atom_id",
+    py_type = "str",
+    desc_short = "atom ID string",
+    desc = "The atom identification string.",
+    can_be_none = True
+)
+uf.add_keyarg(
+    name = "centre_type",
+    py_type = "str",
+    default = "centroid",
+    desc_short = "centre type",
+    desc = "The type of centre to user for the superimposition, i.e. either 
the standard centroid superimposition or a superimposition using the centre of 
mass (CoM).",
+    wiz_element_type = "combo",
+    wiz_combo_choices = ["The centroid", "The centre of mass (CoM)"],
+    wiz_combo_data = ["centroid", "CoM"]
+)
+uf.add_keyarg(
+    name = "centroid",
+    py_type = "float_array",
+    desc_short = "centroid position",
+    desc = "The alternative position of the centroid.",
+    can_be_none = True
+)
+# Description.
+uf.desc.append(Desc_container())
+uf.desc[-1].add_paragraph("This allows a set of related structures to be 
superimposed to each other.  The current algorithm will only use atoms with the 
same residue name and number and atom name in the superimposition, hence this 
is not a true sequence alignment.  Just as with the structure.superimpose user 
function two methods are currently supported:")
+uf.desc[-1].add_item_list_element("'fit to mean'", "All models are fit to the 
mean structure.  This is the default and most accurate method for an ensemble 
description.  It is an iterative method which first calculates a mean structure 
and then fits each model to the mean structure using the Kabsch algorithm.  
This is repeated until convergence.")
+uf.desc[-1].add_item_list_element("'fit to first'", "This is quicker but is 
not as accurate for an ensemble description.  The Kabsch algorithm is used to 
rotate and translate each model to be superimposed onto the first model of the 
first data pipe.")
+uf.desc[-1].add_paragraph("If the list of models is not supplied, then all 
models of all data pipes will be superimposed.")
+uf.desc[-1].add_paragraph("The atom ID, which uses the same notation as the 
spin ID strings, can be used to restrict the superimpose calculation to certain 
molecules, residues, or atoms.  For example to only superimpose backbone heavy 
atoms in a protein, use the atom ID of '@N,C,CA,O', assuming those are the 
names of the atoms from the structural file.")
+uf.desc[-1].add_paragraph("By supplying the position of the centroid, an 
alternative position than the standard rigid body centre is used as the focal 
point of the superimposition.  The allows, for example, the superimposition 
about a pivot point.")
+# Prompt examples.
+uf.desc.append(Desc_container("Prompt examples"))
+uf.desc[-1].add_paragraph("To superimpose all sets of models, exactly as in 
the structure.superimpose user function, type one of:")
+uf.desc[-1].add_prompt("relax> structure.align()")
+uf.desc[-1].add_prompt("relax> structure.align(method='fit to mean')")
+uf.desc[-1].add_paragraph("To superimpose the models 1, 2, 3, 5 onto model 4, 
type:")
+uf.desc[-1].add_prompt("relax> structure.align(models=[4, 1, 2, 3, 5], 
method='fit to first')")
+uf.desc[-1].add_paragraph("To superimpose an ensemble of protein structures 
using only the backbone heavy atoms, type one of:")
+uf.desc[-1].add_prompt("relax> structure.align(atom_id='@N,C,CA,O')")
+uf.desc[-1].add_prompt("relax> structure.align(method='fit to mean', 
atom_id='@N,C,CA,O')")
+uf.desc[-1].add_paragraph("To superimpose the structures in the 'A' data pipe 
onto the structures of the 'B' data pipe using backbone heavy atoms, type one 
of:")
+uf.desc[-1].add_prompt("relax> structure.align(['B', 'A'], None, 'fit to 
first', '@N,C,CA,O')")
+uf.desc[-1].add_prompt("relax> structure.align(pipes=['B', 'A'], method='fit 
to first', atom_id='@N,C,CA,O')")
+uf.backend = pipe_control.structure.main.align
+uf.menu_text = "&align"
+uf.wizard_apply_button = False
+uf.wizard_height_desc = 450
+uf.wizard_size = (1000, 750)
 uf.wizard_image = WIZARD_IMAGE_PATH + 'structure' + sep + '2JK4.png'
 
 


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
[email protected]

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits

Reply via email to