mailr2457 - in /1.2: generic_fns/ specific_fns/ test_suite/


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

Header


Content

Posted by c . a . macraild on April 07, 2006 - 13:44:
Author: macraild
Date: Fri Apr  7 13:43:32 2006
New Revision: 2457

URL: http://svn.gna.org/viewcvs/relax?rev=2457&view=rev
Log:
Fix for bug #5698 and related issues.

Adds several missing functions to specific_fns/jw_mapping.py, and some
missing pointers to jw_mapping functions in specific_fns/specific_setup.py

Also adds jw_mapping tests to the test suite


Added:
    1.2/test_suite/jw_mapping.py
Modified:
    1.2/generic_fns/minimise.py
    1.2/specific_fns/jw_mapping.py
    1.2/specific_fns/specific_setup.py
    1.2/test_suite/__init__.py
    1.2/test_suite/test_suite.py

Modified: 1.2/generic_fns/minimise.py
URL: 
http://svn.gna.org/viewcvs/relax/1.2/generic_fns/minimise.py?rev=2457&r1=2456&r2=2457&view=diff
==============================================================================
--- 1.2/generic_fns/minimise.py (original)
+++ 1.2/generic_fns/minimise.py Fri Apr  7 13:43:32 2006
@@ -61,6 +61,7 @@
 
         # Minimisation.
         else:
+
             calculate(run=run, print_flag=print_flag)
 
 

Modified: 1.2/specific_fns/jw_mapping.py
URL: 
http://svn.gna.org/viewcvs/relax/1.2/specific_fns/jw_mapping.py?rev=2457&r1=2456&r2=2457&view=diff
==============================================================================
--- 1.2/specific_fns/jw_mapping.py (original)
+++ 1.2/specific_fns/jw_mapping.py Fri Apr  7 13:43:32 2006
@@ -481,6 +481,10 @@
         # Arguments.
         self.run = run
 
+        # Skip unselected residues.
+        if not self.relax.data.res[self.run][instance].select:
+                return
+
         # Return J(0) sim data.
         if index == 0:
             return self.relax.data.res[self.run][instance].j0_sim
@@ -492,6 +496,37 @@
         # Return J(wH) sim data.
         if index == 2:
             return self.relax.data.res[self.run][instance].jwh_sim
+
+
+    def sim_return_selected(self, run, instance):
+        """Function for returning the array of selected simulation flags."""
+
+        # Arguments.
+        self.run = run
+
+        # Multiple instances.
+        return self.relax.data.res[self.run][instance].select_sim
+
+
+    def set_selected_sim(self, run, instance, select_sim):
+        """Function for returning the array of selected simulation flags."""
+
+        # Arguments.
+        self.run = run
+
+        # Multiple instances.
+        self.relax.data.res[self.run][instance].select_sim = select_sim
+
+
+    def sim_pack_data(self, run, i, sim_data):
+        """Function for packing Monte Carlo simulation data."""
+
+        # Test if the simulation data already exists.
+        if hasattr(self.relax.data.res[run][i], 'relax_sim_data'):
+            raise RelaxError, "Monte Carlo simulation data already exists."
+
+        # Create the data structure.
+        self.relax.data.res[run][i].relax_sim_data = sim_data
 
 
     def write_columnar_line(self, file=None, num=None, name=None, 
select=None, data_set=None, nucleus=None, wH=None, j0=None, jwx=None, 
jwh=None, r=None, csa=None, ri_labels=None, remap_table=None, 
frq_labels=None, frq=None, ri=None, ri_error=None):

Modified: 1.2/specific_fns/specific_setup.py
URL: 
http://svn.gna.org/viewcvs/relax/1.2/specific_fns/specific_setup.py?rev=2457&r1=2456&r2=2457&view=diff
==============================================================================
--- 1.2/specific_fns/specific_setup.py (original)
+++ 1.2/specific_fns/specific_setup.py Fri Apr  7 13:43:32 2006
@@ -154,6 +154,10 @@
         if self.eqi == 'return_data':
             return self.relax.specific.jw_mapping.return_data
 
+        # Data or parameter name returning function.
+        if self.eqi == 'return_data_name':
+            return self.relax.specific.jw_mapping.return_data_name
+
         # Data error returning function.
         if self.eqi == 'return_error':
             return self.relax.specific.jw_mapping.return_error
