mailRe: r25011 - /branches/R1_fitting/test_suite/system_tests/relax_disp.py


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

Header


Content

Posted by Troels Emtekær Linnet on August 19, 2014 - 10:42:
Hi Edward.

I deleted it, since I thought it was a clumsy ugly test.

It only tests:
-        
self.assert_(access(result_dir_name+sep+'resultsR1'+sep+'final'+sep+'phi_ex.out',
F_OK))
-        
self.assert_(access(result_dir_name+sep+'resultsR1'+sep+'final'+sep+'kex.out',
F_OK))
-        
self.assert_(access(result_dir_name+sep+'resultsR1'+sep+'final'+sep+'theta.out',
F_OK))

Which can be tested in the other tests.

Best
Troels

2014-08-19 10:37 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
Hi Troels,

Why was this test not necessary?  Are all parts already tested in
another test?  It's always better to have too much test coverage than
to have small gaps in the coverage.  For the test suite, complete
coverage of code paths is always preferable to the total speed of the
test suite.  Hence why the test suite takes so long to complete.  But
this is why relax is incredibly stable and relatively bug-free.

Cheers,

Edward



On 13 August 2014 21:29,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Wed Aug 13 21:29:57 2014
New Revision: 25011

URL: http://svn.gna.org/viewcvs/relax?rev=25011&view=rev
Log:
Deleted systemtest test_r1rho_kjaergaard_man, since it was no necessary.

sr #3135(https://gna.org/support/?3135): Optimisation of the R1 relaxation 
rate for the off-resonance R1rho relaxation dispersion models.

Modified:
    branches/R1_fitting/test_suite/system_tests/relax_disp.py

Modified: branches/R1_fitting/test_suite/system_tests/relax_disp.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/R1_fitting/test_suite/system_tests/relax_disp.py?rev=25011&r1=25010&r2=25011&view=diff
==============================================================================
--- branches/R1_fitting/test_suite/system_tests/relax_disp.py   (original)
+++ branches/R1_fitting/test_suite/system_tests/relax_disp.py   Wed Aug 13 
21:29:57 2014
@@ -5100,199 +5100,6 @@
                                 self.assertAlmostEqual(float(y_prod), 
float(y_comp))


