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 <tlin...@nmr-relax.com> 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 <edw...@nmr-relax.com>: > >> 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 <tlin...@nmr-relax.com> >> 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 <edw...@nmr-relax.com>: >> >> >> >> 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, <tlin...@nmr-relax.com> 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-comm...@gna.org >> >> > >> >> > 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@gna.org >> >> >> >> >> >> 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://www.nmr-relax.com) This is the relax-devel mailing list relax-devel@gna.org 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