Yeah, I won't bother. There's a good chance that wxPython 2.9.5.1 will be released with fixes for this problem, so it might be better to wait.
Regards, Edward On 4 December 2013 13:00, Troels Emtekær Linnet <tlin...@nmr-relax.com> wrote: > Hi Edward. > > The Menu.py and MessageDialog.py functions fine. > > I will wait and see what happens. > And if it drives me crazy, I will try to go for another round. > > Best > Troels > > 2013/12/4 Edward d'Auvergne <edw...@nmr-relax.com>: >> Hi, >> >> It is a very tough problem to solve, and it is likely to be a wxPython >> bug. Oh, what if you run the Menu.py wx_demo? Or MessageDialog.py? >> The testing in http://wiki.nmr-relax.com/Installation_test#wxPython_test >> only checks a tiny fraction of all wxPython functionality used in >> relax so it may not show the problem. It could be that one of the >> PNGs in wxPython, for example those used in the message dialogs, are >> corrupted (according to the PNG people nowadays). It could be that >> one of the standard Mac OS X icons distributed with the operating >> system is giving the iCCP warning too. >> >> Regards, >> >> Edward >> >> >> >> On 4 December 2013 11:49, Troels Emtekær Linnet <tlin...@nmr-relax.com> >> wrote: >>> Hi Edward. >>> >>> The code change did not make a difference. >>> >>> The wxPython demo runs fine: >>> http://wiki.nmr-relax.com/Installation_test#wxPython_test >>> >>> I see the smiley face fine. >>> In the terminal there are still the fonts issue, but not the iCCP warning. >>> >>> Hm, I guess i will see what happens if I start using the GUI with >>> relax on real data applications. >>> Anyway, I will probably run a lot more scripting than GUI. >>> >>> And I will wait to see if there comes a fix for wxPython for Mavericks. >>> >>> Best >>> Troels >>> >>> >>> 2013/12/4 Edward d'Auvergne <edw...@nmr-relax.com>: >>>> Hi, >>>> >>>> There are literally thousands of places where the wx.CallAfter() call >>>> could be used. This may not even fix the problem. Does the error go >>>> away if you make the change? On a different note, do you see those >>>> wxPython iCCP and font issues if you run the wx_demo? If so, then >>>> there is no point searching for these errors in relax, for there are >>>> none. It will be a wxPython issue. My feeling is that everything you >>>> see is due to problems with wxPython, as my tests on multiple >>>> operating system, both 32 and 64-bit show nothing. The crash in the >>>> test suite might be fixable from within relax however. >>>> >>>> Regards, >>>> >>>> Edward >>>> >>>> >>>> On 4 December 2013 11:26, Troels Emtekær Linnet <tlin...@nmr-relax.com> >>>> wrote: >>>>> Hm. >>>>> >>>>> It seems that many people have problems with wxPython 2.9 on Mavericks. >>>>> I have tried installing wxPython 2.8, but that would not work on my >>>>> system. >>>>> >>>>> The GUI will show up when starting relax. >>>>> Complaining about: "iCCP: known incorrect sRGB profile". >>>>> And terminal will show: >>>>> >>>>> " >>>>> 2013-12-03 22:56:31.956 Python[1180:d0b] CoreText performance note: Client >>>>> called CTFontCreateWithName() using name ".Lucida Grande UI" and got font >>>>> with >>>>> PostScript name ".LucidaGrandeUI". For best performance, only use >>>>> PostScript >>>>> names when calling this API. >>>>> 2013-12-03 22:56:31.956 Python[1180:d0b] CoreText performance note: Set a >>>>> breakpoint on CTFontLogSuboptimalRequest to debug. >>>>> 2013-12-03 22:56:37.521 Python[1180:d0b] CoreText performance note: Client >>>>> called CTFontCreateWithName() using name ".Lucida Grande UI" and got font >>>>> with >>>>> PostScript name ".LucidaGrandeUI". For best performance, only use >>>>> PostScript >>>>> names when calling this API. >>>>> " >>>>> >>>>> This problem has been reported before: >>>>> http://successfulsoftware.net/2013/10/23/fixing-qt-4-for-mac-os-x-10-9-mavericks/ >>>>> https://bugreports.qt-project.org/browse/QTBUG-32789 >>>>> http://wxpython-users.1045709.n5.nabble.com/another-possible-issue-with-new-Mac-OS-Mavericks-td5719024.html >>>>> >>>>> >>>>> In the relax GUI: >>>>> >>>>> The Unit test will perform fine. >>>>> The GUI test will crash relax. >>>>> The system test will run for a long time, and crash at some point. >>>>> (After 30 dots ?) >>>>> It is hard to see at which points it crashes. >>>>> >>>>> The system test performed in terminal goes fine. >>>>> >>>>> >>>>> ------- >>>>> I found one instance of "AppendText" in line 1048. >>>>> Should I try to alter it ? >>>>> >>>>> from: >>>>> self.AppendText(string_list[i]) >>>>> >>>>> to: >>>>> wx.CallAfter(self.textArea.AppendText, string_list[i]) >>>>> or >>>>> wx.CallAfter(self.AppendText, string_list[i]) >>>>> >>>>> >>>>> ------- >>>>> >>>>> >>>>> >>>>> >>>>> [tlinnet@haddock relax_trunk]$ grep -r "AppendText" ./gui >>>>> Binary file ./gui/controller.pyc matches >>>>> ./gui/controller.py: self.AppendText(string_list[i]) >>>>> >>>>> >>>>> [tlinnet@haddock relax_trunk]$ grep -r "wx.CallAfter(" ./gui >>>>> ./gui/spin_viewer/frame.py: wx.CallAfter(item.Enable, >>>>> enable) >>>>> ./gui/spin_viewer/frame.py: wx.CallAfter(self.bar.EnableTool, >>>>> self.spin_loader_id, enable) >>>>> ./gui/spin_viewer/frame.py: wx.CallAfter(self.pipe_name.Enable, >>>>> enable) >>>>> ./gui/spin_viewer/frame.py: wx.CallAfter(self.refresh_safe) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.toolbar.EnableTool, >>>>> self.TB_FILE_NEW, enable) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.toolbar.EnableTool, >>>>> self.TB_FILE_CLOSE, enable) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.toolbar.EnableTool, >>>>> self.TB_FILE_CLOSE_ALL, enable) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.toolbar.EnableTool, >>>>> self.TB_FILE_OPEN, enable) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.toolbar.EnableTool, >>>>> self.TB_FILE_SAVE, enable) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.toolbar.EnableTool, >>>>> self.TB_FILE_SAVE_AS, enable) >>>>> ./gui/relax_gui.py: >>>>> wx.CallAfter(self.controller.main_gauge.SetValue, 100) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.show_results_viewer_safe, >>>>> warn=True) >>>>> ./gui/relax_gui.py: wx.CallAfter(dlg.ShowModal) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.show_results_viewer_safe, >>>>> warn=False) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.status_bar.SetStatusText, >>>>> "(C) 2001-2013 the relax development team", 0) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.status_bar.SetStatusText, >>>>> "Current data pipe:", 1) >>>>> ./gui/relax_gui.py: wx.CallAfter(self.status_bar.SetStatusText, >>>>> pipe, 2) >>>>> ./gui/icons.py: wx.CallAfter(self.gui.exit_gui) >>>>> ./gui/results_viewer.py: wx.CallAfter(self.pipe_name.Enable, >>>>> enable) >>>>> ./gui/results_viewer.py: wx.CallAfter(self.button_open.Enable, >>>>> enable) >>>>> ./gui/results_viewer.py: wx.CallAfter(self.refresh_safe) >>>>> ./gui/results_viewer.py: wx.CallAfter(self.Raise) >>>>> ./gui/analyses/auto_noe.py: >>>>> wx.CallAfter(self.field_nmr_frq.Enable, enable) >>>>> ./gui/analyses/auto_noe.py: >>>>> wx.CallAfter(self.field_results_dir.Enable, enable) >>>>> ./gui/analyses/auto_noe.py: >>>>> wx.CallAfter(self.spin_systems.Enable, enable) >>>>> ./gui/analyses/auto_noe.py: >>>>> wx.CallAfter(self.peak_intensity.Enable, enable) >>>>> ./gui/analyses/auto_noe.py: >>>>> wx.CallAfter(self.button_exec_relax.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.field_results_dir.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.field_pre_run_dir.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.spin_systems.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.field_cluster.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.button_isotope.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.button_r1.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.button_chemical_shift.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.button_interatom_define.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.peak_intensity.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.model_field.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.button_exec_relax.Enable, enable) >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.field_cluster.SetValue, "free spins") >>>>> ./gui/analyses/auto_relax_disp.py: >>>>> wx.CallAfter(self.field_cluster.SetValue, text) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.field_results_dir.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.spin_systems.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.relax_data.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.button_dipole_pair.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.button_csa.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.button_isotope_heteronuc.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.button_isotope_proton.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.local_tm_model_field.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.mf_model_field.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.grid_inc.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.mc_sim_num.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.max_iter.Enable, enable) >>>>> ./gui/analyses/auto_model_free.py: wx.CallAfter(self.mode.Enable, >>>>> enable) >>>>> ./gui/analyses/auto_model_free.py: >>>>> wx.CallAfter(self.button_exec_relax.Enable, enable) >>>>> ./gui/analyses/auto_rx_base.py: >>>>> wx.CallAfter(self.field_nmr_frq.Enable, enable) >>>>> ./gui/analyses/auto_rx_base.py: >>>>> wx.CallAfter(self.field_results_dir.Enable, enable) >>>>> ./gui/analyses/auto_rx_base.py: >>>>> wx.CallAfter(self.spin_systems.Enable, enable) >>>>> ./gui/analyses/auto_rx_base.py: >>>>> wx.CallAfter(self.peak_intensity.Enable, enable) >>>>> ./gui/analyses/auto_rx_base.py: >>>>> wx.CallAfter(self.grid_inc.Enable, enable) >>>>> ./gui/analyses/auto_rx_base.py: >>>>> wx.CallAfter(self.mc_sim_num.Enable, enable) >>>>> ./gui/analyses/auto_rx_base.py: >>>>> wx.CallAfter(self.button_exec_relax.Enable, enable) >>>>> ./gui/analyses/__init__.py: >>>>> wx.CallAfter(self.notebook.SetSelection, self._current) >>>>> ./gui/analyses/__init__.py: >>>>> wx.CallAfter(status.observers.gui_analysis.notify) >>>>> ./gui/analyses/base.py: >>>>> wx.CallAfter(self.spin_systems.SetValue, >>>>> str_to_gui(self.spin_count())) >>>>> ./gui/uf_objects.py: wx.CallAfter(app.gui.controller.Raise) >>>>> ./gui/relax_prompt.py: wx.CallAfter(self.prompt.Enable, enable) >>>>> ./gui/controller.py: wx.CallAfter(self.main_gauge.Pulse) >>>>> ./gui/controller.py: wx.CallAfter(self.mc_gauge_rx.SetValue, 0) >>>>> ./gui/controller.py: wx.CallAfter(self.mc_gauge_mf.SetValue, 0) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.progress_gauge_mf.SetValue, 0) >>>>> ./gui/controller.py: wx.CallAfter(self.main_gauge.SetValue, 0) >>>>> ./gui/controller.py: wx.CallAfter(self.cdp.SetValue, >>>>> str_to_gui(pipe)) >>>>> ./gui/controller.py: wx.CallAfter(self.name.SetValue, >>>>> str_to_gui(name)) >>>>> ./gui/controller.py: wx.CallAfter(self.panel_rx.Show) >>>>> ./gui/controller.py: wx.CallAfter(self.update_rx) >>>>> ./gui/controller.py: wx.CallAfter(self.panel_rx.Hide) >>>>> ./gui/controller.py: wx.CallAfter(self.panel_mf.Show) >>>>> ./gui/controller.py: wx.CallAfter(self.update_mf) >>>>> ./gui/controller.py: wx.CallAfter(self.panel_mf.Hide) >>>>> ./gui/controller.py: wx.CallAfter(self.update_gauge) >>>>> ./gui/controller.py: wx.CallAfter(self.main_panel.Layout) >>>>> ./gui/controller.py: wx.CallAfter(self.timer.Start, 100) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.mc_gauge_rx.SetValue, 100) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.mc_gauge_mf.SetValue, 100) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.progress_gauge_mf.SetValue, 100) >>>>> ./gui/controller.py: wx.CallAfter(self.main_gauge.SetValue, >>>>> 100) >>>>> ./gui/controller.py: wx.CallAfter(self.main_gauge.SetValue, 0) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.mc_gauge_rx.SetValue, 0) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.mc_gauge_mf.SetValue, 0) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.progress_gauge_mf.SetValue, 0) >>>>> ./gui/controller.py: wx.CallAfter(self.main_gauge.SetValue, 0) >>>>> ./gui/controller.py: wx.CallAfter(self.mc_gauge_mf.SetValue, >>>>> 100) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.progress_gauge_mf.SetValue, 100) >>>>> ./gui/controller.py: wx.CallAfter(self.main_gauge.SetValue, >>>>> 100) >>>>> ./gui/controller.py: wx.CallAfter(self.mc_gauge_mf.SetValue, 0) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.progress_gauge_mf.SetValue, 0) >>>>> ./gui/controller.py: wx.CallAfter(self.main_gauge.SetValue, 0) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.global_model_mf.SetValue, >>>>> str_to_gui(status.auto_analysis[key].diff_model)) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.progress_gauge_mf.SetValue, percent) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.progress_gauge_mf.SetValue, 0) >>>>> ./gui/controller.py: >>>>> wx.CallAfter(self.progress_gauge_mf.SetValue, percent) >>>>> ./gui/controller.py: wx.CallAfter(self.mc_gauge_mf.SetValue, >>>>> percent) >>>>> ./gui/controller.py: wx.CallAfter(self.mc_gauge_rx.SetValue, 0) >>>>> ./gui/controller.py: wx.CallAfter(self.main_gauge.SetValue, 0) >>>>> ./gui/controller.py: wx.CallAfter(self.mc_gauge_rx.SetValue, >>>>> percent) >>>>> ./gui/controller.py: wx.CallAfter(self.control.write) >>>>> ./gui/controller.py: wx.CallAfter(self.control.write) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_bundle.Enable, >>>>> False) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_create.Enable, >>>>> False) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_copy.Enable, >>>>> False) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_delete.Enable, >>>>> False) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_hybrid.Enable, >>>>> False) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_switch.Enable, >>>>> False) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_bundle.Enable, >>>>> True) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_create.Enable, >>>>> True) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_copy.Enable, >>>>> True) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_delete.Enable, >>>>> True) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_hybrid.Enable, >>>>> True) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.button_switch.Enable, >>>>> True) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.Raise) >>>>> ./gui/pipe_editor.py: wx.CallAfter(self.update_grid_safe) >>>>> ./gui/interpreter.py: wx.CallAfter(gui_raise, >>>>> instance, raise_flag=False) >>>>> ./gui/components/base_list.py: >>>>> wx.CallAfter(self.build_element_safe) >>>>> >>>>> 2013/12/4 Edward d'Auvergne <edw...@nmr-relax.com>: >>>>>> Hi, >>>>>> >>>>>> It could be related to the first link. These issues are difficult to >>>>>> track down and find, as a GUI must naturally run multi-threaded and >>>>>> multi-threaded debugging is a nightmare. The problem is likely to be >>>>>> fixed by wrapping a call to a wxPython method or function within a >>>>>> wx.CallAfter() call. Grep the sources to see how often we have used >>>>>> this construct already. This seems to only be triggered on your >>>>>> system as I do not see it on Mac OS X 10.6, 10.7 and 10.8, Windows >>>>>> 2000, Vista and 7, or Linux (Mandriva 2008.1 32-bit, Mageia 1 64-bit, >>>>>> Mageia 3 64-bit, SUSE 64-bit, etc.). It may be related to wxPython >>>>>> 2.9.5.0. >>>>>> >>>>>> This does not mean that it is not a bug in the relax GUI sources, just >>>>>> that it has never been uncovered before. One trick is to find a way >>>>>> of reliably and quickly reproducing the error, maybe by running a >>>>>> single GUI test, and then to use the print statements to find exactly >>>>>> where the error occurred. Then return statements or massive code >>>>>> deletion can be used to exit a function early. If the bug is gone >>>>>> after that, you know the error was in the part that was deleted. Then >>>>>> this can be repeated until the bad function call can be found. The >>>>>> error could also be in the GUI test itself. Here wx.Yield() calls are >>>>>> often needed to prevent racing, as the test runs the GUI code much, >>>>>> much faster than what a user sitting at a computer could ever do. >>>>>> >>>>>> Regards, >>>>>> >>>>>> Edward >>>>>> >>>>>> >>>>>> >>>>>> On 3 December 2013 22:23, Troels E. Linnet >>>>>> <no-reply.invalid-addr...@gna.org> wrote: >>>>>>> URL: >>>>>>> <http://gna.org/bugs/?21324> >>>>>>> >>>>>>> Summary: GUI error on mac OS X Maverics 10.9 >>>>>>> Project: relax >>>>>>> Submitted by: tlinnet >>>>>>> Submitted on: Tue 03 Dec 2013 09:23:31 PM GMT >>>>>>> Category: None >>>>>>> Severity: 3 - Normal >>>>>>> Priority: 3 - Low >>>>>>> Status: None >>>>>>> Privacy: Public >>>>>>> Assigned to: None >>>>>>> Originator Name: >>>>>>> Originator Email: >>>>>>> Open/Closed: Open >>>>>>> Discussion Lock: Any >>>>>>> Release: Repository: trunk >>>>>>> Operating System: Mac OS X (Intel) >>>>>>> >>>>>>> _______________________________________________________ >>>>>>> >>>>>>> Details: >>>>>>> >>>>>>> I have tried to use: >>>>>>> wxPython2.9-osx-2.9.5.0-cocoa-py2.7.dmg >>>>>>> and >>>>>>> brew install wxmac >>>>>>> >>>>>>> to get the same GUI errors. >>>>>>> >>>>>>> Log attached. >>>>>>> >>>>>>> *** Terminating app due to uncaught exception 'NSRangeException', >>>>>>> reason: '*** >>>>>>> -[__NSArrayM objectAtIndex:]: index 18446744073709551615 beyond bounds >>>>>>> for >>>>>>> empty array' >>>>>>> >>>>>>> Could it be related to this post? >>>>>>> http://stackoverflow.com/questions/17246160/textctrl-providing-an-out-of-bound-exception-in-wxpython >>>>>>> >>>>>>> http://stackoverflow.com/questions/13085683/xcode-terminating-app-due-to-uncaught-exception-nsrangeexception >>>>>>> >>>>>>> http://stackoverflow.com/questions/4289894/terminating-app-due-to-uncaught-exception-nsrangeexception-reason >>>>>>> >>>>>>> I will now try with: >>>>>>> wxPython2.9-osx-2.9.5.0-carbon-py2.7.dmg >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> _______________________________________________________ >>>>>>> >>>>>>> File Attachments: >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------- >>>>>>> Date: Tue 03 Dec 2013 09:23:31 PM GMT Name: gui_error.log Size: 70kB >>>>>>> By: >>>>>>> tlinnet >>>>>>> >>>>>>> <http://gna.org/bugs/download.php?file_id=19415> >>>>>>> >>>>>>> _______________________________________________________ >>>>>>> >>>>>>> Reply to this item at: >>>>>>> >>>>>>> <http://gna.org/bugs/?21324> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Message sent via/by Gna! >>>>>>> http://gna.org/ >>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> 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