-    def test_r1rho_kjaergaard_man(self):
-        """Optimisation of the Kjaergaard et al., 2013 Off-resonance 
R1rho relaxation dispersion experiments using the 'DPL' model.
-
-        This uses the data from Kjaergaard's paper at U{DOI: 
10.1021/bi4001062<http://dx.doi.org/10.1021/bi4001062>}.
-
-        This uses the manual analysis.
-
-        """
-
-        # Cluster residues
-        cluster_ids = [
-        ":13@N",
-        ":15@N",
-        ":16@N",
-        ":25@N",
-        ":26@N",
-        ":28@N",
-        ":39@N",
-        ":40@N",
-        ":41@N",
-        ":43@N",
-        ":44@N",
-        ":45@N",
-        ":49@N",
-        ":52@N",
-        ":53@N"]
-
-
-        # Load the data.
-        self.setup_r1rho_kjaergaard(cluster_ids=cluster_ids)
-
-        # The grid search size (the number of increments per dimension).
-        GRID_INC = 4
-
-        # The number of Monte Carlo simulations to be used for error 
analysis at the end of the analysis.
-        MC_NUM = 3
-
-        # Execute the auto-analysis (fast).
-        # Standard parameters are: func_tol = 1e-25, grad_tol = None, 
max_iter = 10000000,
-        OPT_FUNC_TOL = 1e-1
-        OPT_MAX_ITERATIONS = 1000
-
-        result_dir_name = ds.tmpdir
-
-        # Make all spins free, and select a subset.
-        for curspin in cluster_ids:
-            self.interpreter.relax_disp.cluster('free spins', curspin)
-            # Shut them down
-            self.interpreter.deselect.spin(spin_id=curspin, 
change_all=False)
-
-        self.interpreter.select.spin(spin_id=':52@N', change_all=False)
-        #self.interpreter.relax_disp.cluster('model_cluster', ':52@N')
-
-        # Do the analysis manual
-        self.interpreter.spectrum.error_analysis(subset=['46_0_35_0', 
'48_0_35_4', '47_0_35_10', '49_0_35_20', '36_0_39_0', '39_0_39_4', 
'37_0_39_10', '40_0_39_20', '38_0_39_40', '41_0_41_0', '44_0_41_4', 
'42_0_41_10', '45_0_41_20', '43_0_41_40', '31_0_43_0', '34_0_43_4', 
'32_0_43_10', '35_0_43_20', '33_0_43_40', '1_0_46_0', '4_0_46_4', 
'2_0_46_10', '5_0_46_20', '3_0_46_40', '60_0_48_0', '63_0_48_4', 
'61_0_48_10', '62_0_48_14', '64_0_48_20', '11_500_46_0', '14_500_46_4', 
'12_500_46_10', '15_500_46_20', '13_500_46_40', '50_1000_41_0', 
'53_1000_41_4', '51_1000_41_10', '54_1000_41_20', '52_1000_41_40', 
'21_1000_46_0', '24_1000_46_4', '22_1000_46_10', '25_1000_46_20', 
'23_1000_46_40', '65_1000_48_0', '68_1000_48_4', '66_1000_48_10', 
'67_1000_48_14', '69_1000_48_20', '55_2000_41_0', '58_2000_41_4', 
'56_2000_41_10', '59_2000_41_20', '57_2000_41_40', '6_2000_46_0', 
'9_2000_46_4', '7_2000_46_10', '10_2000_46_20', '8_2000_46_40', 
'16_5000_46_0', '19_5000_46_4', '17_5000_46_10', '20_5000_46_20', 
'18_5000_46_40', '26_10000_46_0', '29_10000_46_4', '27_10000_46_10', 
'30_10000_46_20', '28_10000_46_40'])
-
-        ##- The 'R2eff' model -
-        self.interpreter.pipe.copy(pipe_from='base pipe', pipe_to='R2eff 
- relax_disp', bundle_to='relax_disp')
-        self.interpreter.pipe.switch(pipe_name='R2eff - relax_disp')
-        self.interpreter.relax_disp.select_model(model='R2eff')
-        self.interpreter.minimise.grid_search(lower=None, upper=None, 
inc=GRID_INC, constraints=True, verbosity=1)
-
-        self.interpreter.minimise.execute(min_algor='simplex', 
line_search=None, hessian_mod=None, hessian_type=None, 
func_tol=OPT_FUNC_TOL, grad_tol=None, max_iter=OPT_MAX_ITERATIONS, 
constraints=True, scaling=True, verbosity=1)
-        self.interpreter.eliminate(function=None, args=None)
-        self.interpreter.monte_carlo.setup(number=MC_NUM)
-        self.interpreter.monte_carlo.create_data(method='back_calc')
-        self.interpreter.monte_carlo.initial_values()
-
-        self.interpreter.minimise.execute(min_algor='simplex', 
line_search=None, hessian_mod=None, hessian_type=None, 
func_tol=OPT_FUNC_TOL, grad_tol=None, max_iter=OPT_MAX_ITERATIONS, 
constraints=True, scaling=True, verbosity=1)
-        self.interpreter.eliminate(function=None, args=None)
-        self.interpreter.monte_carlo.error_analysis()
-
-        # Write results
-        
#self.interpreter.relax_disp.plot_exp_curves(file='intensities.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', force=True, norm=False)
-        
#self.interpreter.relax_disp.plot_exp_curves(file='intensities_norm.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', force=True, norm=True)
-        
#self.interpreter.relax_disp.plot_disp_curves(dir=result_dir_name+sep+'resultsR1'+sep+'R2eff',
 num_points=1000, extend=500.0, force=True)
-        
#self.interpreter.relax_disp.write_disp_curves(dir=result_dir_name+sep+'resultsR1'+sep+'R2eff',
 force=True)
