This is a good idea.  Note that setting the MC sim number to -1 is
only possible in a script, and not the GUI.  Oh, you changed that
later.  An alternative would be to add the curve_fit_errors argument
which defaults to 'MC' but can be set to 'covar'.  I would suggest
also having a RelaxWarning in the auto-analysis about the covariance
matrix being of lower accuracy than MC sims, just so the user is more
aware.

Cheers,

Edward



On 27 August 2014 21:55,  <[email protected]> wrote:
> Author: tlinnet
> Date: Wed Aug 27 21:55:19 2014
> New Revision: 25358
>
> URL: http://svn.gna.org/viewcvs/relax?rev=25358&view=rev
> Log:
> Added systemtest, Relax_disp.test_estimate_r2eff_err_auto and extended 
> functionality to the auto analyses protocol.
>
> If "exp_mc_sim_num" is set to "-1" and sent to the auto analyses, the errors 
> of R2eff will be estimated from the Co-Variance matrix.
>
> These errors is HIGHLY likely to be wrong, but can be used in an initial test 
> fase, to rapidly produce data for plotting data.
>
> task #7822(https://gna.org/task/index.php?7822): Implement user function to 
> estimate R2eff and associated errors for exponential curve fitting.
>
> Modified:
>     trunk/auto_analyses/relax_disp.py
>     trunk/test_suite/system_tests/relax_disp.py
>
> Modified: trunk/auto_analyses/relax_disp.py
> URL: 
> http://svn.gna.org/viewcvs/relax/trunk/auto_analyses/relax_disp.py?rev=25358&r1=25357&r2=25358&view=diff
> ==============================================================================
> --- trunk/auto_analyses/relax_disp.py   (original)
> +++ trunk/auto_analyses/relax_disp.py   Wed Aug 27 21:55:19 2014
> @@ -497,18 +497,31 @@
>              # The minimisation algorithm to use. If the Jacobian and Hessian 
> matrix have not been specified for fitting, 'simplex' should be used.
>              min_algor = 'simplex'
>
> -        # Do Monte Carlo simulations.
> +        # Error estimation by Monte Carlo simulations.
>          if do_monte_carlo:
> +            # Set the number of Monte-Carlo simulations.
> +            monte_carlo_sim = self.mc_sim_num
> +
> +            # If the number for exponential curve fitting has been set.
>              if model == MODEL_R2EFF and self.exp_mc_sim_num != None:
> -                
> self.interpreter.monte_carlo.setup(number=self.exp_mc_sim_num)
> +                monte_carlo_sim = self.exp_mc_sim_num
> +
> +            # When set to minus 1, estimation of the errors will be 
> extracted from the covariance matrix.
> +            # This is HIGHLY likely to be wrong, but can be used in an 
> initial test fase.
> +            if model == MODEL_R2EFF and self.exp_mc_sim_num == -1:
> +                # Print
> +                subsection(file=sys.stdout, text="Estimating errors from 
> Covariance matrix", prespace=1)
> +
> +                # Estimate errors
> +                self.interpreter.relax_disp.r2eff_err_estimate()
>              else:
> -                self.interpreter.monte_carlo.setup(number=self.mc_sim_num)
> -            self.interpreter.monte_carlo.create_data()
> -            self.interpreter.monte_carlo.initial_values()
> -            self.interpreter.minimise.execute(min_algor=min_algor, 
> func_tol=self.opt_func_tol, max_iter=self.opt_max_iterations, 
> constraints=constraints)
> -            if self.eliminate:
> -                self.interpreter.eliminate()
> -            self.interpreter.monte_carlo.error_analysis()
> +                self.interpreter.monte_carlo.setup(number=monte_carlo_sim)
> +                self.interpreter.monte_carlo.create_data()
> +                self.interpreter.monte_carlo.initial_values()
> +                self.interpreter.minimise.execute(min_algor=min_algor, 
> func_tol=self.opt_func_tol, max_iter=self.opt_max_iterations, 
> constraints=constraints)
> +                if self.eliminate:
> +                    self.interpreter.eliminate()
> +                self.interpreter.monte_carlo.error_analysis()
>
>
>      def pre_run_parameters(self, model=None, model_path=None):
>
> Modified: trunk/test_suite/system_tests/relax_disp.py
> URL: 
> http://svn.gna.org/viewcvs/relax/trunk/test_suite/system_tests/relax_disp.py?rev=25358&r1=25357&r2=25358&view=diff
> ==============================================================================
> --- trunk/test_suite/system_tests/relax_disp.py (original)
> +++ trunk/test_suite/system_tests/relax_disp.py Wed Aug 27 21:55:19 2014
> @@ -63,6 +63,7 @@
>              to_skip = [
>                  
> "test_bug_21344_sparse_time_spinlock_acquired_r1rho_fail_relax_disp",
>                  "test_estimate_r2eff_err",
> +                "test_estimate_r2eff_err_auto",
>                  "test_estimate_r2eff_err_methods"
>                  "test_exp_fit",
>                  "test_m61_exp_data_to_m61",
> @@ -2746,6 +2747,86 @@
>
>          # Run the analysis.
>          relax_disp.Relax_disp(pipe_name=ds.pipe_name, 
> pipe_bundle=ds.pipe_bundle, results_dir=result_dir_name, models=MODELS, 
> grid_inc=GRID_INC, mc_sim_num=MC_NUM, modsel=MODSEL)
> +
> +        # Verify the data.
> +        self.verify_r1rho_kjaergaard_missing_r1(models=MODELS, 
> result_dir_name=result_dir_name, do_assert=False)
> +
> +
> +    def test_estimate_r2eff_err_auto(self):
> +        """Test the user function for estimating R2eff errors from 
> exponential curve fitting, via the auto_analyses menu.
> +
> +        This follows Task 7822.
> +        U{task #7822<https://gna.org/task/index.php?7822>}: Implement user 
> function to estimate R2eff and associated errors for exponential curve 
> fitting.
> +
> +        This uses the data from Kjaergaard's paper at U{DOI: 
> 10.1021/bi4001062<http://dx.doi.org/10.1021/bi4001062>}.
> +        Optimisation of the Kjaergaard et al., 2013 Off-resonance R1rho 
> relaxation dispersion experiments using the 'DPL' model.
> +        """
> +
> +        # 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, read_R1=False)
> +
> +        # The dispersion models.
> +        MODELS = [MODEL_R2EFF, MODEL_NOREX]
> +
> +        # The grid search size (the number of increments per dimension).
> +        GRID_INC = None
> +
> +        # The number of Monte Carlo simulations to be used for error 
> analysis for exponential curve fitting of R2eff.
> +        # When set to minus 1, estimation of the errors will be extracted 
> from the covariance matrix.
> +        # This is HIGHLY likely to be wrong, but can be used in an initial 
> test fase.
> +        EXP_MC_NUM = -1
> +
> +        # The number of Monte Carlo simulations to be used for error 
> analysis at the end of the analysis.
> +        MC_NUM = 3
> +
> +        # Model selection technique.
> +        MODSEL = 'AIC'
> +
> +        # Execute the auto-analysis (fast).
> +        # Standard parameters are: func_tol = 1e-25, grad_tol = None, 
> max_iter = 10000000,
> +        OPT_FUNC_TOL = 1e-25
> +        relax_disp.Relax_disp.opt_func_tol = OPT_FUNC_TOL
> +        OPT_MAX_ITERATIONS = 10000000
> +        relax_disp.Relax_disp.opt_max_iterations = OPT_MAX_ITERATIONS
> +
> +        result_dir_name = ds.tmpdir
> +
> +        # Make all spins free
> +        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)
> +
> +        # Select only a subset of spins for global fitting
> +        #self.interpreter.select.spin(spin_id=':41@N', change_all=False)
> +        #self.interpreter.relax_disp.cluster('model_cluster', ':41@N')
> +
> +        #self.interpreter.select.spin(spin_id=':40@N', change_all=False)
> +        #self.interpreter.relax_disp.cluster('model_cluster', ':40@N')
> +
> +        self.interpreter.select.spin(spin_id=':52@N', change_all=False)
> +        #self.interpreter.relax_disp.cluster('model_cluster', ':52@N')
> +
> +        # Run the analysis.
> +        relax_disp.Relax_disp(pipe_name=ds.pipe_name, 
> pipe_bundle=ds.pipe_bundle, results_dir=result_dir_name, models=MODELS, 
> grid_inc=GRID_INC, mc_sim_num=MC_NUM, exp_mc_sim_num=EXP_MC_NUM, 
> modsel=MODSEL)
>
>          # Verify the data.
>          self.verify_r1rho_kjaergaard_missing_r1(models=MODELS, 
> result_dir_name=result_dir_name, do_assert=False)
>
>
> _______________________________________________
> relax (http://www.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://www.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