Hi,

I agree with you that optional programs may not cause failure, but I
think they should be listed for users to know which one they actually
have that are recognised for direct use with relax.

Regards,


Séb



Edward d'Auvergne wrote:
> That is the idea, to have a print out very similar to yours.  Though I
> was thinking of the divisions being more like:
>
> Python modules ........................ [ OK ]
> Optional modules ...................... [ Failed ]
> Optional external programs ........ [ Failed ]
> System/functional tests ............. [ OK ]
> Unit tests ................................ [ OK ]
> Synopsis ................................. [ OK ]
>
> I like the idea of listing all python modules and external programs
> too.  Note that in this mock-up, the synopsis is a pass even though
> not all optional modules or external programs are installed.  For
> example many of the optional programs may not run on all operating
> systems.  So on Windows this would mean that passing the relax test
> suite would not be possible.
>
> Regards,
>
> Edward
>
>
> On Tue, Jul 29, 2008 at 3:43 PM, Sébastien Morin
> <[EMAIL PROTECTED]> wrote:
>   
>> Hi,
>>
>> This is a good idea. These tests could be separate from other ones and
>> only informative for non essential dependencies such as ModelFree4.
>>
>> The output of the test-suite could be something like :
>>
>>
>>
>> ==========
>> ###################################
>> # Summary of the relax test suite #
>> ###################################
>>
>>    Required dependencies .............................. [ OK ]
>>            minfx .............................. ( ok )
>>            python ............................. ( ok )
>>            etc.
>>    Optional dependencies .............................. [ OK ]
>>            dasha .............................. ( ok )
>>            modelfree4 ......................... ( ok )
>>            etc.
>>    System/functional tests ............................ [ OK ]
>>    Unit tests ......................................... [ OK ]
>>    Synopsis ........................................... [ OK ]
>> ==========
>>
>>
>>
>> instead of the actual :
>>
>> ==========
>> ###################################
>> # Summary of the relax test suite #
>> ###################################
>>
>>    System/functional tests ............................ [ OK ]
>>    Unit tests ......................................... [ OK ]
>>    Synopsis ........................................... [ OK ]
>> ==========
>>
>>
>>
>> I think this would be really informative to the user which would see all
>> required and optional programs at once.
>>
>> Regards,
>>
>>
>> Séb
>>
>>
>>
>>
>> Edward d'Auvergne wrote:
>>     
>>> Hi,
>>>
>>> There could still be a better way of doing this, although I'm not sure
>>> how it could be implemented.  The problem is that all may seem fine to
>>> the user (or to me) but due to the improper set up of the modelfree4
>>> program, the test passes but is silent.  Maybe a way that this could
>>> be done to properly inform the person running the test-suite would be
>>> to add another category of test (on top of the system/functional test
>>> framework and the unit test framework) which would check for both for
>>> python dependencies and for the presence (and maybe proper execution)
>>> of external programs.  I'll have to think about this one for a while.
>>>
>>> Regards,
>>>
>>> Edward
>>>
>>>
>>> On Tue, Jul 29, 2008 at 3:00 PM, Sébastien Morin
>>> <[EMAIL PROTECTED]> wrote:
>>>
>>>       
>>>> Hi Ed,
>>>>
>>>> I agree with what you propose here. It is important that installation of
>>>> ModelFree4 stays a possibility, not an obligation, while, for those with
>>>> an installed program, the tools in relax should be tested to see if they
>>>> work.
>>>>
>>>> I think your approach in r7017
>>>> (http://svn.gna.org/viewcvs/relax?rev=7017&view=rev) is really perfect
>>>> for this purpose and has the advantage of leaving complete flexibility
>>>> for the user.
>>>>
>>>> Regards,
>>>>
>>>>
>>>> Séb
>>>>
>>>>
>>>>
>>>>
>>>> Edward d'Auvergne wrote:
>>>>
>>>>         
>>>>> Hi,
>>>>>
>>>>> This is a difficult question.  At the moment, I think the simplest
>>>>> solution would be to use the relax_io.test_binary() function to see if
>>>>> these binaries are located in the system path and are executable and
>>>>> if not skip the test (essentially just return without executing the
>>>>> main part of the test, hence the test counts as a pass).  I'll add
>>>>> this to your new Modelfree4 system test to see if it works.  Ideally
>>>>> though, the system tests should report that this test could not be run
>>>>> as the binary could not be found, but still the system tests should
>>>>> pass.  Otherwise the failing system test will make users think that
>>>>> they need to install Modelfree4, which is not possible on all
>>>>> platforms.
>>>>>
>>>>> Additionally in this test, a temporary directory should be given to
>>>>> Modelfree4 to dump it's output into.  This directory would then be
>>>>> destroyed by the tearDown() method, no matter what happens in the
>>>>> test.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Edward
>>>>>
>>>>>
>>>>> On Mon, Jul 28, 2008 at 10:06 PM, Sébastien Morin
>>>>> <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>
>>>>>           
>>>>>> Hi Ed (and others)
>>>>>>
>>>>>> I don't know what you think about this... as some people might not have
>>>>>> ModelFree4 installed and could not be interested in the features related
>>>>>> to it... On the other hand, we most have system tests for interaction
>>>>>> with ModelFree4 stuff...
>>>>>>
>>>>>> The same applies for Dasha...
>>>>>>
>>>>>> What do you think ?
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>>
>>>>>> Séb
>>>>>>
>>>>>>
>>>>>>
>>>>>> [EMAIL PROTECTED] wrote:
>>>>>>
>>>>>>
>>>>>>             
>>>>>>> Author: semor
>>>>>>> Date: Mon Jul 28 21:36:19 2008
>>>>>>> New Revision: 6993
>>>>>>>
>>>>>>> URL: http://svn.gna.org/viewcvs/relax?rev=6993&view=rev
>>>>>>> Log:
>>>>>>> Started to add system tests for model-free analysis using Modelfree4.
>>>>>>>
>>>>>>>
>>>>>>> Added:
>>>>>>>     1.3/test_suite/system_tests/palmer.py
>>>>>>>     1.3/test_suite/system_tests/scripts/palmer.py
>>>>>>> Modified:
>>>>>>>     1.3/test_suite/system_tests/__init__.py
>>>>>>>
>>>>>>> Modified: 1.3/test_suite/system_tests/__init__.py
>>>>>>> URL: 
>>>>>>> http://svn.gna.org/viewcvs/relax/1.3/test_suite/system_tests/__init__.py?rev=6993&r1=6992&r2=6993&view=diff
>>>>>>> ==============================================================================
>>>>>>> --- 1.3/test_suite/system_tests/__init__.py (original)
>>>>>>> +++ 1.3/test_suite/system_tests/__init__.py Mon Jul 28 21:36:19 2008
>>>>>>> @@ -41,6 +41,7 @@
>>>>>>>  from model_selection import Modsel
>>>>>>>  from n_state_model import N_state_model
>>>>>>>  from nmrview import NMRView
>>>>>>> +from palmer import Palmer
>>>>>>>  from pipe_create import Pipe_create
>>>>>>>  from relax_fit import Relax_fit
>>>>>>>  from results import Results
>>>>>>> @@ -57,6 +58,7 @@
>>>>>>>             'model_selection',
>>>>>>>             'n_state_model',
>>>>>>>             'nmrview',
>>>>>>> +           'palmer',
>>>>>>>             'pipe_create',
>>>>>>>             'relax_fit',
>>>>>>>             'results',
>>>>>>> @@ -89,6 +91,7 @@
>>>>>>>          
>>>>>>> suite_array.append(TestLoader().loadTestsFromTestCase(Load_spins))
>>>>>>>          suite_array.append(TestLoader().loadTestsFromTestCase(Mf))
>>>>>>>          suite_array.append(TestLoader().loadTestsFromTestCase(Modsel))
>>>>>>> +        suite_array.append(TestLoader().loadTestsFromTestCase(Palmer))
>>>>>>>          
>>>>>>> suite_array.append(TestLoader().loadTestsFromTestCase(Relax_fit))
>>>>>>>          suite_array.append(TestLoader().loadTestsFromTestCase(Results))
>>>>>>>          
>>>>>>> suite_array.append(TestLoader().loadTestsFromTestCase(Sequence))
>>>>>>>
>>>>>>> Added: 1.3/test_suite/system_tests/palmer.py
>>>>>>> URL: 
>>>>>>> http://svn.gna.org/viewcvs/relax/1.3/test_suite/system_tests/palmer.py?rev=6993&view=auto
>>>>>>> ==============================================================================
>>>>>>> --- 1.3/test_suite/system_tests/palmer.py (added)
>>>>>>> +++ 1.3/test_suite/system_tests/palmer.py Mon Jul 28 21:36:19 2008
>>>>>>> @@ -1,0 +1,39 @@
>>>>>>> +###############################################################################
>>>>>>> +#                                                                      
>>>>>>>        #
>>>>>>> +# Copyright (C) 2008 Sebastien Morin                                   
>>>>>>>        #
>>>>>>> +#                                                                      
>>>>>>>        #
>>>>>>> +# 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   #
>>>>>>> +#                                                                      
>>>>>>>        #
>>>>>>> +###############################################################################
>>>>>>> +
>>>>>>> +# Python module imports.
>>>>>>> +import sys
>>>>>>> +from unittest import TestCase
>>>>>>> +
>>>>>>> +
>>>>>>> +class Palmer(TestCase):
>>>>>>> +    """Class for testing various aspects specific to model-free 
>>>>>>> analysis using the program
>>>>>>> +    'Modelfree4'.
>>>>>>> +    """
>>>>>>> +
>>>>>>> +    def test_palmer_stage_1(self):
>>>>>>> +        """Test a complete model-free analysis using the program 
>>>>>>> 'Modelfree4'."""
>>>>>>> +
>>>>>>> +        # Execute the script.
>>>>>>> +        self.relax.interpreter.run(script_file=sys.path[-1] + 
>>>>>>> '/test_suite/system_tests/scripts/palmer.py')
>>>>>>> +
>>>>>>> +
>>>>>>>
>>>>>>> Added: 1.3/test_suite/system_tests/scripts/palmer.py
>>>>>>> URL: 
>>>>>>> http://svn.gna.org/viewcvs/relax/1.3/test_suite/system_tests/scripts/palmer.py?rev=6993&view=auto
>>>>>>> ==============================================================================
>>>>>>> --- 1.3/test_suite/system_tests/scripts/palmer.py (added)
>>>>>>> +++ 1.3/test_suite/system_tests/scripts/palmer.py Mon Jul 28 21:36:19 
>>>>>>> 2008
>>>>>>> @@ -1,0 +1,136 @@
>>>>>>> +# Script for model-free analysis using the program 'Modelfree4'.
>>>>>>> +
>>>>>>> +# Python module imports.
>>>>>>> +import sys
>>>>>>> +
>>>>>>> +# The RelaxError system.
>>>>>>> +from relax_errors import RelaxError
>>>>>>> +
>>>>>>> +# Set the stage of analysis.
>>>>>>> +#
>>>>>>> +# The three stages in this script are:
>>>>>>> +#   Stage 1:  Initial model-free minimisation.
>>>>>>> +#   Stage 2:  Model-free model selection.
>>>>>>> +#   Stage 3:  Final optimisation of diffusion tensor parameters 
>>>>>>> together with model-free parameters.
>>>>>>> +
>>>>>>> +
>>>>>>> +# Functions.
>>>>>>> +
>>>>>>> +def exec_stage_1(runs):
>>>>>>> +    """Stage 1 function.
>>>>>>> +
>>>>>>> +    Initial model-free minimisation.
>>>>>>> +    """
>>>>>>> +
>>>>>>> +    # Loop over the runs.
>>>>>>> +    for name in runs:
>>>>>>> +        # Create the run.
>>>>>>> +        print "\n\n# " + name + " #"
>>>>>>> +        pipe.create(name, 'mf')
>>>>>>> +
>>>>>>> +        # Load the sequence.
>>>>>>> +        sequence.read(sys.path[-1] + 
>>>>>>> '/test_suite/system_tests/data/jw_mapping/noe.dat')
>>>>>>> +
>>>>>>> +        # PDB.
>>>>>>> +        #structure.read_pdb(name, 'Ap4Aase_new_3.pdb')
>>>>>>> +
>>>>>>> +        # Load the relaxation data.
>>>>>>> +        relax_data.read('R1', '600', 600.0 * 1e6, sys.path[-1] + 
>>>>>>> '/test_suite/system_tests/data/jw_mapping/R1.dat')
>>>>>>> +        relax_data.read('R2', '600', 600.0 * 1e6, sys.path[-1] + 
>>>>>>> '/test_suite/system_tests/data/jw_mapping/R2.dat')
>>>>>>> +        relax_data.read('NOE', '600', 600.0 * 1e6, sys.path[-1] + 
>>>>>>> '/test_suite/system_tests/data/jw_mapping/noe.dat')
>>>>>>> +
>>>>>>> +        # Setup other values.
>>>>>>> +        diffusion_tensor.init(1e-8)
>>>>>>> +        value.set(NUCLEI, 'heteronucleus')
>>>>>>> +        value.set(1.02 * 1e-10, 'bond_length')
>>>>>>> +        value.set(-172 * 1e-6, 'csa')
>>>>>>> +
>>>>>>> +        # Select the model-free model.
>>>>>>> +        model_free.select_model(model=name)
>>>>>>> +
>>>>>>> +        # Create the Modelfree4 files.
>>>>>>> +        palmer.create(force=True, sims=0)
>>>>>>> +
>>>>>>> +        # Run Modelfree4.
>>>>>>> +        palmer.execute(force=True)
>>>>>>> +
>>>>>>> +    # Save the program state.
>>>>>>> +    state.save('stage1.save', force=True)
>>>>>>> +
>>>>>>> +
>>>>>>> +def exec_stage_2(runs):
>>>>>>> +    """Stage 2 function.
>>>>>>> +
>>>>>>> +    Model-free model selection.
>>>>>>> +    """
>>>>>>> +
>>>>>>> +    # Load the saved state from stage 1.
>>>>>>> +    state.load('stage1.save')
>>>>>>> +
>>>>>>> +    # Print out.
>>>>>>> +    print "\n\nLoading all the Modelfree 4 data."
>>>>>>> +
>>>>>>> +    # Extract the Modelfree4 data from the 'mfout' files.
>>>>>>> +    for name in runs:
>>>>>>> +        palmer.extract()
>>>>>>> +
>>>>>>> +    # Print out.
>>>>>>> +    print "\n\nModel selection."
>>>>>>> +
>>>>>>> +    # Create the model selection run.
>>>>>>> +    name = 'aic'
>>>>>>> +    pipe.create(name, 'mf')
>>>>>>> +
>>>>>>> +    # Model selection.
>>>>>>> +    model_selection(method='AIC', modsel_run=name)
>>>>>>> +
>>>>>>> +    # Write the results.
>>>>>>> +    results.write(file='results', force=True)
>>>>>>> +
>>>>>>> +    # Save the program state.
>>>>>>> +    state.save('stage2.save', force=True)
>>>>>>> +
>>>>>>> +
>>>>>>> +def exec_stage_3():
>>>>>>> +    """Stage 3 function.
>>>>>>> +
>>>>>>> +    Final optimisation of diffusion tensor parameters together with 
>>>>>>> model-free parameters.
>>>>>>> +    """
>>>>>>> +
>>>>>>> +    # Load the saved state from stage 2.
>>>>>>> +    state.load('stage2.save')
>>>>>>> +
>>>>>>> +    # Set the run name.
>>>>>>> +    name = 'aic'
>>>>>>> +
>>>>>>> +    # Let the diffusion tensor parameters be optimised.
>>>>>>> +    fix(name, 'diff', 0)
>>>>>>> +
>>>>>>> +    # Create the Modelfree4 files (change sims as needed, see below).
>>>>>>> +    palmer.create(dir='final', force=True, sims=0)
>>>>>>> +
>>>>>>> +    # Run Modelfree4.
>>>>>>> +    palmer.execute(dir='final', force=True)
>>>>>>> +
>>>>>>> +    # Extract the Modelfree4 data from the 'mfout' file.
>>>>>>> +    palmer.extract(dir='final')
>>>>>>> +
>>>>>>> +    # Save the program state.
>>>>>>> +    state.save('stage3.save', force=True)
>>>>>>> +
>>>>>>> +
>>>>>>> +# Main section of the script.
>>>>>>> +#############################
>>>>>>> +
>>>>>>> +# Nuclei type.
>>>>>>> +NUCLEI = '15N'
>>>>>>> +
>>>>>>> +# Set the run name (also the name of a preset model-free model).
>>>>>>> +runs = ['m1', 'm2', 'm3']
>>>>>>> +
>>>>>>> +# Run the stages.
>>>>>>> +exec_stage_1(runs)
>>>>>>> +exec_stage_2(runs)
>>>>>>> +exec_stage_3()
>>>>>>> +
>>>>>>> +# Either repeat all the above with the optimised diffusion tensor or 
>>>>>>> run Monte Carlo simulations on the final results.
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> relax (http://nmr-relax.com)
>>>>>>>
>>>>>>> This is the relax-commits mailing list
>>>>>>> [EMAIL PROTECTED]
>>>>>>>
>>>>>>> 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://nmr-relax.com)
>>>>>>
>>>>>> This is the relax-devel mailing list
>>>>>> [email protected]
>>>>>>
>>>>>> 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
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>       
>>     
>
>   


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

This is the relax-devel mailing list
[email protected]

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

Reply via email to