-        #self.interpreter.value.write(param='r2eff', file='r2eff.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='r2eff', spin_id=None, plot_data='value', file='r2eff.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', force=True, norm=False)
-        #self.interpreter.value.write(param='i0', file='i0.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='i0', spin_id=None, plot_data='value', file='i0.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', force=True, norm=False)
-        #self.interpreter.value.write(param='chi2', file='chi2.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='chi2', spin_id=None, plot_data='value', file='chi2.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', force=True, norm=False)
-
-        ## Save results as state
-        #self.interpreter.results.write(file='results', 
dir=result_dir_name+sep+'resultsR1'+sep+'R2eff', compress_type=1, 
force=True)
-
-        ##- The 'No Rex' model -
-        self.interpreter.pipe.copy(pipe_from='base pipe', pipe_to='No Rex 
- relax_disp', bundle_to='relax_disp')
-        self.interpreter.pipe.switch(pipe_name='No Rex - relax_disp')
-        self.interpreter.relax_disp.select_model(model='No Rex')
-        self.interpreter.value.copy(pipe_from='R2eff - relax_disp', 
pipe_to='No Rex - relax_disp', param='r2eff')
-        self.interpreter.minimise.grid_search(lower=None, upper=None, 
inc=GRID_INC, constraints=True, verbosity=1)
-
-        self.interpreter.minimise.execute(min_algor='simplex', 
line_search=None, hessian_mod=None, hessian_type=None, 
func_tol=OPT_FUNC_TOL, grad_tol=None, max_iter=OPT_MAX_ITERATIONS, 
constraints=True, scaling=True, verbosity=1)
-        self.interpreter.eliminate(function=None, args=None)
-
-        ## Write results
-        
#self.interpreter.relax_disp.plot_disp_curves(dir=result_dir_name+sep+'resultsR1'+sep+'No
 Rex', num_points=1000, extend=500.0, force=True)
-        
#self.interpreter.relax_disp.write_disp_curves(dir=result_dir_name+sep+'resultsR1'+sep+'No
 Rex', force=True)
-        #self.interpreter.value.write(param='chi2', file='chi2.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'No Rex', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='chi2', spin_id=None, plot_data='value', file='chi2.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'No Rex', force=True, norm=False)
-
-        ## Save results as state
-        self.interpreter.results.write(file='results', 
dir=result_dir_name+sep+'resultsR1'+sep+'No Rex', compress_type=1, 
force=True)
-
-        ##- The 'DPL94' model -
-        self.interpreter.pipe.copy(pipe_from='base pipe', pipe_to='DPL94 
- relax_disp', bundle_to='relax_disp')
-        self.interpreter.pipe.switch(pipe_name='DPL94 - relax_disp')
-        self.interpreter.relax_disp.select_model(model='DPL94')
-        self.interpreter.value.copy(pipe_from='R2eff - relax_disp', 
pipe_to='DPL94 - relax_disp', param='r2eff')
-        self.interpreter.relax_disp.insignificance(level=1.0)
-        self.interpreter.minimise.grid_search(lower=None, upper=None, 
inc=GRID_INC, constraints=True, verbosity=1)
-
-        self.interpreter.minimise.execute(min_algor='simplex', 
line_search=None, hessian_mod=None, hessian_type=None, 
func_tol=OPT_FUNC_TOL, grad_tol=None, max_iter=OPT_MAX_ITERATIONS, 
constraints=True, scaling=True, verbosity=1)
-        self.interpreter.eliminate(function=None, args=None)
-
-        ## Write results
-        
#self.interpreter.relax_disp.plot_disp_curves(dir=result_dir_name+sep+'resultsR1'+sep+'DPL94',
 num_points=1000, extend=500.0, force=True)
-        
#self.interpreter.relax_disp.write_disp_curves(dir=result_dir_name+sep+'resultsR1'+sep+'DPL94',
 force=True)
-        #self.interpreter.value.write(param='phi_ex', file='phi_ex.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='phi_ex', spin_id=None, plot_data='value', file='phi_ex.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', force=True, norm=False)
-        #self.interpreter.value.write(param='k_AB', file='k_AB.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.value.write(param='kex', file='kex.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.value.write(param='tex', file='tex.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='k_AB', spin_id=None, plot_data='value', file='k_AB.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', force=True, norm=False)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='kex', spin_id=None, plot_data='value', file='kex.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', force=True, norm=False)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='tex', spin_id=None, plot_data='value', file='tex.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', force=True, norm=False)
-        #self.interpreter.value.write(param='chi2', file='chi2.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='chi2', spin_id=None, plot_data='value', file='chi2.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', force=True, norm=False)
-
-        ## Save results as state
-        #self.interpreter.results.write(file='results', 
dir=result_dir_name+sep+'resultsR1'+sep+'DPL94', compress_type=1, 
force=True)
-
-        ##- The 'final' model -
-        self.interpreter.model_selection(method='AIC', modsel_pipe='final 
- relax_disp', bundle='relax_disp', pipes=['No Rex - relax_disp', 'DPL94 - 
relax_disp'])
-        self.interpreter.monte_carlo.setup(number=MC_NUM)
-        self.interpreter.monte_carlo.create_data(method='back_calc')
-        self.interpreter.monte_carlo.initial_values()
-
-        self.interpreter.minimise.execute(min_algor='simplex', 
line_search=None, hessian_mod=None, hessian_type=None, 
func_tol=OPT_FUNC_TOL, grad_tol=None, max_iter=OPT_MAX_ITERATIONS, 
constraints=True, scaling=True, verbosity=1)
-        self.interpreter.eliminate(function=None, args=None)
-        self.interpreter.monte_carlo.error_analysis()
-
-        ## Write results
-        
#self.interpreter.relax_disp.plot_disp_curves(dir=result_dir_name+sep+'resultsR1'+sep+'final',
 num_points=1000, extend=500.0, force=True)
