Author: bugman
Date: Fri Jan 30 15:50:18 2015
New Revision: 27393
URL: http://svn.gna.org/viewcvs/relax?rev=27393&view=rev
Log:
Created the frontend for the structure.sequence_alignment user function.
This is based on the structure.align user function with the 3D superimposition
arguments removed and
new arguments added for selecting the MSA algorithm and the pairwise alignment
algorithm (despite
only NW70 being currently implemented).
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=27393&r1=27392&r2=27393&view=diff
==============================================================================
--- trunk/user_functions/structure.py (original)
+++ trunk/user_functions/structure.py Fri Jan 30 15:50:18 2015
@@ -1299,6 +1299,115 @@
uf.wizard_image = WIZARD_IMAGE_PATH + 'structure' + sep + '2JK4.png'
+# The structure.sequence_alignment user function.
+uf = uf_info.add_uf('structure.sequence_alignment')
+uf.title = "Multiple sequence alignment (MSA) of structural data."
+uf.title_short = "Multiple sequence alignment."
+uf.add_keyarg(
+ name = "pipes",
+ py_type = "str_list",
+ desc_short = "data pipes",
+ desc = "The data pipes to use in the sequence alignment.",
+ wiz_combo_iter = pipe_names,
+ wiz_read_only = False,
+ can_be_none = True
+)
+uf.add_keyarg(
+ name = "models",
+ py_type = "int_list_of_lists",
+ desc_short = "model list for each data pipe",
+ desc = "The list of models for each data pipe to use in the sequence
alignment. The number of elements must match the pipes argument. If no models
are given, then all will be used.",
+ can_be_none = True
+)
+uf.add_keyarg(
+ name = "molecules",
+ py_type = "str_list_of_lists",
+ desc_short = "molecule list for each data pipe",
+ desc = "The list of molecules for each data pipe to use in the sequence
alignment. This allows differently named molecules in the same or different
data pipes to be superimposed. The number of elements must match the pipes
argument. If no molecules are given, then all will be used.",
+ can_be_none = True
+)
+uf.add_keyarg(
+ name = "msa_algorithm",
+ default = "Central Star",
+ py_type = "str",
+ desc_short = "multiple sequence alignment (MSA) algorithm",
+ desc = "The multiple sequence alignment (MSA) algorithm used to align all
the primary sequence of all structures of interest.",
+ wiz_element_type = "combo",
+ wiz_combo_choices = ["Central Star", "residue number"],
+ wiz_read_only = True
+)
+uf.add_keyarg(
+ name = "pairwise_algorithm",
+ default = "NW70",
+ py_type = "str",
+ desc_short = "pairwise alignment algorithm",
+ desc = "The pairwise alignment algorithm to align each pair of sequences.",
+ wiz_element_type = "combo",
+ wiz_combo_choices = ["NW70"],
+ wiz_read_only = True
+)
+uf.add_keyarg(
+ name = "matrix",
+ default = "BLOSUM62",
+ py_type = "str",
+ desc_short = "substitution matrix",
+ desc = "The substitution matrix to use in the pairwise sequence alignment
algorithm.",
+ wiz_element_type = "combo",
+ wiz_combo_choices = ["BLOSUM62", "PAM250", "NUC 4.4"],
+ wiz_read_only = True
+)
+uf.add_keyarg(
+ name = "gap_open_penalty",
+ default = 10.0,
+ py_type = "float",
+ desc_short = "gap opening penalty",
+ desc = "The penalty for introducing gaps, as a positive number."
+)
+uf.add_keyarg(
+ name = "gap_extend_penalty",
+ default = 1.0,
+ py_type = "float",
+ desc_short = "gap extension penalty",
+ desc = "The penalty for extending a gap, as a positive number."
+)
+uf.add_keyarg(
+ name = "end_gap_open_penalty",
+ default = 0.0,
+ py_type = "float",
+ desc_short = "end gap opening penalty",
+ desc = "The optional penalty for opening a gap at the end of a sequence."
+)
+uf.add_keyarg(
+ name = "end_gap_extend_penalty",
+ default = 0.0,
+ py_type = "float",
+ desc_short = "end gap extension penalty",
+ desc = "The optional penalty for extending a gap at the end of a sequence."
+)
+# Description.
+uf.desc.append(Desc_container())
+uf.desc[-1].add_paragraph("To find the atoms in common between different
molecules, a MSA of the primary sequence of the molecules is required. This
sequence alignment will then subsequently be used by any other user function
which operates on multiple molecules. The following MSA algorithms can be
selected:")
+uf.desc[-1].add_item_list_element("'Central Star'", "This is a heuristic,
progressive alignment method using pairwise alignments to construct a MSA. It
consists of four major steps - pairwise alignment between all sequence pairs,
finding the central sequence, iteratively aligning the sequences to the gapped
central sequence, and introducing gaps in previous alignments during the
iterative alignment.")
+uf.desc[-1].add_item_list_element("'residue number'", "This will simply align
the molecules based on residue number.")
+uf.desc[-1].add_paragraph("For the MSA algorithms which require pairwise
alignments, the following subalgorithms can be used:")
+uf.desc[-1].add_item_list_element("'NW70'", "The Needleman-Wunsch alignment
algorithm. This has been modified to use the logic of the EMBOSS software for
handling gap opening and extension penalties, as well as end penalties.")
+uf.desc[-1].add_paragraph("For the MSAs or pairwise alignments which require a
substitution matrix, one of the following can be used:")
+uf.desc[-1].add_item_list_element("'BLOSUM62'", "The BLOcks SUbstitution
Matrix for proteins with a cluster percentage >= 62%.")
+uf.desc[-1].add_item_list_element("'PAM250'", "The point accepted mutation
matrix for proteins with n = 250 evolutionary distance.")
+uf.desc[-1].add_item_list_element("'NUC 4.4'", "The nucleotide 4.4 matrix for
DNA/RNA.")
+uf.desc[-1].add_paragraph(paragraph_multi_struct)
+# Prompt examples.
+uf.desc.append(Desc_container("Prompt examples"))
+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:")
+uf.desc[-1].add_prompt("relax> structure.sequence_alignment(pipes=['B', 'A'],
atom_id='@N,C,CA,O')")
+uf.backend = pipe_control.structure.main.align
+uf.menu_text = "&sequence_alignment"
+uf.wizard_apply_button = False
+uf.wizard_height_desc = 320
+uf.wizard_size = (1000, 750)
+uf.wizard_image = WIZARD_IMAGE_PATH + 'structure' + sep + '2JK4.png'
+
+
# The structure.superimpose user function.
uf = uf_info.add_uf('structure.superimpose')
uf.title = "Superimpose a set of models of the same structure."
_______________________________________________
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