@@ -166,6 +170,10 @@
         if self.eqi == 'return_sim_param':
             return self.relax.specific.jw_mapping.sim_return_param
 
+        # Simulation parameter array returning function.
+        if self.eqi == 'return_selected_sim':
+            return self.relax.specific.jw_mapping.sim_return_selected
+
         # String of the external parameter units returning function.
         if self.eqi == 'return_units':
             return self.relax.specific.model_free.return_units
@@ -181,6 +189,10 @@
         # Set error function.
         if self.eqi == 'set_error':
             return self.relax.specific.jw_mapping.set_error
+
+        # Set error function.
+        if self.eqi == 'set_selected_sim':
+            return self.relax.specific.jw_mapping.set_selected_sim
 
         # Write results function (Columnar format).
         if self.eqi == 'write_columnar_results':

Modified: 1.2/test_suite/__init__.py
URL: 
http://svn.gna.org/viewcvs/relax/1.2/test_suite/__init__.py?rev=2457&r1=2456&r2=2457&view=diff
==============================================================================
--- 1.2/test_suite/__init__.py (original)
+++ 1.2/test_suite/__init__.py Fri Apr  7 13:43:32 2006
@@ -24,6 +24,7 @@
 __all__ = ['test_suite',
            'diffusion_tensor',
            'generic.py',
+           'jw_mapping',
            'model_free',
            'relax_fit',
            'run_create',

Added: 1.2/test_suite/jw_mapping.py
URL: 
http://svn.gna.org/viewcvs/relax/1.2/test_suite/jw_mapping.py?rev=2457&view=auto
==============================================================================
--- 1.2/test_suite/jw_mapping.py (added)
+++ 1.2/test_suite/jw_mapping.py Fri Apr  7 13:43:32 2006
@@ -1,0 +1,166 @@
+###############################################################################
+#                                                                            
 #
+# Copyright (C) 2006 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  
 #
+#                                                                            
 #
+###############################################################################
+
+import sys
+
+
+class Jw:
+    def __init__(self, relax, test_name):
+        """Class for testing various aspects specific to reduced spectral 
density mapping."""
+
+        self.relax = relax
+
+        # Results reading test.
+        if test_name == 'set':
+            
+            # The name of the test.
+            self.name = "the user function value.set()"
+
+            # The test.
+            self.test = self.set_value
+
+        # Spectral density calculation test.
+        if test_name == 'calc':
+            
+            # The name of the test.
+            self.name = "spectral density calculation"
+
+            # The test.
+            self.test = self.calc
+
+
+    def calc(self, run):
+        """The spectral density calculation test."""
+
+        # Arguments.
+        self.run = run
+
+        # Setup.
+        self.calc_setup()
+        
+        # Try the reduced spectral density mapping.
+        self.relax.interpreter._Minimisation.calc(self.run)
+        
+        # Success.
+        return self.calc_integrity()
+        
+
+    def calc_integrity(self):
+        
+        # Correct jw values:
+        j0 = [1.1572932929675908e-10, 1.0730217796621087e-10]
+        jwh = [1.5598167512718012e-12, 2.9480536599037041e-12]
+        jwx = [5.2475572036231835e-12, 4.6479921863578077e-12]
+
+        # Loop over residues.
+        for index,residue in enumerate(self.relax.data.res[self.run]):
+            
+            # Residues -2 and -1 have data.
+            if index == 0 or index == 1:
+                if not self.relax.data.res[self.run][index].select:
+                    print 'Residue', 
self.relax.data.res[self.run][index].num, 'unexpectedly not selected'
+                    return
+
+                if abs(self.relax.data.res[self.run][index].j0 - j0[index]) 
j0[index]/1e6:
+                    print 'Error in residue', 
self.relax.data.res[self.run][index].num, 'j0 calculated value'
+                    return
+                if abs(self.relax.data.res[self.run][index].jwh - 
jwh[index]) > jwh[index]/1e6:
+                    print 'Error in residue', 
self.relax.data.res[self.run][index].num, 'jwh calculated value'
+                    return
+                if abs(self.relax.data.res[self.run][index].jwx - 
jwx[index]) > jwx[index]/1e6:
+                    print 'Error in residue', 
self.relax.data.res[self.run][index].num, 'jwx calculated value'
+                    return
+
+            # Other residues have insufficient data.
+            else:
+                if self.relax.data.res[self.run][index].select:
+                    print 'Residue', 
self.relax.data.res[self.run][index].num, 'unexpectedly selected'
+                    return
+
+        # Success.
+        return 1
+
+
+    def calc_setup(self):
+        """Setup for the calculation test."""
+
+        dir = sys.path[-1] + '/test_suite/data/jw_mapping/'
+
+        dataPaths = [dir + 'noe.dat',
+                     dir + 'R1.dat',
+                     dir + 'R2.dat']
+
+        dataTypes = [('NOE', '600', 600.0e6),
+                     ('R1', '600', 600.0e6),
+                     ('R2', '600', 600.0e6)]
+        
+        # Create the run.
+        self.relax.generic.runs.create(self.run, 'jw')
+
+        # Read the sequence.
+        self.relax.interpreter._Sequence.read(self.run, file='test_seq', 
dir=sys.path[-1] + '/test_suite/data')
+
+        # Read the data.
+        for dataSet in xrange(len(dataPaths)):
+            self.relax.interpreter._Relax_data.read(self.run, 
dataTypes[dataSet][0], dataTypes[dataSet][1], dataTypes[dataSet][2], 
dataPaths[dataSet])
+
+        # Nuclei type.
+        self.relax.interpreter._Nuclei.nuclei('N')
+
+        # Set r and csa.
+        self.relax.interpreter._Value.set(self.run, 1.02 * 1e-10, 
'bond_length')
+        self.relax.interpreter._Value.set(self.run, -170 * 1e-6, 'csa')
+
+        # Select the frequency.
+        self.relax.interpreter._Jw_mapping.set_frq(self.run, frq=600.0 * 1e6)
+
+
+    def set_value(self, run):
+        """The value.set test."""
+
+        # Arguments.
+        self.run = run
+
+        # Create the run.
+        self.relax.generic.runs.create(self.run, 'jw')
+
+        # Read the sequence.
+        self.relax.interpreter._Sequence.read(self.run, file='test_seq', 
dir=sys.path[-1] + '/test_suite/data')
+
+        # Try to set the values.
+        bond_length = 1.02 * 1e-10
+        csa = -170 * 1e-6
+        self.relax.interpreter._Value.set(self.run, bond_length, 
'bond_length')
+        self.relax.interpreter._Value.set(self.run, csa, 'csa')
+
+        # Test values.
+        for i in xrange( len(self.relax.data.res[self.run]) ):
+            if self.relax.data.res[self.run][i].r != bond_length:
+                print 'Value of bond_length has not been set correctly'
+                return
+            if self.relax.data.res[self.run][i].csa != csa:
+                print 'Value of csa has not been set correctly'
+                return
+
+        # Success.
+        return 1
+

Modified: 1.2/test_suite/test_suite.py
URL: 
http://svn.gna.org/viewcvs/relax/1.2/test_suite/test_suite.py?rev=2457&r1=2456&r2=2457&view=diff
==============================================================================
--- 1.2/test_suite/test_suite.py (original)
+++ 1.2/test_suite/test_suite.py Fri Apr  7 13:43:32 2006
@@ -28,6 +28,7 @@
 # Import the tests.
 from diffusion_tensor import Diffusion_tensor
 from generic import Generic
+from jw_mapping import Jw
 from model_free import Mf
 from relax_fit import Relax_fit
 from run_create import Run_create
@@ -136,6 +137,23 @@
 
         # Execute the tests.
         self.exec_tests(self.mf_test_array)
+
+
+        # Reduced spectral density mapping tests.
+        #########################################
+
+        # Heading.
+        self.heading("The reduced spectral density mapping tests")
+
+        # Initialise the array containing each test element.
+        self.jw_test_array = []
+
+        # User function value.set() test.
+        self.jw_test_array.append(Jw(self.relax, 'set'))
+        self.jw_test_array.append(Jw(self.relax, 'calc'))
+
+        # Execute the tests.
+        self.exec_tests(self.jw_test_array)
 
 
         # Generic tests.
@@ -280,6 +298,17 @@
             self.summary_line(test)
 
 
+        # Reduced spectral density Mapping tests.
+        #########################################
+
+        # Heading.
+        sys.stdout.write("\nThe reduced spectral density tests:\n")
+
+        # Loop over the tests.
+        for test in self.jw_test_array:
+            self.summary_line(test)
+
+
         # Generic tests.
         ################
 




Related Messages


Powered by MHonArc, Updated Fri Apr 07 17:40:04 2006