-        
#self.interpreter.relax_disp.write_disp_curves(dir=result_dir_name+sep+'resultsR1'+sep+'final',
 force=True)
-        #self.interpreter.value.write(param='model', file='model.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.value.write(param='pA', file='pA.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.value.write(param='pB', file='pB.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='pA', spin_id=None, plot_data='value', file='pA.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='pB', spin_id=None, plot_data='value', file='pB.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        self.interpreter.value.write(param='phi_ex', file='phi_ex.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='phi_ex', spin_id=None, plot_data='value', file='phi_ex.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.value.write(param='phi_ex_B', 
file='phi_ex_B.out', dir=result_dir_name+sep+'resultsR1'+sep+'final', 
scaling=1.0, comment=None, bc=False, force=True)
-        #self.interpreter.value.write(param='phi_ex_C', 
file='phi_ex_C.out', dir=result_dir_name+sep+'resultsR1'+sep+'final', 
scaling=1.0, comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='phi_ex_B', spin_id=None, plot_data='value', 
file='phi_ex_B.agr', dir=result_dir_name+sep+'resultsR1'+sep+'final', 
force=True, norm=False)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='phi_ex_C', spin_id=None, plot_data='value', 
file='phi_ex_C.agr', dir=result_dir_name+sep+'resultsR1'+sep+'final', 
force=True, norm=False)
-        #self.interpreter.value.write(param='dw', file='dw.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='dw', spin_id=None, plot_data='value', file='dw.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.value.write(param='dwH', file='dwH.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='dwH', spin_id=None, plot_data='value', file='dwH.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.value.write(param='k_AB', file='k_AB.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        self.interpreter.value.write(param='kex', file='kex.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.value.write(param='tex', file='tex.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='k_AB', spin_id=None, plot_data='value', file='k_AB.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='kex', spin_id=None, plot_data='value', file='kex.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='tex', spin_id=None, plot_data='value', file='tex.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.value.write(param='k_AB', file='k_AB.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='k_AB', spin_id=None, plot_data='value', file='k_AB.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.value.write(param='kB', file='kB.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.value.write(param='kC', file='kC.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='kB', spin_id=None, plot_data='value', file='kB.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='kC', spin_id=None, plot_data='value', file='kC.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-        #self.interpreter.value.write(param='chi2', file='chi2.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.grace.write(x_data_type='res_num', 
y_data_type='chi2', spin_id=None, plot_data='value', file='chi2.agr', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', force=True, norm=False)
-
-        # Test of new parameters to write out.
-        self.interpreter.value.write(param='theta', file='theta.out', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', scaling=1.0, 
comment=None, bc=False, force=True)
-        #self.interpreter.value.write(param='theta', file='theta.out', 
dir='~', scaling=1.0, comment=None, bc=False, force=True)
-        #self.assert_(hasattr(cdp.mol[0].res[7].spin[0], 'theta'))
-
-        ## Save results as state
-        #self.interpreter.results.write(file='results', 
dir=result_dir_name+sep+'resultsR1'+sep+'final', compress_type=1, 
force=True)
-        ## Save all results in all pipes in state
-        #self.interpreter.state.save(state='final_state', 
dir=result_dir_name+sep+'resultsR1', compress_type=1, force=True)
-
-        # Assert the file existence of the written value files
-        
self.assert_(access(result_dir_name+sep+'resultsR1'+sep+'final'+sep+'phi_ex.out',
 F_OK))
-        
self.assert_(access(result_dir_name+sep+'resultsR1'+sep+'final'+sep+'kex.out',
 F_OK))
-        
self.assert_(access(result_dir_name+sep+'resultsR1'+sep+'final'+sep+'theta.out',
 F_OK))
-
-
     def test_r1rho_kjaergaard_missing_r1(self):
         """Optimisation of the Kjaergaard et al., 2013 Off-resonance 
R1rho relaxation dispersion experiments using the 'DPL' model.



_______________________________________________
relax (http://www.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

_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-devel mailing list
relax-devel@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-devel



Related Messages


Powered by MHonArc, Updated Tue Aug 19 11:20:13 2014