mailRe: r26065 - /trunk/auto_analyses/relax_disp_repeat_cpmg.py


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

Header


Content

Posted by Edward d'Auvergne on October 06, 2014 - 13:23:
Hi Troels,

It is still useful to add docstrings to all
functions/methods/modules/classes/etc. so that future developers and
power users will better understand the intent of the code.  In Python
there is no equivalent to this 'iterator' statement in PyMOL.  But we
do have generator functions which can be far more powerful.  See
https://wiki.python.org/moin/Generators for example.  These are used
quite a lot in relax:

$ grep -r "yield " . --colour=always | grep "\.py"

Regards,

Edward



On 26 September 2014 17:46, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx> 
wrote:
Hi Edward.

As you may have noticed, 1/3 of the code is iterating over the same theme.

The best thing would be to device a custom iterator function.
Like pymol: http://www.pymolwiki.org/index.php/Iterate

Then a general write statistics "to file", and a new grace plot function, to
plot from these files.

But I don't have time to look into this at the moment.


Best
Troels



2014-09-26 17:40 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:

Hi Troels,

To help future users of your analysis, to better document it, and to
help future developers maintain it, you should try to include full
docstrings including epydoc documentation of all arguments for all the
methods of your auto-analysis.

Cheers,

Edward


On 26 September 2014 17:29,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Fri Sep 26 17:29:39 2014
New Revision: 26065

URL: http://svn.gna.org/viewcvs/relax?rev=26065&view=rev
Log:
Implemented getting the statistics for parameters and comparing to init
NI.

Task #7826 (https://gna.org/task/index.php?7826): Write an python class
for the repeated analysis of dispersion data.

Modified:
    trunk/auto_analyses/relax_disp_repeat_cpmg.py

Modified: trunk/auto_analyses/relax_disp_repeat_cpmg.py
URL:
http://svn.gna.org/viewcvs/relax/trunk/auto_analyses/relax_disp_repeat_cpmg.py?rev=26065&r1=26064&r2=26065&view=diff

==============================================================================
--- trunk/auto_analyses/relax_disp_repeat_cpmg.py       (original)
+++ trunk/auto_analyses/relax_disp_repeat_cpmg.py       Fri Sep 26
17:29:39 2014
@@ -1943,6 +1943,94 @@
             plt.show()


+    def get_min_stat_dic(self, list_r2eff_dics=None,
list_glob_ini=None):
+
+        # Loop over the result dictionaries:
+        res_dic = {}
+        for i, min_dic in enumerate(list_r2eff_dics):
+            # Let the reference dic be initial dic
+            min_dic_ref = list_r2eff_dics[0]
+            method_ref = min_dic_ref['method']
+            res_dic['method_ref'] = method_ref
+            glob_ini_ref = list_glob_ini[0]
+            res_dic['glob_ini_ref'] = str(glob_ini_ref)
+            selection = min_dic_ref['selection']
+            res_dic['selection'] = selection
+            params_list =
min_dic_ref[str(glob_ini_ref)]['params']['params_list']
+            res_dic['params_list'] = params_list
+
+            # Loop over params
+            for j, param in enumerate(params_list):
+                res_dic[param] = {}
+
+                # Let the reference param array be the initial glob.
+                param_arr_ref =
min_dic_ref[str(glob_ini_ref)]['params'][param]
+                res_dic[param]['param_arr_ref'] = param_arr_ref
+
+                # Get the current method
+                method_cur = min_dic['method']
+
+                res_dic[param][method_cur] = {}
+                res_dic[param][method_cur]['method'] = method_cur
+                res_dic[param][method_cur]['sampling_sparseness'] = []
+                res_dic[param][method_cur]['glob_ini'] = []
+
+                # Other stats.
+                res_dic[param][method_cur]['r_xy'] = []
+                res_dic[param][method_cur]['a'] = []
+
+                # Now loop over glob_ini:
+                for glob_ini in list_glob_ini:
+                    # Get the array, if it exists.
+                    if str(glob_ini) not in min_dic:
+                        continue
+
+                    # Get the data.
+                    param_arr = min_dic[str(glob_ini)]['params'][param]
+
+                    # This require that all number of points are equal.
+                    # If they are not of same length, then dont even
bother to continue.
+                    if len(param_arr) != len(param_arr_ref):
+                        continue
+
+                    # Store x
+                    sampling_sparseness = float(glob_ini) /
float(glob_ini_ref) * 100.
+
res_dic[param][method_cur]['sampling_sparseness'].append(sampling_sparseness)
+
res_dic[param][method_cur]['glob_ini'].append(glob_ini)
+
+                    # Store to result dic.
+                    res_dic[param][method_cur][str(glob_ini)] = {}
+
res_dic[param][method_cur][str(glob_ini)]['sampling_sparseness'] =
sampling_sparseness
+
res_dic[param][method_cur][str(glob_ini)]['param_arr'] = param_arr
+
+                    # With intercept at axis.
+                    # Calculate sample correlation coefficient, measure
of goodness-of-fit of linear regression
+                    x = param_arr_ref
+                    x_m = mean(x)
+                    y = param_arr
+                    y_m = mean(y)
+
+                    # Without intercept.
+                    a = sum(x*y) / sum(x**2)
+                    r_xy = sum(x*y) / sqrt(sum(x**2) * sum(y**2))
+
+                    print(param, method_ref, method_cur,
sampling_sparseness, glob_ini, r_xy**2, a)
+
+                    # Store to result dic.
+                    res_dic[param][method_cur][str(glob_ini)]['r_xy'] =
r_xy
+                    res_dic[param][method_cur]['r_xy'].append(r_xy)
+                    res_dic[param][method_cur][str(glob_ini)]['a'] = a
+                    res_dic[param][method_cur]['a'].append(a)
+
+                res_dic[param][method_cur]['sampling_sparseness'] =
asarray(res_dic[param][method_cur]['sampling_sparseness'])
+                res_dic[param][method_cur]['glob_ini'] =
asarray(res_dic[param][method_cur]['glob_ini'])
+
+                res_dic[param][method_cur]['r_xy'] =
asarray(res_dic[param][method_cur]['r_xy'])
+                res_dic[param][method_cur]['a'] =
asarray(res_dic[param][method_cur]['a'])
+
+        return res_dic
+
+
     def interpreter_start(self):
         # Load the interpreter.
         self.interpreter = Interpreter(show_script=False,
raise_relax_error=True)


_______________________________________________
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 Mon Oct 06 14:20:14 2014