mailRe: r10960 - /branches/bieri_gui/auto_analyses/relax_fit.py


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

Header


Content

Posted by Edward d'Auvergne on March 12, 2010 - 10:48:
Hi Michael,

Do you have the command you used for this one?  This should consist of
a number of removed revisions (r10936 to r10923 -
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/auto_analyses/relax_fit.py).

Cheers,

Edward

On 10 March 2010 01:57,  <michael.bieri@xxxxxx> wrote:
Author: michaelbieri
Date: Wed Mar 10 01:57:51 2010
New Revision: 10960

URL: http://svn.gna.org/viewcvs/relax?rev=10960&view=rev
Log:
everted the changes of relax_fit.py to original version of Edward 
d'Auvergne.

See 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/auto_analyses/relax_fit.py?rev=10687&view=log
 for more informations.

Modified:
   branches/bieri_gui/auto_analyses/relax_fit.py

Modified: branches/bieri_gui/auto_analyses/relax_fit.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/bieri_gui/auto_analyses/relax_fit.py?rev=10960&r1=10959&r2=10960&view=diff
==============================================================================
--- branches/bieri_gui/auto_analyses/relax_fit.py (original)
+++ branches/bieri_gui/auto_analyses/relax_fit.py Wed Mar 10 01:57:51 2010
@@ -29,25 +29,17 @@

 # relax module imports.
 from prompt.interpreter import Interpreter
-import generic_fns.structure.main
-



 class Relax_fit:
-    def __init__(self, pipe_name='rx', rx_type = 'x', freq = '', 
seq_args=None, directory = None, file_names=None, relax_times=None, 
int_method='height', mc_num=500, pdb_file = None, unresolved = None):
+    def __init__(self, pipe_name='rx', seq_args=None, file_names=None, 
relax_times=None, int_method='height', mc_num=500):
        """Perform relaxation curve fitting.

        @keyword pipe_name:     The name of the data pipe to create.
        @type pipe_name:        str
-        @keyword freq:          Spectrometer frequency.
-        @type freq:             str
-        @keyword rx_type:       Type of Rx analysis: R1 or R2
-        @type rx_type:          str
        @keyword seq_args:      The sequence data (file name, dir, 
mol_name_col, res_num_col, res_name_col, spin_num_col, spin_name_col, sep). 
 These are the arguments to the  sequence.read() user function, for more 
information please see the documentation for that function.
        @type seq_args:         list of lists of [str, None or str, None or 
int, None or int, None or int, None or int, None or int, None or int, None 
or int, None or str]
-        @keyword directory:     Location of the generated results files.
-        @type directory:        str, directory
        @keyword file_names:    A list of all the peak list file names.
        @type file_names:       list of str
        @keyword relax_times:   The list of relaxation times corresponding 
to file_names.  These two lists must be of the same size.
@@ -56,14 +48,10 @@
        @type int_method:       str
        @keyword mc_num:        The number of Monte Carlo simulations to be 
used for error analysis at the end of the analysis.
        @type mc_num:           int
-        @keyword pdb_file:      The structure file.
-        @type pdb_file:         str, file
-        @keyword unresolved:    Unresolved residues.
-        @type unresolved:       str
        """

        # Store the args.
-        self.pipe_name = pipe_name + ' ' + 
str(time.asctime(time.localtime())) # add date and time to allow multiple 
executions of relax_fit
+        self.pipe_name = pipe_name
        self.seq_args = seq_args
        self.file_names = file_names
        self.relax_times = relax_times
@@ -95,37 +83,112 @@
        self.interpreter.pipe.create(self.pipe_name, 'relax_fit')

        # Load the sequence.
