mailr26269 - in /branches/frame_order_cleanup: ./ pipe_control/opendx.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on October 14, 2014 - 13:30:
Author: bugman
Date: Tue Oct 14 13:30:39 2014
New Revision: 26269

URL: http://svn.gna.org/viewcvs/relax?rev=26269&view=rev
Log:
Merged revisions 26243 via svnmerge from 
svn+ssh://bugman@xxxxxxxxxxx/svn/relax/trunk

........
  r26243 | tlinnet | 2014-10-10 17:05:25 +0200 (Fri, 10 Oct 2014) | 3 lines
  
  Added the write out of parameters and chi2 values, when creating a dx_map.
  
  Task #7860(https://gna.org/task/index.php?7860): When dx_map is issued, 
create a parameter file which maps parameters to chi2 value.
........

Modified:
    branches/frame_order_cleanup/   (props changed)
    branches/frame_order_cleanup/pipe_control/opendx.py

Propchange: branches/frame_order_cleanup/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Oct 14 13:30:39 2014
@@ -1 +1 @@
-/trunk:1-26205,26208-26242
+/trunk:1-26205,26208-26243

Modified: branches/frame_order_cleanup/pipe_control/opendx.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/frame_order_cleanup/pipe_control/opendx.py?rev=26269&r1=26268&r2=26269&view=diff
==============================================================================
--- branches/frame_order_cleanup/pipe_control/opendx.py (original)
+++ branches/frame_order_cleanup/pipe_control/opendx.py Tue Oct 14 13:30:39 
2014
@@ -25,12 +25,13 @@
 
 
 # Python module imports.
+from copy import deepcopy
 from numpy import float64, array, zeros
 from time import asctime, localtime
 
 # relax module imports.
 from lib.errors import RelaxError
-from lib.io import open_write_file
+from lib.io import open_write_file, write_data
 from extern.numpy_future import percentile
 from lib.software.opendx.files import write_config, write_general, 
write_point, write_program
 from pipe_control import value
@@ -107,6 +108,9 @@
         self.dir = dir
         self.point_file = point_file
 
+        # Define nested listed, which holds parameter values and chi2 value.
+        self.par_chi2_vals = []
+
         # The specific analysis API object.
         self.api = return_api()
 
@@ -163,6 +167,9 @@
         # Generate the map.
         self.create_map()
 
+        ## Generate the file with parameters and associated chi2 value.
+        self.create_par_chi2()
+
         # Default the chi2 surface values, for Innermost, Inner, Middle and 
Outer Isosurface.
         if chi_surface == None:
             all_chi2 = array(self.all_chi, float64)
@@ -202,6 +209,56 @@
         map_file.close()
 
 
+    def create_par_chi2(self):
+        """Function for creating file with parameters and the chi2 value."""
+
+        # Print out.
+        print("\nCreating the file with parameters and the chi2 value.")
+
+        # Open the file.
+        par_file = open_write_file(file_name=self.file_prefix+'.par', 
dir=self.dir, force=True)
+
+        # Copy the nested list to sort it.
+        par_chi2_vals_sort = deepcopy(self.par_chi2_vals)
+
+        # Then sort the value.
+        par_chi2_vals_sort.sort(key=lambda values: values[4])
+
+        # Collect the data structure, which is a list of list of strings.
+        data = []
+        for i, line in enumerate(self.par_chi2_vals):
+            line_sort = par_chi2_vals_sort[i]
+
+            # Convert values to strings.
+            line_str = ["%3.5f"%j for j in line]
+            line_sort_str = ["%3.5f"%j for j in line_sort]
+
+            # Convert the index from float to index.
+            line_str[0] = "%i" % line[0]
+            line_sort_str[0] = "%i" % line_sort[0]
+
+            # Merge the two lists and append to data.
+            data_list = line_str + line_sort_str
+            data.append(data_list)
+
+        # Make the headings.
+        headings = ['i'] + self.params + ['chi2']
+        headings += headings
+
+        # Add "_sort" to headings.
+        headings[5] = headings[5] + "_sort"
+        headings[6] = headings[6] + "_sort"
+        headings[7] = headings[7] + "_sort"
+        headings[8] = headings[8] + "_sort"
+        headings[9] = headings[9] + "_sort"
+
+        # Write the parameters and chi2 values to file.
+        write_data(out=par_file, headings=headings, data=data)
+
+        # Close the file.
+        par_file.close()
+
+
     def get_date(self):
         """Function for creating a date string."""
 
@@ -228,6 +285,9 @@
 
         # Initial value of the first parameter.
         values[0] = self.bounds[0, 0]
+
+        # Define counter
+        counter = 0
 
         # Loop over the first parameter.
         for i in range((self.inc + 1)):
@@ -268,6 +328,12 @@
                         # Save all values of chi2. To help find reasonale 
level for the Innermost, Inner, Middle and Outer Isosurface.
                         all_chi.append(chi2)
 
+                    # Assign value to nested list.
+                    self.par_chi2_vals.append([counter, values[0], 
values[1], values[2], chi2])
+
+                    # Add to counter.
+                    counter += 1
+
                     # Increment the value of the third parameter.
                     values[2] = values[2] + self.step_size[2]
 




Related Messages


Powered by MHonArc, Updated Tue Oct 14 13:40:02 2014