Author: bugman
Date: Thu Dec 18 12:13:07 2014
New Revision: 27129

URL: http://svn.gna.org/viewcvs/relax?rev=27129&view=rev
Log:
Enabled the gnuplot format for the structure.atomic_fluctuations user function.

This uses the plotting API correlation_matrix() function for visualisation.  
The change allows the
Structure.test_atomic_fluctuations_gnuplot system test to pass.


Modified:
    trunk/pipe_control/structure/main.py
    trunk/user_functions/structure.py

Modified: trunk/pipe_control/structure/main.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/pipe_control/structure/main.py?rev=27129&r1=27128&r2=27129&view=diff
==============================================================================
--- trunk/pipe_control/structure/main.py        (original)
+++ trunk/pipe_control/structure/main.py        Thu Dec 18 12:13:07 2014
@@ -32,6 +32,7 @@
 from lib.check_types import is_float
 from lib.errors import RelaxError, RelaxFileError
 from lib.io import get_file_path, open_write_file, write_data
+from lib.plotting.api import correlation_matrix
 from lib.selection import tokenise
 from lib.sequence import write_spin_data
 from lib.structure.internal.coordinates import assemble_coord_array, 
loop_coord_structures
@@ -237,11 +238,11 @@
     @type molecules:    None or list of lists of str
     @keyword atom_id:   The atom identification string of the coordinates of 
interest.  This matches the spin ID string format.
     @type atom_id:      str or None
-    @keyword file:      The name of the PDB file to write.
+    @keyword file:      The name of the file to write.
     @type file:         str
-    @keyword format:    The output format.  This is currently only "text" for 
text file output.
+    @keyword format:    The output format.  This can be set to "text" for text 
file output, or "gnuplot" for creating a gnuplot script.
     @type format:       str
-    @keyword dir:       The directory where the PDB file will be placed.  If 
set to None, then the file will be placed in the current directory.
+    @keyword dir:       The directory where the file will be placed.  If set 
to None, then the file will be placed in the current directory.
     @type dir:          str or None
     @keyword force:     The force flag which if True will cause the file to be 
overwritten.
     @type force:        bool
@@ -250,7 +251,7 @@
     # Checks.
     check_pipe()
     check_structure()
-    format_list = ['text']
+    format_list = ['text', 'gnuplot']
     if format not in format_list:
         raise RelaxError("The format '%s' must be one of %s." % (format, 
format_list))
 
@@ -262,20 +263,21 @@
         raise RelaxError("Two or more structures are required.")
 
     # The output file.
-    file = open_write_file(file, dir=dir, force=force)
+    output = open_write_file(file, dir=dir, force=force)
 
     # The header line.
-    file.write('#')
+    output.write('#')
+    labels = []
     for i in range(len(atom_names)):
         # The spin identification string.
-        id = generate_spin_id_unique(mol_name=mol_names[i], 
res_num=res_nums[i], res_name=res_names[i], spin_name=atom_names[i])
+        labels.append(generate_spin_id_unique(mol_name=mol_names[i], 
res_num=res_nums[i], res_name=res_names[i], spin_name=atom_names[i]))
 
         # Output the spin ID.
         if i == 0:
-            file.write(" %18s" % id)
+            output.write(" %18s" % labels[i])
         else:
-            file.write(" %20s" % id)
-    file.write('\n')
+            output.write(" %20s" % labels[i])
+    output.write('\n')
 
     # Generate the pairwise matrix.
     n = len(atom_names)
@@ -292,12 +294,20 @@
 
             # Output the matrix.
             if j == 0:
-                file.write("%20.15f" % matrix[i, j])
+                output.write("%20.15f" % matrix[i, j])
             else:
-                file.write(" %20.15f" % matrix[i, j])
+                output.write(" %20.15f" % matrix[i, j])
 
         # End of the current line.
-        file.write('\n')
+        output.write('\n')
+
+    # Close the file.
+    output.close()
+
+    # The gnuplot script.
+    if format == 'gnuplot':
+        # Call the plotting API.
+        correlation_matrix(format=format, matrix=matrix, labels=labels, 
file=file, dir=dir, force=force)
 
 
 def connect_atom(index1=None, index2=None):

Modified: trunk/user_functions/structure.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/user_functions/structure.py?rev=27129&r1=27128&r2=27129&view=diff
==============================================================================
--- trunk/user_functions/structure.py   (original)
+++ trunk/user_functions/structure.py   Thu Dec 18 12:13:07 2014
@@ -298,7 +298,7 @@
     py_type = "str_or_inst",
     arg_type = "file sel",
     desc_short = "file name",
-    desc = "The name of the text file.",
+    desc = "The name of the text file to create.",
     wiz_filesel_style = FD_SAVE
 )
 uf.add_keyarg(
@@ -306,10 +306,10 @@
     py_type = "str",
     default = "text",
     desc_short = "output format",
-    desc = "The output format.",
+    desc = "The output format.  For all formats other than the text file, a 
second file will be created with the same name as the text file but with the 
appropriate file extension added.",
     wiz_element_type = "combo",
-    wiz_combo_choices = ["Text file"],
-    wiz_combo_data = ["text"]
+    wiz_combo_choices = ["Text file", "Gnuplot script"],
+    wiz_combo_data = ["text", "gnuplot"]
 )
 uf.add_keyarg(
     name = "dir",
@@ -329,6 +329,9 @@
 # Description.
 uf.desc.append(Desc_container())
 uf.desc[-1].add_paragraph("This is used to visualise the interatomic distance 
fluctuations between different structures.  The corrected sample standard 
deviation (SD) is calculated for the distances between all atom pairs, 
resulting in a pairwise matrix of SD values.  The matrix will be output into a 
text file.")
+uf.desc[-1].add_paragraph("In addition to creating the text file, a second 
file will be created if the format argument is set to anything other than the 
text file.  It will have the same name as the text file, however the file 
extension will be changed to match the format.  The currently supported formats 
are:")
+uf.desc[-1].add_item_list_element("'text'", "This is the default value and 
will result in a single text file being created.")
+uf.desc[-1].add_item_list_element("'gnuplot'", "This will create a script for 
visualising the correlation matrix using gnuplot.")
 uf.desc[-1].add_paragraph(paragraph_multi_struct)
 uf.desc[-1].add_paragraph(paragraph_atom_id)
 # Prompt examples.
@@ -339,7 +342,7 @@
 uf.desc[-1].add_prompt("relax> structure.atomic_fluctuations(molecules=[['A', 
'B', 'C', 'D']], file='atomic_fluctuation_matrix')")
 uf.backend = pipe_control.structure.main.atomic_fluctuations
 uf.menu_text = "&atomic_fluctuations"
-uf.wizard_height_desc = 450
+uf.wizard_height_desc = 400
 uf.wizard_size = (1000, 750)
 uf.wizard_apply_button = False
 uf.wizard_image = WIZARD_IMAGE_PATH + 'structure' + sep + '2JK4.png'


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

This is the relax-commits mailing list
relax-commits@gna.org

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