-        if self.pdb_file == '!!! Sequence file selected !!!': # load 
sequence of file
-            print 'Sequence file'  # FIXME
-            #self.interpreter.sequence.read(file=self.seq_args[0], 
dir=self.seq_args[1], mol_name_col=self.seq_args[2], 
res_num_col=self.seq_args[3], res_name_col=self.seq_args[4], 
spin_num_col=self.seq_args[5], spin_name_col=self.seq_args[6], 
sep=self.seq_args[7])
-
-        else:   # load PDB File
-            self.interpreter.structure.read_pdb(self.pdb_file)
-            generic_fns.structure.main.load_spins(spin_id='@N')
+        self.interpreter.sequence.read(file=self.seq_args[0], 
dir=self.seq_args[1], mol_name_col=self.seq_args[2], 
res_num_col=self.seq_args[3], res_name_col=self.seq_args[4], 
spin_num_col=self.seq_args[5], spin_name_col=self.seq_args[6], 
sep=self.seq_args[7])

        # Loop over the spectra.
        for i in xrange(len(self.file_names)):
            # Load the peak intensities.
-            
self.interpreter.spectrum.read_intensities(file=self.file_names[i], 
spectrum_id=self.file_names[i], int_method=self.int_method, heteronuc='N', 
proton='H')
+            
self.interpreter.spectrum.read_intensities(file=self.file_names[i], 
spectrum_id=self.file_names[i], int_method=self.int_method)

            # Set the relaxation times.
-            
self.interpreter.relax_fit.relax_time(time=float(self.relax_times[i]), 
spectrum_id=self.file_names[i])
+            
self.interpreter.relax_fit.relax_time(time=self.relax_times[i]), 
spectrum_id=self.file_names[i])
+###############################################################################
+#                                                                          
   #
+# Copyright (C) 2004-2010 Edward d'Auvergne                                
   #
+#                                                                          
   #
+# This file is part of the program relax.                                  
   #
+#                                                                          
   #
+# relax is free software; you can redistribute it and/or modify            
   #
+# it under the terms of the GNU General Public License as published by     
   #
+# the Free Software Foundation; either version 2 of the License, or        
   #
+# (at your option) any later version.                                      
   #
+#                                                                          
   #
+# relax is distributed in the hope that it will be useful,                 
   #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           
   #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            
   #
+# GNU General Public License for more details.                             
   #
+#                                                                          
   #
+# You should have received a copy of the GNU General Public License        
   #
+# along with relax; if not, write to the Free Software                     
   #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  
USA   #
+#                                                                          
   #
+###############################################################################
+
+# Module docstring.
+"""The automatic relaxation curve fitting protocol."""
+
+# relax module imports.
+from prompt.interpreter import Interpreter
+
+
+
+class Relax_fit:
+    def __init__(self, pipe_name='rx', seq_args=None, file_names=None, 
relax_times=None, int_method='height', mc_num=500):
+        """Perform relaxation curve fitting.
+
+        @keyword pipe_name:     The name of the data pipe to create.
+        @type pipe_name:        str
+        @keyword seq_args:      The sequence data (file name, dir, 
mol_name_col, res_num_col, res_name_col, spin_num_col, spin_name_col, sep). 
 These are the arguments to the  sequence.read() user function, for more 
information please see the documentation for that function.
+        @type seq_args:         list of lists of [str, None or str, None 
or int, None or int, None or int, None or int, None or int, None or int, 
None or int, None or str]
+        @keyword file_names:    A list of all the peak list file names.
+        @type file_names:       list of str
+        @keyword relax_times:   The list of relaxation times corresponding 
to file_names.  These two lists must be of the same size.
+        @type relax_times:      list of float
+        @keyword int_method:    The integration method, one of 'height', 
'point sum' or 'other'.
+        @type int_method:       str
+        @keyword mc_num:        The number of Monte Carlo simulations to 
be used for error analysis at the end of the analysis.
+        @type mc_num:           int
+        """
+
+        # Store the args.
+        self.pipe_name = pipe_name
+        self.seq_args = seq_args
+        self.file_names = file_names
+        self.relax_times = relax_times
+        self.int_method = int_method
+        self.mc_num = mc_num
+
+        # User variable checks.
+        self.check_vars()
+
+        # Load the interpreter.
+        self.interpreter = Interpreter(show_script=False, quit=False, 
raise_relax_error=True)
+        self.interpreter.populate_self()
+        self.interpreter.on(verbose=False)
+
+        # Execute.
+        self.run()
+
+
+    def run(self):
+        """Set up and run the curve-fitting."""
+
+        # Create the data pipe.
+        self.interpreter.pipe.create(self.pipe_name, 'relax_fit')
+
+        # Load the sequence.
+        self.interpreter.sequence.read(file=self.seq_args[0], 
dir=self.seq_args[1], mol_name_col=self.seq_args[2], 
res_num_col=self.seq_args[3], res_name_col=self.seq_args[4], 
spin_num_col=self.seq_args[5], spin_name_col=self.seq_args[6], 
sep=self.seq_args[7])
+
+        # Loop over the spectra.
+        for i in xrange(len(self.file_names)):
+            # Load the peak intensities.
+            
self.interpreter.spectrum.read_intensities(file=self.file_names[i], 
spectrum_id=self.file_names[i], int_method=self.int_method)
+
+            # Set the relaxation times.
+            
self.interpreter.relax_fit.relax_time(time=self.relax_times[i], 
spectrum_id=self.file_names[i])

        # Specify the duplicated spectra.
        for i in range(len(self.file_names)):
            for j in range(i+1, len(self.file_names)):
                # Relax times match, so this is a replicate.
                if self.relax_times[i] == self.relax_times[j]:
-                    
self.interpreter.spectrum.replicated(spectrum_ids=[self.file_names[i], 
self.file_names[j]])
+                    
self.interpreter.spectrum.replicated(spectrum_ids=[self.file_names[i], 
self.file_names[i]])

        # Peak intensity error analysis.
        self.interpreter.spectrum.error_analysis()

        # Deselect unresolved spins.
-        if self.unresolved == '':
-            print ''
-        else:
-            self.interpreter.deselect.read(file='unresolved') # FIXME. 
relax should read the list without creating a file
+        self.interpreter.deselect.read(file='unresolved')

        # Set the relaxation curve type.
        self.interpreter.relax_fit.select_model('exp')
@@ -144,20 +207,27 @@
        self.interpreter.monte_carlo.error_analysis()

        # Save the relaxation rates.
-        self.interpreter.value.write(param='rx', 
file='r'+self.rx_type+'_'+self.freq+'.out', dir = self.directory, 
force=True)
+        self.interpreter.value.write(param='rx', file='rx.out', force=True)

        # Save the results.
-        self.interpreter.results.write(file='results', dir = 
self.directory, force=True)
+        self.interpreter.results.write(file='results', force=True)

        # Create Grace plots of the data.
-        self.interpreter.grace.write(y_data_type='chi2', file='chi2.agr', 
dir = self.grace_dir, force=True)    # Minimised chi-squared value.
-        self.interpreter.grace.write(y_data_type='i0', file='i0.agr', dir 
= self.grace_dir, force=True)    # Initial peak intensity.
-        self.interpreter.grace.write(y_data_type='rx', 
file='r'+self.rx_type+'_'+self.freq+'.agr', dir = self.grace_dir, 
force=True)    # Relaxation rate.
-        self.interpreter.grace.write(x_data_type='relax_times', 
y_data_type='int', file='intensities.agr', dir = self.grace_dir, 
force=True)    # Average peak intensities.
-        self.interpreter.grace.write(x_data_type='relax_times', 
y_data_type='int', norm=True, file='intensities_norm.agr', dir = 
self.grace_dir, force=True)    # Average peak intensities (normalised).
+        self.interpreter.grace.write(y_data_type='chi2', file='chi2.agr', 
force=True)    # Minimised chi-squared value.
+        self.interpreter.grace.write(y_data_type='i0', file='i0.agr', 
force=True)    # Initial peak intensity.
+        self.interpreter.grace.write(y_data_type='rx', file='rx.agr', 
force=True)    # Relaxation rate.
+        self.interpreter.grace.write(x_data_type='relax_times', 
y_data_type='int', file='intensities.agr', force=True)    # Average peak 
intensities.
+        self.interpreter.grace.write(x_data_type='relax_times', 
y_data_type='int', norm=True, file='intensities_norm.agr', force=True)    # 
Average peak intensities (normalised).
+
+        # Display the Grace plots.
+        self.interpreter.grace.view(file='chi2.agr')
+        self.interpreter.grace.view(file='i0.agr')
+        self.interpreter.grace.view(file='rx.agr')
+        self.interpreter.grace.view(file='intensities.agr')
+        self.interpreter.grace.view(file='intensities_norm.agr')

        # Save the program state.
