mailr25484 - /trunk/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 tlinnet on August 31, 2014 - 16:55:
Author: tlinnet
Date: Sun Aug 31 16:55:09 2014
New Revision: 25484

URL: http://svn.gna.org/viewcvs/relax?rev=25484&view=rev
Log:
Inserted possibility for boot-strapping in systemtest 
Relax_disp.test_estimate_r2eff_err_methods.

This shows, that the boot strapping method get the SAME estimation for R2eff 
errors, as the estimate_r2eff_err() function!

This must either mean, that the OLD Monte-Carlo simulation was corrupted, or 
the creation of data in Monte-Carlo simulations is corrupted.

For the r2eff columns.

0.0348/0.0692/0.0348/0.0691

Old MC 2000/Estimated from Co-var/Manual re-calc of old MC/ Boot strapping 
2000 simulations.

-------------
R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 431.0.
r2eff=8.646/8.646 r2eff_err=0.0348/0.0692/0.0348/0.0691 
i0=202664.191/202664.191 i0_err=699.6443/712.4201/699.6443/693.1613

R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 651.2.
r2eff=10.377/10.377 r2eff_err=0.0403/0.0810/0.0403/0.0823 
i0=206049.558/206049.558 i0_err=776.4215/782.1833/776.4215/763.6342

R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 800.5.
r2eff=10.506/10.506 r2eff_err=0.0440/0.0853/0.0440/0.0887 
i0=202586.332/202586.332 i0_err=763.9678/758.7052/763.9678/776.2788

R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 984.0.
r2eff=10.903/10.903 r2eff_err=0.0476/0.0922/0.0476/0.0968 
i0=203455.021/203455.021 i0_err=837.8779/828.7280/837.8779/834.3398

R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 1341.1.
r2eff=10.684/10.684 r2eff_err=0.0446/0.0853/0.0446/0.0889 
i0=218670.412/218670.412 i0_err=850.0210/830.9558/850.0210/825.7990

R1rho at 799.8 MHz, for offset=118.078 ppm and dispersion point 1648.5.
r2eff=10.501/10.501 r2eff_err=0.0371/0.0742/0.0371/0.0754 
i0=206502.512/206502.512 i0_err=794.0523/772.9843/794.0523/776.3687

R1rho at 799.8 MHz, for offset=124.247 ppm and dispersion point 1341.1.
r2eff=11.118/11.118 r2eff_err=0.0413/0.0827/0.0413/0.0870 
i0=216447.241/216447.241 i0_err=784.6562/788.0384/784.6562/810.1911

R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point 800.5.
r2eff=7.866/7.866 r2eff_err=0.0347/0.0695/0.0347/0.0712 
i0=211869.715/211869.715 i0_err=749.2776/763.6930/749.2776/747.9741

R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point 1341.1.
r2eff=9.259/9.259 r2eff_err=0.0331/0.0661/0.0331/0.0680 
i0=217703.151/217703.151 i0_err=682.2137/685.5838/682.2137/700.1831

R1rho at 799.8 MHz, for offset=130.416 ppm and dispersion point 1648.5.
r2eff=9.565/9.565 r2eff_err=0.0373/0.0745/0.0373/0.0743 
i0=211988.939/211988.939 i0_err=839.0313/827.0373/839.0313/815.4495

R1rho at 799.8 MHz, for offset=142.754 ppm and dispersion point 800.5.
r2eff=3.240/3.240 r2eff_err=0.0127/0.0253/0.0127/0.0254 
i0=214417.382/214417.382 i0_err=595.8865/613.4378/595.8865/606.4650

R1rho at 799.8 MHz, for offset=142.754 ppm and dispersion point 1341.1.
r2eff=5.084/5.084 r2eff_err=0.0177/0.0352/0.0177/0.0353 
i0=226358.691/226358.691 i0_err=660.5314/655.7670/660.5314/666.9979

R1rho at 799.8 MHz, for offset=179.768 ppm and dispersion point 1341.1.
r2eff=2.208/2.208 r2eff_err=0.0091/0.0178/0.0091/0.0176 
i0=228620.553/228620.553 i0_err=564.8353/560.0873/564.8353/558.6988

R1rho at 799.8 MHz, for offset=241.459 ppm and dispersion point 1341.1.
r2eff=1.711/1.711 r2eff_err=0.0077/0.0155/0.0077/0.0158 
i0=224087.486/224087.486 i0_err=539.4300/546.4217/539.4300/556.5093

task #7822(https://gna.org/task/index.php?7822): Implement user function to 
estimate R2eff and associated errors for exponential curve fitting.

Modified:
    trunk/test_suite/system_tests/relax_disp.py

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=25484&r1=25483&r2=25484&view=diff
==============================================================================
--- trunk/test_suite/system_tests/relax_disp.py (original)
+++ trunk/test_suite/system_tests/relax_disp.py Sun Aug 31 16:55:09 2014
@@ -3122,6 +3122,16 @@
         my_dic = {}
         param_key_list = []
 
