Author: bugman Date: Thu Jan 20 20:45:52 2011 New Revision: 12386 URL: http://svn.gna.org/viewcvs/relax?rev=12386&view=rev Log: Merged revisions 12346-12347,12366,12370,12373-12374,12379 via svnmerge from svn+ssh://bugman@xxxxxxxxxxx/svn/relax/1.3 ........ r12346 | bugman | 2011-01-19 15:52:41 +0100 (Wed, 19 Jan 2011) | 3 lines Renamed the model-free results LaTeX table generation script. ........ r12347 | bugman | 2011-01-19 15:53:41 +0100 (Wed, 19 Jan 2011) | 5 lines Created a sample script to create a CSV file of model-free results. This is based on the LaTeX generation script. ........ r12366 | bugman | 2011-01-20 16:05:44 +0100 (Thu, 20 Jan 2011) | 5 lines Loosened the te check in value_check() so that a model-free system test would pass on 32-bit Linux. The system test is test_opt_constr_bfgs_back_S2_0_970_te_2048_Rex_0_149(). ........ r12370 | bugman | 2011-01-20 16:35:54 +0100 (Thu, 20 Jan 2011) | 14 lines Merged the relax 1.3.8 CHANGES file into the main line. The command used was: svn merge -r12368:12369 svn+ssh://bugman@xxxxxxxxxxx/svn/relax/tags/1.3.8 ..... r12369 | bugman | 2011-01-20 16:31:31 +0100 (Thu, 20 Jan 2011) | 3 lines Changed paths: M /tags/1.3.8/docs/CHANGES Updated the changes file for relax version 1.3.8 (http://www.nmr-relax.com/download.html). ..... ........ r12373 | bugman | 2011-01-20 17:31:59 +0100 (Thu, 20 Jan 2011) | 3 lines Updated the release checklist to include a section for binary distributions on other platforms. ........ r12374 | bugman | 2011-01-20 17:32:58 +0100 (Thu, 20 Jan 2011) | 3 lines Modified the release checklist to include --no-perms as an rsync arg to http://download.gna.org/relax/. ........ r12379 | bugman | 2011-01-20 18:20:55 +0100 (Thu, 20 Jan 2011) | 3 lines Added the relax verion in http://www.nmr-relax.com/api/index.html needs to be changed to the checklist. ........ Added: branches/bieri_gui/sample_scripts/mf_table_csv.py - copied unchanged from r12379, 1.3/sample_scripts/mf_table_csv.py branches/bieri_gui/sample_scripts/mf_table_latex.py - copied unchanged from r12379, 1.3/sample_scripts/mf_table_latex.py Removed: branches/bieri_gui/sample_scripts/latex_mf_table.py Modified: branches/bieri_gui/ (props changed) branches/bieri_gui/docs/CHANGES branches/bieri_gui/docs/Release_Checklist branches/bieri_gui/test_suite/system_tests/model_free.py Propchange: branches/bieri_gui/ ------------------------------------------------------------------------------ --- svnmerge-integrated (original) +++ svnmerge-integrated Thu Jan 20 20:45:52 2011 @@ -1,1 +1,1 @@ -/1.3:1-12328 +/1.3:1-12385 Modified: branches/bieri_gui/docs/CHANGES URL: http://svn.gna.org/viewcvs/relax/branches/bieri_gui/docs/CHANGES?rev=12386&r1=12385&r2=12386&view=diff ============================================================================== --- branches/bieri_gui/docs/CHANGES (original) +++ branches/bieri_gui/docs/CHANGES Thu Jan 20 20:45:52 2011 @@ -1,3 +1,22 @@ +Version 1.3.8 +(20 January 2011, from /1.3) +http://svn.gna.org/svn/relax/tags/1.3.8 + + Features: + * Created a sample script to create a CSV file of model-free results for reading into spreadsheets, based on the LaTeX table generation script. + * Extensive system tests for all the model-free models have been introduced. + + Changes: + * Loosened the te check in value_check() so that the test_opt_constr_bfgs_back_S2_0_970_te_2048_Rex_0_149() model-free system test would pass on 32-bit Linux. + * Renamed the model-free results LaTeX table generation script. + * Created a test-suite module to aid in the back-calculation of relaxation data from model-free parameters independent of relax. + * Updates for Python 3.0 using 2to3. + + Bugfixes: + * Fix for running scripts in certain versions of python - if a file with the same name as the script lies in one of the paths in sys.path, then that file will be executed rather than the script. + + + Version 1.3.7 (10 January 2011, from /1.3) http://svn.gna.org/svn/relax/tags/1.3.7 Modified: branches/bieri_gui/docs/Release_Checklist URL: http://svn.gna.org/viewcvs/relax/branches/bieri_gui/docs/Release_Checklist?rev=12386&r1=12385&r2=12386&view=diff ============================================================================== --- branches/bieri_gui/docs/Release_Checklist (original) +++ branches/bieri_gui/docs/Release_Checklist Thu Jan 20 20:45:52 2011 @@ -66,9 +66,23 @@ +* Build other distribution packages by first checking out the tag, bundling minfx: + +$ svn co svn+ssh://bugman@xxxxxxxxxxx/svn/relax/tags/1.3.1 +$ svn co svn+ssh://bugman@xxxxxxxxxxx/svn/minfx/trunk/minfx +$ scons binary_dist key=xxxxx + +Or: + +$ svn co http://svn.gna.org/svn/relax/tags/1.3.1 +$ svn co http://svn.gna.org/svn/minfx/trunk/minfx +$ scons binary_dist + + + * Move the distribution files and their signatures, as well as the PDF manual, to the mirror directory for the relax download site. This directory should contain all the files and directories accessible from 'http://download.gna.org/relax/'. Rsync the entire directory contents to download.gna.org/upload/relax/ using the command -$ rsync --delete -av --rsh="ssh" . bugman@xxxxxxxxxxxxxxxx:/upload/relax/ +$ rsync --delete -av --no-perms --rsh="ssh" . bugman@xxxxxxxxxxxxxxxx:/upload/relax/ @@ -84,7 +98,7 @@ -* Create the API documentation for the current version with the command: +* Modifiy http://www.nmr-relax.com/api/index.html for the new version number and create the API documentation for the current version with the command: $ scons api_manual_html Removed: branches/bieri_gui/sample_scripts/latex_mf_table.py URL: http://svn.gna.org/viewcvs/relax/branches/bieri_gui/sample_scripts/latex_mf_table.py?rev=12385&view=auto ============================================================================== --- branches/bieri_gui/sample_scripts/latex_mf_table.py (original) +++ branches/bieri_gui/sample_scripts/latex_mf_table.py (removed) @@ -1,246 +1,0 @@ -############################################################################### -# # -# Copyright (C) 2007-2009 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 # -# # -############################################################################### - -"""Script for converting the model-free results into a LaTeX table. - -The longtable LaTeX package is necessary to allow the table to span multiple pages. This table also -uses the more elegant booktable format. The packages can be included using the LaTeX preamble -commands: - -\usepackage{longtable} -\usepackage{booktabs} - -Assuming the file name 'results.tex', the resultant table can be placed into a LaTeX manuscript -with the command: - -\input{results} -""" - -# Python module imports. -from string import replace - -# relax module imports. -from generic_fns.mol_res_spin import spin_loop -from generic_fns import pipes - - -# Name of the results file. -RESULTS_FILE = 'final' - - -class Latex: - def __init__(self): - """Convert the final results into a LaTeX table.""" - - # Create the data pipe. - pipe.create(RESULTS_FILE, 'mf') - - # Load the model-free results. - results.read(RESULTS_FILE, dir=None) - - # Open the file. - self.file = open('results.tex', 'w') - - # LaTeX header. - self.latex_header() - - # Table headings. - self.headings() - - # Table footer (longtable repeating footers come just after the headings). - self.footer() - - # The table body. - self.table_body() - - # LaTeX ending. - self.latex_ending() - - # Close the file. - self.file.close() - - - def footer(self): - """Create the end of the table.""" - - # Bottomrule. - self.file.write("\\bottomrule\n") - - # End the repeating footer. - self.file.write("\\endfoot\n\n") - - - def headings(self): - """Create the LaTeX table headings.""" - - # Spacing. - self.file.write("\\\\[-5pt]\n") - - # Toprule. - self.file.write("\\toprule\n\n") - - # Headings. - self.file.write("% Headings.\n") - self.file.write("Spin &%\n") - self.file.write("Model &%\n") - self.file.write("\multicolumn{2}{c}{$S^2$} &%\n") - self.file.write("\multicolumn{2}{c}{$S^2_f$} &%\n") - self.file.write("\multicolumn{2}{c}{$\\tau_e < 100$ or $\\tau_f$} &%\n") - self.file.write("\multicolumn{2}{c}{$\\tau_e > 100$ or $\\tau_s$} &%\n") - self.file.write("\multicolumn{2}{c}{$R_{ex}$ (" + repr(cdp.frq[0] / 1e6) + " MHz)} \\\\\n") - self.file.write("\n") - - # Units. - self.file.write("% Units.\n") - self.file.write("&%\n") - self.file.write("&%\n") - self.file.write("\multicolumn{2}{c}{} &%\n") - self.file.write("\multicolumn{2}{c}{} &%\n") - self.file.write("\multicolumn{2}{c}{($ps$)} &%\n") - self.file.write("\multicolumn{2}{c}{($ps$)} &%\n") - self.file.write("\multicolumn{2}{c}{($s^{-1}$)} \\\\\n") - self.file.write("\n") - - # Midrule. - self.file.write("\\midrule\n") - - # End the repeating heading. - self.file.write("\\endhead\n\n") - - - def latex_ending(self): - """Create the end of the table.""" - - # End the longtable environment. - self.file.write("\\end{longtable}\n") - - # End the font size. - self.file.write("\\end{small}\n") - - - def latex_header(self): - """Create the LaTeX header. - - This function will need to be heavily modified to suit your needs. - """ - - # Font size. - self.file.write("% Small font.\n") - self.file.write("\\begin{small}\n\n") - - # The longtable environment. - self.file.write("% The longtable environment.\n") - self.file.write("\\begin{longtable}{l l r @{$\\pm$} l r @{$\\pm$} l r @{$\\pm$} l r @{$\\pm$} l r @{$\\pm$} l}\n\n") - - # The caption. - self.file.write("% Caption.\n") - self.file.write("\\caption[Sample list of figures caption]{Sample full caption}\n\n") - - # The LaTeX label. - self.file.write("% Label.\n") - self.file.write("\\label{table: model-free results}\n\n") - - - def table_body(self): - """Create the table body. - - This function need not be modified. - """ - - # Comment. - self.file.write("% The table body.\n") - - # Loop over the spin systems. - for spin, spin_id in spin_loop(return_id=True): - # The spin ID string. - spin_id = replace(spin_id, '&', '\&') - self.file.write("%-20s & " % (spin_id)) - - # The spin is not selected. - if not spin.select: - self.file.write("\\multicolumn{11}{c}{} \\\\\n") - continue - - # The model-free model. - if hasattr(spin, 'model'): - self.file.write("$%s$ & " % spin.model) - else: - self.file.write("\\multicolumn{11}{c}{} \\\\\n") - continue - - # S2. - if spin.s2 == None: - self.file.write("%25s & " % "\\multicolumn{2}{c}{}") - elif not hasattr(spin, 's2_err'): - self.file.write("%24s & " % "\\multicolumn{2}{c}{%.3f}" % spin.s2) - else: - self.file.write("%11.3f & %11.3f & " % (spin.s2, spin.s2_err)) - - # S2f. - if spin.s2f == None: - self.file.write("%25s & " % "\\multicolumn{2}{c}{}") - elif not hasattr(spin, 's2f_err'): - self.file.write("%24s & " % "\\multicolumn{2}{c}{%.3f}" % spin.s2f) - else: - self.file.write("%11.3f & %11.3f & " % (spin.s2f, spin.s2f_err)) - - # Fast motion (te < 100 ps or tf). - if spin.te != None and spin.te <= 100 * 1e-12: - if not hasattr(spin, 'te_err'): - self.file.write("%27s & " % ("\\multicolumn{2}{c}{%.2f}" % (spin.te * 1e12))) - else: - self.file.write("%12.2f & %12.2f & " % (spin.te * 1e12, spin.te_err * 1e12)) - elif spin.tf != None: - if not hasattr(spin, 'tf_err'): - self.file.write("%27s & " % ("\\multicolumn{2}{c}{%.2f}" % (spin.tf * 1e12))) - else: - self.file.write("%12.2f & %12.2f & " % (spin.tf * 1e12, spin.tf_err * 1e12)) - else: - self.file.write("%27s & " % "\\multicolumn{2}{c}{}") - - # Slow motion (te > 100 ps or ts). - if spin.te != None and spin.te > 100 * 1e-12: - if not hasattr(spin, 'te_err'): - self.file.write("%27s & " % ("\\multicolumn{2}{c}{%.2f}" % (spin.te * 1e12))) - else: - self.file.write("%12.2f & %12.2f & " % (spin.te * 1e12, spin.te_err * 1e12)) - elif spin.ts != None: - if not hasattr(spin, 'ts_err'): - self.file.write("%27s & " % ("\\multicolumn{2}{c}{%.2f}" % (spin.ts * 1e12))) - else: - self.file.write("%12.2f & %12.2f & " % (spin.ts * 1e12, spin.ts_err * 1e12)) - else: - self.file.write("%27s & " % "\\multicolumn{2}{c}{}") - - # Rex. - if spin.rex == None: - self.file.write("%27s \\\\\n" % "\\multicolumn{2}{c}{}") - elif not hasattr(spin, 'rex_err'): - self.file.write("%27s \\\\\n" % ("\\multicolumn{2}{c}{%.3f}" % (spin.rex * (2.0 * pi * spin.frq[0])**2))) - else: - self.file.write("%12.3f & %12.3f \\\\\n" % (spin.rex * (2.0 * pi * spin.frq[0])**2, spin.rex_err * (2.0 * pi * spin.frq[0])**2)) - - # Start a new line. - self.file.write("\n") - - -Latex() Modified: branches/bieri_gui/test_suite/system_tests/model_free.py URL: http://svn.gna.org/viewcvs/relax/branches/bieri_gui/test_suite/system_tests/model_free.py?rev=12386&r1=12385&r2=12386&view=diff ============================================================================== --- branches/bieri_gui/test_suite/system_tests/model_free.py (original) +++ branches/bieri_gui/test_suite/system_tests/model_free.py Thu Jan 20 20:45:52 2011 @@ -645,6 +645,29 @@ # g_count: 164 # h_count: 0 # warning: None + + # 32-bit i686 Linux. + # System: Linux + # Release: 2.6.33.7-desktop-2mnb + # Version: #1 SMP Mon Sep 20 19:00:25 UTC 2010 + # Win32 version: + # Distribution: mandrake 2010.2 Official + # Architecture: 32bit ELF + # Machine: i686 + # Processor: i686 + # Python version: 2.6.5 + # Numpy version: 1.4.1 + # Libc version: glibc 2.0 + # + # s2: 0.9700000000016741 + # te (ps): 2048.000000312 + # rex: 0.14899999996808433 + # chi2: 3.5466670276032307e-20 + # iter: 158 + # f_count: 744 + # g_count: 165 + # h_count: 0 + # warning: None # 32-bit i686 Linux. # System: Linux @@ -2446,7 +2469,7 @@ # te correlation time. if type(te) == float: - self.assertAlmostEqual(spin.te / 1e-12, te, msg=mesg) + self.assertAlmostEqual(spin.te / 1e-12, te, 6, msg=mesg) elif te == None: self.assertEqual(spin.te, None, msg=mesg)