-        self.interpreter.state.save(state = 
'r'+self.rx_type+'_'+self.freq+'.save', dir = self.directory, force=True)
+        self.interpreter.state.save('rx.save', force=True)


    def check_vars(self):
@@ -175,3 +245,65 @@
                raise RelaxError("The column components of the seq_args 
user variable '%s' must be either None or integers." % self.seq_args)


+
+        # Specify the duplicated spectra.
+        for i in range(len(self.file_names)):
+            for j in range(i+1, len(self.file_names)):
+                # Relax times match, so this is a replicate.
+                if self.relax_times[i] == self.relax_times[j]:
+                    
self.interpreter.spectrum.replicated(spectrum_ids=[self.file_names[i], 
self.file_names[i]])
+
+        # Peak intensity error analysis.
+        self.interpreter.spectrum.error_analysis()
+
+        # Deselect unresolved spins.
+        self.interpreter.deselect.read(file='unresolved')
+
+        # Set the relaxation curve type.
+        self.interpreter.relax_fit.select_model('exp')
+
+        # Grid search.
+        self.interpreter.grid_search(inc=11)
+
+        # Minimise.
+        self.interpreter.minimise('simplex', scaling=False, 
constraints=False)
+
+        # Monte Carlo simulations.
+        self.interpreter.monte_carlo.setup(number=self.mc_num)
+        self.interpreter.monte_carlo.create_data()
+        self.interpreter.monte_carlo.initial_values()
+        self.interpreter.minimise('simplex', scaling=False, 
constraints=False)
+        self.interpreter.monte_carlo.error_analysis()
+
+        # Save the relaxation rates.
+        self.interpreter.value.write(param='rx', 
file='r'+self.rx_type+'_'+self.freq+'.out', dir = self.directory, 
force=True)
+
+        # Save the results.
+        self.interpreter.results.write(file='results', dir = 
self.directory, force=True)
+
+        # Create Grace plots of the data.
+        self.interpreter.grace.write(y_data_type='chi2', file='chi2.agr', 
dir = self.grace_dir, force=True)    # Minimised chi-squared value.
+        self.interpreter.grace.write(y_data_type='i0', file='i0.agr', dir 
= self.grace_dir, force=True)    # Initial peak intensity.
+        self.interpreter.grace.write(y_data_type='rx', 
file='r'+self.rx_type+'_'+self.freq+'.agr', dir = self.grace_dir, 
force=True)    # Relaxation rate.
+        self.interpreter.grace.write(x_data_type='relax_times', 
y_data_type='int', file='intensities.agr', dir = self.grace_dir, 
force=True)    # Average peak intensities.
+        self.interpreter.grace.write(x_data_type='relax_times', 
y_data_type='int', norm=True, file='intensities_norm.agr', dir = 
self.grace_dir, force=True)    # Average peak intensities (normalised).
+
+        # Save the program state.
+        self.interpreter.state.save(state = 
'r'+self.rx_type+'_'+self.freq+'.save', dir = self.directory, force=True)
+
+
+    def check_vars(self):
+        """Check that the user has set the variables correctly."""
+
+        # Sequence data.
+        if not isinstance(self.seq_args, list):
+            raise RelaxError("The seq_args user variable '%s' must be a 
list." % self.seq_args)
+        if len(self.seq_args) != 8:
+            raise RelaxError("The seq_args user variable '%s' must be a 
list with eight elements." % self.seq_args)
+        if not isinstance(self.seq_args[0], str):
+            raise RelaxError("The file name component of the seq_args user 
variable '%s' must be a string." % self.seq_args)
+        for i in range(1, 8):
+            if self.seq_args[i] != None and not 
isinstance(self.seq_args[i], int):
+                raise RelaxError("The column components of the seq_args 
user variable '%s' must be either None or integers." % self.seq_args)
+
+


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

This is the relax-commits mailing list
relax-commits@xxxxxxx

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




Related Messages


Powered by MHonArc, Updated Mon Mar 15 10:40:15 2010