Author: bugman Date: Sat Dec 2 05:32:43 2006 New Revision: 2901 URL: http://svn.gna.org/viewcvs/relax?rev=2901&view=rev Log: Ported r2719 to r2743 from the 1.3 line. The command used was: svn merge -r2718:2743 svn+ssh://bugman@xxxxxxxxxxx/svn/relax/1.3 Added: branches/test_suite/docs/data_model_redesign - copied unchanged from r2743, 1.3/docs/data_model_redesign Modified: branches/test_suite/docs/CHANGES branches/test_suite/docs/Release_Checklist branches/test_suite/dx/isosurface_3D.py branches/test_suite/errors.py branches/test_suite/generic_fns/model_selection.py branches/test_suite/io.py branches/test_suite/specific_fns/hybrid.py branches/test_suite/specific_fns/model_free.py Modified: branches/test_suite/docs/CHANGES URL: http://svn.gna.org/viewcvs/relax/branches/test_suite/docs/CHANGES?rev=2901&r1=2900&r2=2901&view=diff ============================================================================== --- branches/test_suite/docs/CHANGES (original) +++ branches/test_suite/docs/CHANGES Sat Dec 2 05:32:43 2006 @@ -1,3 +1,36 @@ +Version 1.2.8 +(4 November 2006, from /1.2) +http://svn.gna.org/svn/relax/tags/1.2.8 + + Features: + * Preliminary support for RNA/DNA. (bug #7241) + * Significant improvements to the SCons build system (see 'scons --help'). + * Expansion and improvement of the relax development chapter. + * The grace.write() user function works with reduced spectral density mapping. (task #4002) + + Changes: + * MS Windows installation instructions have been added to the manual. + * The RelaxWarning system has been added to standardise warning messages. + * The relax manual now describes the test suite. (task #3781) + * The 15N CSA values in the sample scripts are now all -172 ppm. + * The ambiguity cased by supplying the option 'None' together with Newton optimisation has been resolved in the documentation. (task #3630) + * Optimisation tests have been added to the test suite. + + Bugfixes: + * Model selection between the global diffusion models no longer fails if all residues of the local tm models have been deselected by model elimination. (bug #7192) + * The 'angles.py' sample script no longer fails when residue specific relaxation data is missing (corrupt input data). (bug #7224) + * Prior to executing Modelfree4, Dasha, Molmol, Grace, or OpenDX, tests are run to determine if the binary exists, is executable, and is in the system path. (bug #7225) + * Model elimination when using the model-free model 'm0' no longer fails. (bug #7226) + * The strict checking of the Da and Dr diffusion tensor parameters has been relaxed to allow for optimisation imprecision. (bug #7297) + * The reading of Modelfree4 mfout results files no longer fails when residue specific relaxation data is missing (corrupt input data). (bug #7277) + * If optimisation returns an infinit value or a NaN value, these are now caught and a RelaxError thrown. (bug #6503, task #3621) + * The sigma(NOE) equations of Chapter 8 of the manual have been fixed. (bug #7402) + * Files containing relaxation data not consisting of exactly 4 columns will now be read. (bug #7583) + * Model-free results files from relax versions prior to 1.2.5 are now properly read. (bug #7587) + * Model selection between the global diffusion models does not fail when the local tm models are included. (bug #7616) + + + Version 1.2.7 (18 September 2006, from /1.2) http://svn.gna.org/svn/relax/tags/1.2.7 Modified: branches/test_suite/docs/Release_Checklist URL: http://svn.gna.org/viewcvs/relax/branches/test_suite/docs/Release_Checklist?rev=2901&r1=2900&r2=2901&view=diff ============================================================================== --- branches/test_suite/docs/Release_Checklist (original) +++ branches/test_suite/docs/Release_Checklist Sat Dec 2 05:32:43 2006 @@ -1,7 +1,3 @@ -* Review the SVN log and add an entry into the CHANGES file (in the 'docs/' directory) for the current release. Create three sections titled 'Features', 'Changes', and 'Bugfixes'. - - - * Make a copy of the current head to the tags directory using a command such as: $ svn cp svn+ssh://bugman@xxxxxxxxxxx/svn/relax/1.2 svn+ssh://bugman@xxxxxxxxxxx/svn/relax/tags/1.2.4 @@ -13,6 +9,10 @@ * Checkout the tagged version with: $ svn co svn+ssh://bugman@xxxxxxxxxxx/svn/relax/tags/1.2.4 relax-1.2.4 + + + +* Review the SVN logs and add an entry into the CHANGES file (in the 'docs/' directory) for the current release. Create three sections titled 'Features', 'Changes', and 'Bugfixes'. Commit the changes and then port the revision back into the main line. @@ -49,4 +49,4 @@ -* Post the release message to the relax-announce mailing list and as a news item on the relax Gna! website. +* Post the release message to the relax-announce mailing list, as a news item on the relax Gna! website, and on the freshmeat website. Modified: branches/test_suite/dx/isosurface_3D.py URL: http://svn.gna.org/viewcvs/relax/branches/test_suite/dx/isosurface_3D.py?rev=2901&r1=2900&r2=2901&view=diff ============================================================================== --- branches/test_suite/dx/isosurface_3D.py (original) +++ branches/test_suite/dx/isosurface_3D.py Sat Dec 2 05:32:43 2006 @@ -104,7 +104,7 @@ self.calculate(run=self.run, res_num=self.res_num, print_flag=0) # Get the minimisation statistics for the model. - k, n, chi2 = self.model_stats(run=self.run, instance=self.index, min_instances=1) + k, n, chi2 = self.model_stats(run=self.run, instance=self.index) # Set maximum value to 1e20 to stop the OpenDX server connection from breaking. if chi2 > 1e20: Modified: branches/test_suite/errors.py URL: http://svn.gna.org/viewcvs/relax/branches/test_suite/errors.py?rev=2901&r1=2900&r2=2901&view=diff ============================================================================== --- branches/test_suite/errors.py (original) +++ branches/test_suite/errors.py Sat Dec 2 05:32:43 2006 @@ -167,7 +167,7 @@ if Debug: self.save_state() - # PDB data corresponding to the run already exists. + # No chains within the PDB file. class RelaxNoPdbChainError(BaseError): def __init__(self): self.text = "No peptide or nucleotide chains can be found within the PDB file." Modified: branches/test_suite/generic_fns/model_selection.py URL: http://svn.gna.org/viewcvs/relax/branches/test_suite/generic_fns/model_selection.py?rev=2901&r1=2900&r2=2901&view=diff ============================================================================== --- branches/test_suite/generic_fns/model_selection.py (original) +++ branches/test_suite/generic_fns/model_selection.py Sat Dec 2 05:32:43 2006 @@ -207,8 +207,14 @@ if self.skip_function[run](run=run, instance=i, min_instances=self.min_instances, num_instances=self.num_instances[j]): continue + # Global stats. + if self.num_instances[j] > self.min_instances or self.num_instances[j] == 1: + global_stats = 1 + else: + global_stats = 0 + # Get the model statistics. - k, n, chi2 = self.model_statistics[run](run=run, instance=i, min_instances=self.min_instances) + k, n, chi2 = self.model_statistics[run](run=run, instance=i, global_stats=global_stats) # Missing data sets. if k == None or n == None or chi2 == None: Modified: branches/test_suite/io.py URL: http://svn.gna.org/viewcvs/relax/branches/test_suite/io.py?rev=2901&r1=2900&r2=2901&view=diff ============================================================================== --- branches/test_suite/io.py (original) +++ branches/test_suite/io.py Sat Dec 2 05:32:43 2006 @@ -42,7 +42,7 @@ __builtin__.devnull_import_message = message.args[0] from os import F_OK, X_OK, access, altsep, getenv, makedirs, pathsep, remove, sep, stat -from os.path import expanduser +from os.path import expanduser, basename, splitext from re import match, search from string import split import sys @@ -154,6 +154,13 @@ # Return the file path. return file_path + + + def file_root(self, file_path): + """Return the root file name, striped of path and extension details""" + + root,ext = splitext(file_path) + return basename(root) def log(self, file_name=None, dir=None, compress_type=0, print_flag=1): Modified: branches/test_suite/specific_fns/hybrid.py URL: http://svn.gna.org/viewcvs/relax/branches/test_suite/specific_fns/hybrid.py?rev=2901&r1=2900&r2=2901&view=diff ============================================================================== --- branches/test_suite/specific_fns/hybrid.py (original) +++ branches/test_suite/specific_fns/hybrid.py Sat Dec 2 05:32:43 2006 @@ -89,7 +89,7 @@ self.relax.data.hybrid_runs[hybrid] = runs - def model_statistics(self, run=None, instance=None, min_instances=None): + def model_statistics(self, run=None, instance=None, global_stats=None): """Function for returning the values k, n, and chi2 of the hybrid. k - number of parameters. @@ -116,7 +116,7 @@ # Loop over the instances. for i in xrange(num): # Get the statistics. - k, n, chi2 = model_statistics(run, instance=i) + k, n, chi2 = model_statistics(run, instance=i, global_stats=global_stats) # Bad stats. if k == None or n == None or chi2 == None: Modified: branches/test_suite/specific_fns/model_free.py URL: http://svn.gna.org/viewcvs/relax/branches/test_suite/specific_fns/model_free.py?rev=2901&r1=2900&r2=2901&view=diff ============================================================================== --- branches/test_suite/specific_fns/model_free.py (original) +++ branches/test_suite/specific_fns/model_free.py Sat Dec 2 05:32:43 2006 @@ -2505,7 +2505,7 @@ self.relax.data.res[run][i].params = params - def model_statistics(self, run=None, instance=None, min_instances=None): + def model_statistics(self, run=None, instance=None, global_stats=None): """Function for returning k, n, and chi2. k - number of parameters. @@ -2517,11 +2517,12 @@ self.run = run # Determine if local or global statistics will be returned. - global_stats = 1 - for i in xrange(len(self.relax.data.res[self.run])): - if hasattr(self.relax.data.res[self.run][i], 'chi2') and self.relax.data.res[self.run][i].chi2 != None: - global_stats = 0 - break + if global_stats == None: + global_stats = 1 + for i in xrange(len(self.relax.data.res[self.run])): + if hasattr(self.relax.data.res[self.run][i], 'chi2') and self.relax.data.res[self.run][i].chi2 != None: + global_stats = 0 + break # Determine the parameter set type. self.param_set = self.determine_param_set_type() @@ -2554,6 +2555,7 @@ # Count the number of data points. n = 0 + chi2 = 0 for i in xrange(len(self.relax.data.res[self.run])): # Skip unselected residues. if not self.relax.data.res[self.run][i].select: @@ -2565,8 +2567,13 @@ n = n + len(self.relax.data.res[self.run][i].relax_data) + # Local tm models. + if self.param_set == 'local_tm': + chi2 = chi2 + self.relax.data.res[self.run][i].chi2 + # The chi2 value. - chi2 = self.relax.data.chi2[self.run] + if self.param_set != 'local_tm': + chi2 = self.relax.data.chi2[self.run] # Return the data. return k, n, chi2 @@ -2927,9 +2934,21 @@ # Set up the model-free models. if self.data_set == 'value': + # Get the model-free model. model = self.file_line[self.col['model']] + + # Get the model-free equation. equation = self.file_line[self.col['eqi']] + + # Get the model-free parameters. params = eval(self.file_line[self.col['params']]) + + # Fix for the 1.2 relax versions whereby the parameter 'tm' was renamed to 'local_tm' (which occurred in version 1.2.5). + for i in xrange(len(params)): + if params[i] == 'tm': + params[i] = 'local_tm' + + # Set up the model-free model. if model and equation: self.model_setup(self.run, model=model, equation=equation, params=params, res_num=self.res_num)