Author: macraild
Date: Fri Apr 7 17:30:12 2006
New Revision: 2458
URL: http://svn.gna.org/viewcvs/relax?rev=2458&view=rev
Log:
Reorganisation of code introduced at r2450 for consistency
Following the suggestion of Edward dAuvergne on relax-devel
https://mail.gna.org/public/relax-devel/2006-04/msg00005.html
the code introduced at r2450 has been reorganised into specific
functions for the various run types
Modified:
1.2/generic_fns/minimise.py
1.2/specific_fns/jw_mapping.py
1.2/specific_fns/model_free.py
1.2/specific_fns/noe.py
1.2/specific_fns/relax_fit.py
1.2/specific_fns/specific_setup.py
Modified: 1.2/generic_fns/minimise.py
URL:
http://svn.gna.org/viewcvs/relax/1.2/generic_fns/minimise.py?rev=2458&r1=2457&r2=2458&view=diff
==============================================================================
--- 1.2/generic_fns/minimise.py (original)
+++ 1.2/generic_fns/minimise.py Fri Apr 7 17:30:12 2006
@@ -45,11 +45,12 @@
# Function type.
function_type =
self.relax.data.run_types[self.relax.data.run_names.index(run)]
- # Deselect residues lacking data:
- self.overfit_deselect(run, function_type)
-
# Specific calculate function setup.
calculate = self.relax.specific_setup.setup('calculate',
function_type)
+ overfit_deselect =
self.relax.specific_setup.setup('overfit_deselect', function_type)
+
+ # Deselect residues lacking data:
+ overfit_deselect(run)
# Monte Carlo simulation calculation.
if hasattr(self.relax.data, 'sim_state') and
self.relax.data.sim_state.has_key(run) and self.relax.data.sim_state[run]
== 1:
@@ -75,11 +76,12 @@
# Function type.
function_type =
self.relax.data.run_types[self.relax.data.run_names.index(run)]
- # Deselect residues lacking data:
- self.overfit_deselect(run, function_type)
-
# Specific grid search function.
grid_search = self.relax.specific_setup.setup('grid_search',
function_type)
+ overfit_deselect =
self.relax.specific_setup.setup('overfit_deselect', function_type)
+
+ # Deselect residues lacking data:
+ overfit_deselect(run)
# Monte Carlo simulation grid search.
if hasattr(self.relax.data, 'sim_state') and
self.relax.data.sim_state.has_key(run) and self.relax.data.sim_state[run]
== 1:
@@ -104,11 +106,12 @@
# Function type.
function_type =
self.relax.data.run_types[self.relax.data.run_names.index(run)]
- # Deselect residues lacking data:
- self.overfit_deselect(run, function_type)
-
# Specific minimisation function.
minimise = self.relax.specific_setup.setup('minimise',
function_type)
+ overfit_deselect =
self.relax.specific_setup.setup('overfit_deselect', function_type)
+
+ # Deselect residues lacking data:
+ overfit_deselect(run)
# Single Monte Carlo simulation.
if sim_index != None:
@@ -134,63 +137,6 @@
# Standard minimisation.
else:
minimise(run=run, min_algor=min_algor,
min_options=min_options, func_tol=func_tol, grad_tol=grad_tol,
max_iterations=max_iterations, constraints=constraints, scaling=scaling,
print_flag=print_flag)
-
-
- def overfit_deselect(self, run, run_type):
- """Function for deselecting residues without sufficient data to
support minimisation"""
-
- # Loop over residue data:
- for residue in self.relax.data.res[run]:
-
- # Skip unselected data:
- if not residue.select:
- continue
-
- # Check for sufficient data for mf
- if run_type == 'mf':
- if not hasattr(residue, 'relax_data'):
- residue.select = 0
- continue
-
- # Require 3 or more data points
- if len(residue.relax_data) < 3:
- residue.select = 0
- continue
-
- # Require at least as many data points as params to
prevent under-fitting
- if hasattr(residue, 'params'):
- if len(residue.params) > len(residue.relax_data):
- residue.select = 0
- continue
-
- # Test for structural data if required
- if hasattr(self.relax.data, 'diff') and
self.relax.data.diff.has_key(run):
- if self.relax.data.diff[run].type == 'spheroid' or
self.relax.data.diff[run].type == 'ellipsoid':
- if not hasattr(residue, 'xh_vect'):
- residue.select = 0
- continue
-
- # Check for sufficient data for jw
- if run_type == 'jw':
- if not hasattr(residue, 'relax_data'):
- residue.select = 0
- continue
-
- # Require 3 or more data points
- if len(residue.relax_data) < 3:
- residue.select = 0
- continue
-
- # Check for sufficient data for relax_fit run_type
- elif run_type == 'relax_fit':
- if not hasattr(residue, 'intensities'):
- residue.select = 0
- continue
-
- # Require 3 or more data points
- if len(residue.intensities) < 3:
- residue.select = 0
- continue
def reset_min_stats(self, run, index=None):
Modified: 1.2/specific_fns/jw_mapping.py
URL:
http://svn.gna.org/viewcvs/relax/1.2/specific_fns/jw_mapping.py?rev=2458&r1=2457&r2=2458&view=diff
==============================================================================
--- 1.2/specific_fns/jw_mapping.py (original)
+++ 1.2/specific_fns/jw_mapping.py Fri Apr 7 17:30:12 2006
@@ -237,6 +237,27 @@
return len(self.relax.data.res[self.run])
+ def overfit_deselect(self, run):
+ """Function for deselecting residues without sufficient data to
support calculation"""
+
+ # Test the sequence data exists:
+ if not self.relax.data.res.has_key(run):
+ raise RelaxNoSequenceError, run
+
+ # Loop over residue data:
+ for residue in self.relax.data.res[run]:
+
+ # Check for sufficient data
+ if not hasattr(residue, 'relax_data'):
+ residue.select = 0
+ continue
+
+ # Require 3 or more data points
+ if len(residue.relax_data) < 3:
+ residue.select = 0
+ continue
+
+
def return_conversion_factor(self, stat_type):
"""Dummy function for returning 1.0."""
Modified: 1.2/specific_fns/model_free.py
URL:
http://svn.gna.org/viewcvs/relax/1.2/specific_fns/model_free.py?rev=2458&r1=2457&r2=2458&view=diff
==============================================================================
--- 1.2/specific_fns/model_free.py (original)
+++ 1.2/specific_fns/model_free.py Fri Apr 7 17:30:12 2006
@@ -2620,6 +2620,44 @@
return ["InitAll yes"]
+ def overfit_deselect(self, run):
+ """Function for deselecting residues without sufficient data to
support minimisation"""
+
+ # Test sequence data exists.
+ if not self.relax.data.res.has_key(run):
+ raise RelaxNoSequenceError, run
+
+ # Loop over residue data:
+ for residue in self.relax.data.res[run]:
+
+ # Skip unselected data:
+ if not residue.select:
+ continue
+
+ # Check for data structure.
+ if not hasattr(residue, 'relax_data'):
+ residue.select = 0
+ continue
+
+ # Require 3 or more data points
+ if len(residue.relax_data) < 3:
+ residue.select = 0
+ continue
+
+ # Require at least as many data points as params to prevent
under-fitting
+ if hasattr(residue, 'params'):
+ if len(residue.params) > len(residue.relax_data):
+ residue.select = 0
+ continue
+
+ # Test for structural data if required
+ if hasattr(self.relax.data, 'diff') and
self.relax.data.diff.has_key(run):
+ if self.relax.data.diff[run].type == 'spheroid' or
self.relax.data.diff[run].type == 'ellipsoid':
+ if not hasattr(residue, 'xh_vect'):
+ residue.select = 0
+ continue
+
+
def read_columnar_col_numbers(self, header):
"""Function for sorting the column numbers from the columnar
formatted results file."""
Modified: 1.2/specific_fns/noe.py
URL:
http://svn.gna.org/viewcvs/relax/1.2/specific_fns/noe.py?rev=2458&r1=2457&r2=2458&view=diff
==============================================================================
--- 1.2/specific_fns/noe.py (original)
+++ 1.2/specific_fns/noe.py Fri Apr 7 17:30:12 2006
@@ -58,10 +58,6 @@
if not self.run in self.relax.data.run_names:
raise RelaxNoRunError, self.run
- # Test if sequence data is loaded.
- if not self.relax.data.res.has_key(self.run):
- raise RelaxNoSequenceError, self.run
-
# Loop over the sequence.
for i in xrange(len(self.relax.data.res[self.run])):
# Remap the data structure 'self.relax.data.res[self.run][i]'.
@@ -71,15 +67,27 @@
if not data.select:
continue
- # Skip residues which have no intensity values or errors.
- if not (hasattr(data, 'ref') and hasattr(data, 'sat') and
hasattr(data, 'ref_err') and hasattr(data, 'sat_err')):
- continue
-
# Calculate the NOE.
data.noe = data.sat / data.ref
# Calculate the error.
data.noe_err = sqrt((data.sat_err * data.ref)**2 +
(data.ref_err * data.sat)**2) / data.ref**2
+
+
+ def overfit_deselect(self, run):
+ """Function for deselecting residues without sufficient data to
support calculation"""
+
+ # Test the sequence data exists:
+ if not self.relax.data.res.has_key(run):
+ raise RelaxNoSequenceError, run
+
+ # Loop over residue data:
+ for residue in self.relax.data.res[run]:
+
+ # Check for sufficient data.
+ if not (hasattr(residue, 'ref') and hasattr(residue, 'sat')
and hasattr(residue, 'ref_err') and hasattr(residue, 'sat_err')):
+ residue.select = 0
+ continue
def read(self, run=None, file=None, dir=None, spectrum_type=None,
format=None, heteronuc=None, proton=None, int_col=None):
Modified: 1.2/specific_fns/relax_fit.py
URL:
http://svn.gna.org/viewcvs/relax/1.2/specific_fns/relax_fit.py?rev=2458&r1=2457&r2=2458&view=diff
==============================================================================
--- 1.2/specific_fns/relax_fit.py (original)
+++ 1.2/specific_fns/relax_fit.py Fri Apr 7 17:30:12 2006
@@ -825,6 +825,27 @@
return len(self.relax.data.res[self.run])
+ def overfit_deselect(self, run):
+ """Function for deselecting residues without sufficient data to
support minimisation"""
+
+ # Test the sequence data exists:
+ if not self.relax.data.res.has_key(run):
+ raise RelaxNoSequenceError, run
+
+ # Loop over residue data:
+ for residue in self.relax.data.res[run]:
+
+ # Check for sufficient data
+ if not hasattr(residue, 'intensities'):
+ residue.select = 0
+ continue
+
+ # Require 3 or more data points
+ if len(residue.intensities) < 3:
+ residue.select = 0
+ continue
+
+
def read(self, run=None, file=None, dir=None, relax_time=0.0,
format=None, heteronuc=None, proton=None, int_col=None):
"""Function for reading peak intensity data."""
Modified: 1.2/specific_fns/specific_setup.py
URL:
http://svn.gna.org/viewcvs/relax/1.2/specific_fns/specific_setup.py?rev=2458&r1=2457&r2=2458&view=diff
==============================================================================
--- 1.2/specific_fns/specific_setup.py (original)
+++ 1.2/specific_fns/specific_setup.py Fri Apr 7 17:30:12 2006
@@ -146,6 +146,10 @@
if self.eqi == 'num_instances':
return self.relax.specific.jw_mapping.num_instances
+ # Overfit deselect.
+ if self.eqi == 'overfit_deselect':
+ return self.relax.specific.jw_mapping.overfit_deselect
+
# Pack Monte Carlo simulation data function.
if self.eqi == 'pack_sim_data':
return self.relax.specific.jw_mapping.sim_pack_data
@@ -254,6 +258,10 @@
if self.eqi == 'num_instances':
return self.relax.specific.model_free.num_instances
+ # Overfit deselect.
+ if self.eqi == 'overfit_deselect':
+ return self.relax.specific.model_free.overfit_deselect
+
# Pack Monte Carlo simulation data function.
if self.eqi == 'pack_sim_data':
return self.relax.specific.model_free.sim_pack_data
@@ -350,6 +358,10 @@
if self.eqi == 'calculate':
return self.relax.specific.noe.calculate
+ # Overfit deselect.
+ if self.eqi == 'overfit_deselect':
+ return self.relax.specific.noe.overfit_deselect
+
# Read results file function (Columnar format).
if self.eqi == 'read_columnar_results':
return self.relax.specific.noe.read_columnar_results
@@ -397,6 +409,10 @@
# Number of instances.
if self.eqi == 'num_instances':
return self.relax.specific.relax_fit.num_instances
+
+ # Overfit deselect.
+ if self.eqi == 'overfit_deselect':
+ return self.relax.specific.relax_fit.overfit_deselect
# Pack Monte Carlo simulation data function.
if self.eqi == 'pack_sim_data':
_______________________________________________
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