+        # Do boot strapping ?
+        do_boot = True
+        if do_boot:
+            from minfx.generic import generic_minimise
+            from random import gauss
+            min_algor = 'BFGS'
+            min_options = ()
+            sim_boot = 2000
+            scaling_list = [1.0, 1.0]
+
         # First check sim values.
         for cur_spin, mol_name, resi, resn, spin_id in 
spin_loop(full_info=True, return_id=True, skip_desel=True):
             # Add key to dic.
@@ -3190,6 +3200,50 @@
                 self.assertAlmostEqual(r2eff_sim_err, r2eff_err)
                 self.assertAlmostEqual(i0_sim_err, i0_err)
 
+                if do_boot:
+                    values = []
+                    errors = []
+                    times = []
+                    for time in loop_time(exp_type=exp_type, frq=frq, 
offset=offset, point=point):
+                        values.append(average_intensity(spin=cur_spin, 
exp_type=exp_type, frq=frq, offset=offset, point=point, time=time))
+                        errors.append(average_intensity(spin=cur_spin, 
exp_type=exp_type, frq=frq, offset=offset, point=point, time=time, 
error=True))
+                        times.append(time)
+
+                    # Convert to numpy array.
+                    values = asarray(values)
+                    errors = asarray(errors)
+                    times = asarray(times)
+
+                    R_m_sim_l = []
+                    I0_m_sim_l = []
+                    for j in range(sim_boot):
+                        if j in range(0, 100000, 100):
+                            print("Simulation %i"%j)
+                        # Start minimisation.
+
+                        # Produce errors
+                        I_err = []
+                        for j, error in enumerate(errors):
+                            I_error = gauss(values[j], error)
+                            I_err.append(I_error)
+                        # Convert to numpy array.
+                        I_err = asarray(I_err)
+
+                        x0 = [r2eff, i0]
+                        setup(num_params=len(x0), num_times=len(times), 
values=I_err, sd=errors, relax_times=times, scaling_matrix=scaling_list)
+
+                        params_minfx_sim_j, chi2_minfx_sim_j, iter_count, 
f_count, g_count, h_count, warning = generic_minimise(func=func, dfunc=dfunc, 
args=(), x0=x0, min_algor=min_algor, min_options=min_options, 
full_output=True, print_flag=0)
+                        R_m_sim_j, I0_m_sim_j = params_minfx_sim_j
+                        R_m_sim_l.append(R_m_sim_j)
+                        I0_m_sim_l.append(I0_m_sim_j)
+
+                    # Get stats on distribution.
+                    sigma_R_sim = std(asarray(R_m_sim_l), ddof=1)
+                    sigma_I0_sim = std(asarray(I0_m_sim_l), ddof=1)
+                    my_dic[spin_id][param_key]['r2eff_err_boot'] = 
sigma_R_sim
+                    my_dic[spin_id][param_key]['i0_err_boot'] = sigma_I0_sim
+
+
         # A new data pipe.
         self.interpreter.pipe.copy(pipe_from='MC_2000', pipe_to='r2eff_est')
         self.interpreter.pipe.switch(pipe_name='r2eff_est')
@@ -3227,9 +3281,16 @@
                 r2eff_sim_err = my_dic[spin_id][param_key]['r2eff_err_sim']
                 i0_sim_err = my_dic[spin_id][param_key]['i0_err_sim']
 
+                if do_boot:
+                    r2eff_boot_err = 
my_dic[spin_id][param_key]['r2eff_err_boot']
+                    i0_boot_err = my_dic[spin_id][param_key]['i0_err_boot']
+                else:
+                    r2eff_boot_err = 0.0
+                    i0_boot_err = 0.0
+
                 print("%s at %3.1f MHz, for offset=%3.3f ppm and dispersion 
point %-5.1f." % (exp_type, frq/1E6, offset, point) )
-                print("r2eff=%3.3f/%3.3f r2eff_err=%3.4f/%3.4f/%3.4f" % 
(r2eff, r2eff_est, r2eff_err, r2eff_err_est, r2eff_sim_err) ),
-                print("i0=%3.3f/%3.3f i0_err=%3.4f/%3.4f/%3.4f\n" % (i0, 
i0_est, i0_err, i0_err_est, i0_sim_err) )
+                print("r2eff=%3.3f/%3.3f r2eff_err=%3.4f/%3.4f/%3.4f/%3.4f" 
% (r2eff, r2eff_est, r2eff_err, r2eff_err_est, r2eff_sim_err, r2eff_boot_err) 
),
+                print("i0=%3.3f/%3.3f i0_err=%3.4f/%3.4f/%3.4f/%3.4f\n" % 
(i0, i0_est, i0_err, i0_err_est, i0_sim_err, i0_boot_err) )
 
 
         # Now do it manually.




Related Messages


Powered by MHonArc, Updated Sun Aug 31 17:40:02 2014