mailRe: r22835 - /trunk/pipe_control/spectrum.py


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

Header


Content

Posted by Edward d'Auvergne on April 23, 2014 - 14:00:
Oh, ok, I can see where this is:

relax> relax_disp.cpmg_frq(spectrum_id='800_1000.in', cpmg_frq=1000.0)
debug> GUI interpreter:  Applying the relax_disp.cpmg_frq user
function for synchronous execution.
The spectrum ID '800_1000.in' CPMG frequency is set to 1000.0 Hz.
debug> Observer: 'gui_uf' notifying the 'spin count - relax_disp (Wed
Apr 23 13:39:46 2014)' method update_spin_count().
debug> Observer: 'gui_uf' notifying the 'clusters - relax_disp (Wed
Apr 23 13:39:46 2014)' method update_clusters().
debug> Observer: 'gui_uf' notifying the 'spectra list: 0' method
build_element().
debug> Observer: 'gui_uf' notifying the 'relax_disp.cpmg_frq' method
update_args().
debug> Observer: 'gui_uf' unregistering 'relax_disp.cpmg_frq'.
debug> Observer: 'gui_uf' unregistering 'relax_disp.cpmg_frq'.
debug> The key 'relax_disp.cpmg_frq' does not exist.
debug> Observer: 'gui_uf' unregistering 'relax_disp.cpmg_frq'.
debug> The key 'relax_disp.cpmg_frq' does not exist.
debug> Observer: 'gui_uf' registering the 'relax_disp.cpmg_frq' method
update_args().
debug> Observer: 'gui_uf' unregistering 'relax_disp.cpmg_frq'.

These are just messages from the status singleton object.  This is
specifically the status.observers.gui_uf observer object for the GUI
user functions (https://en.wikipedia.org/wiki/Observer_pattern).  You
will see that 'relax_disp.cpmg_frq' is registered in this object
earlier on and it is removed or unregistered here.  The problem is
that is it unregistered 3 times.  This is to avoid bugs, by
unregistering it from multiple code locations, but it results in these
messages when in debug mode.  It is better to have such a situation
than to somehow have it remain registered - that will result in fatal
wxPython segfaults.

If you're interested, this observer design pattern is used to keep
everything up to date.  In the case of the relax_disp.cpmg_frq user
function, this will make sure that the spectrum ID string list is
always up to date.  For example if you leave the user function window
open and then run the spectrum.read_intensities user function (or it
could be run from a script or something else in the background).  The
list of spectrum IDs will have changed.  The spectrum.read_intensities
user function will notify status.observers.gui_uf when complete (as
all GUI user functions do).  As relax_disp.cpmg_frq has the
update_args() method registered with status.observers.gui_uf, that
method will be run and the relax_disp.cpmg_frq user function window
spectrum ID string list will be updated.  The observer object is a
very common method for keeping things up to date and synchronised in a
GUI - well, it is pretty much essential.  It is used everywhere in the
GUI.  For example the pipe editor window to make sure all data pipes
are listed (or removed from the list), that the spin editor window
always shows the correct molecule, residue and spin structure, etc.
If you notice that some GUI element contains the wrong information or
is not updated, then that's the time we need to look at modifying the
observer objects of the status singleton object.

Regards,

Edward


On 23 April 2014 13:15, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx> wrote:
It passes fine.

But I just saw these messages, and thought something is wrong?

Best
troels


2014-04-23 13:09 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:

Hi,

Does this GUI test not pass on your system?  Or have you modified the
test and it now no longer works?

Cheers,

Edward



On 23 April 2014 12:46, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx>
wrote:
Hi Edward.

I see some errors:

The key 'relax_disp.cpmg_frq' does not exist.

it is from this block.

        if status.relax_mode != 'gui' and wx.version() != '2.9.4.1 gtk2
(classic)':
            analysis.peak_intensity.action_relax_disp_cpmg_frq(item=4)
            uf_store['relax_disp.cpmg_frq'].wizard._go_next()
            interpreter.flush()
            analysis.peak_intensity.action_relax_disp_exp_type(item=5)
            uf_store['relax_disp.exp_type'].wizard._go_next()
            interpreter.flush()
            analysis.peak_intensity.action_relax_disp_relax_time(item=0)
            uf_store['relax_disp.relax_time'].wizard._go_next()
            interpreter.flush()
            analysis.peak_intensity.action_spectrometer_frq(item=10)
            uf_store['spectrometer.frequency'].wizard._go_next()
            interpreter.flush()


Best
Troels


2014-04-23 11:29 GMT+02:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:

Awesome!  That's exactly the change I would have made.

I would also suggest to try to increase the system test coverage of
this to make sure it works in all cases, as well as to make sure that
any future code refactorisation or expansion doesn't break this.  The
easiest way is to simply add more checks to an already existing test.
But the only one possible is the Relax_disp.test_hansen_trunc_data GUI
test as I mentioned at
http://thread.gmane.org/gmane.science.nmr.relax.devel/5302/focus=5307.
 Would you like to add a couple of self.assertEqual() checks to that
test, just after the peak height error analysis, to make sure that the
code works when variance averaging over different SD values is
preformed?  Such checks would really make the code robust to future
changes.

Cheers,

Edward


On 23 April 2014 10:37,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Wed Apr 23 10:37:58 2014
New Revision: 22835

URL: http://svn.gna.org/viewcvs/relax?rev=22835&view=rev
Log:
Fix for bug. The variances used to calculated std, should only be
taken
from those which are defined in the subset.

Regarding bug #21954, (https://gna.org/bugs/index.php?21954) - Order
of
spectrum.error_analysis is important.

Modified:
    trunk/pipe_control/spectrum.py

Modified: trunk/pipe_control/spectrum.py
URL:

http://svn.gna.org/viewcvs/relax/trunk/pipe_control/spectrum.py?rev=22835&r1=22834&r2=22835&view=diff


==============================================================================
--- trunk/pipe_control/spectrum.py      (original)
+++ trunk/pipe_control/spectrum.py      Wed Apr 23 10:37:58 2014
@@ -183,6 +183,10 @@

         # Loop over all time points.
         for id in cdp.var_I.keys():
+            # Only use id's defined in subset
+            if id not in subset:
+                continue
+
             # Single spectrum (or extraordinarily accurate NMR
spectra!).
             if cdp.var_I[id] == 0.0:
                 continue


_______________________________________________
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 Wed Apr 23 14:20:14 2014