Author: bugman Date: Mon Dec 14 11:38:04 2009 New Revision: 10087 URL: http://svn.gna.org/viewcvs/relax?rev=10087&view=rev Log: Modified all the specific analysis overfit_deselect() methods to warn when spins are deselected. Modified: 1.3/specific_fns/api_common.py 1.3/specific_fns/consistency_tests.py 1.3/specific_fns/frame_order.py 1.3/specific_fns/hybrid.py 1.3/specific_fns/jw_mapping.py 1.3/specific_fns/model_free/main.py 1.3/specific_fns/n_state_model.py 1.3/specific_fns/noe.py 1.3/specific_fns/relax_fit.py Modified: 1.3/specific_fns/api_common.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/api_common.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/api_common.py (original) +++ 1.3/specific_fns/api_common.py Mon Dec 14 11:38:04 2009 @@ -177,6 +177,9 @@ def _overfit_deselect_dummy(self): """Dummy method, normally for deselecting spins with insufficient data for minimisation.""" + # Print out. + print("\n\nOver-fit spin deselection.\n") + def _return_no_conversion_factor(self, param, spin=None, spin_id=None): """Method for returning 1.0. Modified: 1.3/specific_fns/consistency_tests.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/consistency_tests.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/consistency_tests.py (original) +++ 1.3/specific_fns/consistency_tests.py Mon Dec 14 11:38:04 2009 @@ -23,6 +23,7 @@ # Python module imports. from re import search +from warnings import warn # relax module imports. from api_base import API_base @@ -32,6 +33,7 @@ from maths_fns.consistency_tests import Consistency from physical_constants import N15_CSA, NH_BOND_LENGTH, h_bar, mu0, return_gyromagnetic_ratio from relax_errors import RelaxError, RelaxFuncSetupError, RelaxNoSequenceError, RelaxNoValueError, RelaxProtonTypeError, RelaxSpinTypeError +from relax_warnings import RelaxDeselectWarning class Consistency_tests(API_base, API_common): @@ -349,7 +351,10 @@ def overfit_deselect(self): - """Function for deselecting spins without sufficient data to support calculation""" + """Deselect spins which have insufficient data to support calculation.""" + + # Print out. + print("\n\nOver-fit spin deselection.\n") # Test if the sequence data is loaded. if not exists_mol_res_spin_data(): @@ -360,13 +365,13 @@ # Check for sufficient data if not hasattr(spin, 'relax_data'): + warn(RelaxDeselectWarning(spin_id, 'relaxation data is missing')) spin.select = False - continue # Require 3 or more data points - if len(spin.relax_data) < 3: + elif len(spin.relax_data) < 3: + warn(RelaxDeselectWarning(spin_id, 'insufficient relaxation data, 3 or more data points are required')) spin.select = False - continue return_data_name_doc = """ Modified: 1.3/specific_fns/frame_order.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/frame_order.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/frame_order.py (original) +++ 1.3/specific_fns/frame_order.py Mon Dec 14 11:38:04 2009 @@ -45,7 +45,7 @@ from maths_fns.rotation_matrix import two_vect_to_R from relax_errors import RelaxError, RelaxInfError, RelaxNaNError, RelaxNoModelError from relax_io import open_write_file -from relax_warnings import RelaxWarning +from relax_warnings import RelaxWarning, RelaxDeselectWarning class Frame_order(API_base, API_common): Modified: 1.3/specific_fns/hybrid.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/hybrid.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/hybrid.py (original) +++ 1.3/specific_fns/hybrid.py Mon Dec 14 11:38:04 2009 @@ -19,6 +19,9 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # ############################################################################### + +# Python module imports. +from warnings import warn # relax module imports. from generic_fns import pipes @@ -26,6 +29,7 @@ from generic_fns.sequence import compare_sequence from relax_errors import RelaxError, RelaxNoSequenceError, RelaxPipeError, RelaxSequenceError import setup +from relax_warnings import RelaxDeselectWarning class Hybrid: Modified: 1.3/specific_fns/jw_mapping.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/jw_mapping.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/jw_mapping.py (original) +++ 1.3/specific_fns/jw_mapping.py Mon Dec 14 11:38:04 2009 @@ -22,6 +22,7 @@ # Python module imports. from re import search +from warnings import warn # relax module imports. from api_base import API_base @@ -31,6 +32,7 @@ from maths_fns.jw_mapping import Mapping from physical_constants import N15_CSA, NH_BOND_LENGTH, h_bar, mu0, return_gyromagnetic_ratio from relax_errors import RelaxError, RelaxFuncSetupError, RelaxNoSequenceError, RelaxNoValueError, RelaxProtonTypeError, RelaxSpinTypeError +from relax_warnings import RelaxDeselectWarning class Jw_mapping(API_base, API_common): @@ -326,6 +328,9 @@ def overfit_deselect(self): """Deselect spins which have insufficient data to support calculation.""" + # Print out. + print("\n\nOver-fit spin deselection.\n") + # Test the sequence data exists. if not exists_mol_res_spin_data(): raise RelaxNoSequenceError @@ -334,13 +339,13 @@ for spin in spin_loop(): # Check if data exists. if not hasattr(spin, 'relax_data'): + warn(RelaxDeselectWarning(spin_id, 'relaxation data is missing')) spin.select = False - continue # Require 3 or more data points. - if len(spin.relax_data) < 3: + elif len(spin.relax_data) < 3: + warn(RelaxDeselectWarning(spin_id, 'insufficient relaxation data, 3 or more data points are required')) spin.select = False - continue return_data_name_doc = """ Modified: 1.3/specific_fns/model_free/main.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/model_free/main.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/model_free/main.py (original) +++ 1.3/specific_fns/model_free/main.py Mon Dec 14 11:38:04 2009 @@ -37,8 +37,9 @@ from maths_fns.mf import Mf from minfx.generic import generic_minimise from physical_constants import N15_CSA, NH_BOND_LENGTH +import specific_fns from relax_errors import RelaxError, RelaxFuncSetupError, RelaxInfError, RelaxInvalidDataError, RelaxLenError, RelaxNaNError, RelaxNoModelError, RelaxNoPdbError, RelaxNoResError, RelaxNoSequenceError, RelaxNoSpinSpecError, RelaxNoTensorError, RelaxNoValueError, RelaxNoVectorsError, RelaxNucleusError, RelaxTensorError -import specific_fns +from relax_warnings import RelaxDeselectWarning @@ -2010,6 +2011,9 @@ def overfit_deselect(self): """Deselect spins which have insufficient data to support minimisation.""" + # Print out. + print("\n\nOver-fit spin deselection.\n") + # Test if sequence data exists. if not exists_mol_res_spin_data(): raise RelaxNoSequenceError @@ -2020,23 +2024,28 @@ need_vect = True # Loop over the sequence. - for spin in spin_loop(): + for spin, spin_id in spin_loop(return_id=True): # Relaxation data must exist! if not hasattr(spin, 'relax_data'): + warn(RelaxDeselectWarning(spin_id, 'relaxation data is missing')) spin.select = False # Require 3 or more relaxation data points. elif len(spin.relax_data) < 3: + warn(RelaxDeselectWarning(spin_id, 'insufficient relaxation data, 3 or more data points are required')) spin.select = False # Require at least as many data points as params to prevent over-fitting. elif hasattr(spin, 'params') and spin.params and len(spin.params) > len(spin.relax_data): + warn(RelaxDeselectWarning(spin_id, 'over-fitting - more parameters than data points')) spin.select = False # Test for structural data if required. elif need_vect and not hasattr(spin, 'xh_vect'): + warn(RelaxDeselectWarning(spin_id, 'structural data missing')) spin.select = False elif need_vect and spin.xh_vect == None: + warn(RelaxDeselectWarning(spin_id, 'structural data missing')) spin.select = False Modified: 1.3/specific_fns/n_state_model.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/n_state_model.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/n_state_model.py (original) +++ 1.3/specific_fns/n_state_model.py Mon Dec 14 11:38:04 2009 @@ -49,7 +49,7 @@ from physical_constants import dipolar_constant, g1H, pcs_constant, return_gyromagnetic_ratio from relax_errors import RelaxError, RelaxInfError, RelaxModelError, RelaxNaNError, RelaxNoModelError, RelaxNoTensorError from relax_io import open_write_file -from relax_warnings import RelaxWarning +from relax_warnings import RelaxWarning, RelaxDeselectWarning class N_state_model(API_base, API_common): Modified: 1.3/specific_fns/noe.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/noe.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/noe.py (original) +++ 1.3/specific_fns/noe.py Mon Dec 14 11:38:04 2009 @@ -154,7 +154,10 @@ def overfit_deselect(self): - """Deselect spins which have insufficient data to support calculation""" + """Deselect spins which have insufficient data to support calculation.""" + + # Print out. + print("\n\nOver-fit spin deselection.\n") # Test the sequence data exists. if not exists_mol_res_spin_data(): Modified: 1.3/specific_fns/relax_fit.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/relax_fit.py?rev=10087&r1=10086&r2=10087&view=diff ============================================================================== --- 1.3/specific_fns/relax_fit.py (original) +++ 1.3/specific_fns/relax_fit.py Mon Dec 14 11:38:04 2009 @@ -29,6 +29,7 @@ from numpy import array, average, dot, float64, identity, zeros from numpy.linalg import inv from re import match, search +from warnings import warn # relax module imports. from api_base import API_base @@ -37,6 +38,7 @@ from generic_fns import pipes from generic_fns.mol_res_spin import exists_mol_res_spin_data, generate_spin_id, return_spin, spin_loop from relax_errors import RelaxError, RelaxFuncSetupError, RelaxLenError, RelaxNoModelError, RelaxNoSequenceError +from relax_warnings import RelaxDeselectWarning # C modules. if C_module_exp_fn: @@ -839,6 +841,9 @@ def overfit_deselect(self): """Deselect spins which have insufficient data to support minimisation.""" + # Print out. + print("\n\nOver-fit spin deselection.\n") + # Test the sequence data exists. if not exists_mol_res_spin_data(): raise RelaxNoSequenceError @@ -847,13 +852,13 @@ for spin in spin_loop(): # Check if data exists. if not hasattr(spin, 'intensities'): + warn(RelaxDeselectWarning(spin_id, 'intensity data is missing')) spin.select = False - continue # Require 3 or more data points. - if len(spin.intensities) < 3: + elif len(spin.intensities) < 3: + warn(RelaxDeselectWarning(spin_id, 'insufficient data, 3 or more data points are required')) spin.select = False - continue def return_data(self, spin):