Author: bugman
Date: Wed Feb 4 14:12:22 2015
New Revision: 27508
URL: http://svn.gna.org/viewcvs/relax?rev=27508&view=rev
Log:
Created a base class for the memory management scripts for the GUI user
functions.
The core of the GUI_uf_minimise_execute.py script has been converted into the
GUI_base.py base class
module. This will allow for new GUI user function testing scripts to be
created.
Added:
trunk/devel_scripts/memory_management/GUI_base.py
- copied, changed from r27507,
trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py
Modified:
trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py
Copied: trunk/devel_scripts/memory_management/GUI_base.py (from r27507,
trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py)
URL:
http://svn.gna.org/viewcvs/relax/trunk/devel_scripts/memory_management/GUI_base.py?p2=trunk/devel_scripts/memory_management/GUI_base.py&p1=trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py&r1=27507&r2=27508&rev=27508&view=diff
==============================================================================
--- trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py
(original)
+++ trunk/devel_scripts/memory_management/GUI_base.py Wed Feb 4 14:12:22 2015
@@ -35,7 +35,6 @@
# relax module imports.
from data_store import Relax_data_store; ds = Relax_data_store()
from gui import relax_gui
-from gui.controller import Controller
from gui.fonts import font
from gui.interpreter import Interpreter
from gui.uf_objects import Uf_storage; uf_store = Uf_storage()
@@ -45,15 +44,15 @@
-class Controller:
+class Dummy_controller:
"""Dummy relax controller."""
def __init__(self):
- self.log_panel = Log_panel()
+ self.log_panel = Dummy_log_panel()
-class Log_panel:
+class Dummy_log_panel:
"""Dummy relax controller log panel."""
def on_goto_end(self, arg1):
@@ -64,8 +63,11 @@
class Testing_frame(wx.Frame):
"""Testing frame."""
- def __init__(self, parent, title):
+ def __init__(self, parent, title, num=10000):
"""Set up a minimal relax GUI."""
+
+ # Store the args.
+ self.num = num
# Initialise the frame.
wx.Frame.__init__(self, parent, title=title, size=(200,100))
@@ -81,9 +83,16 @@
self.interpreter = Interpreter()
# Build the controller, but don't show it.
- self.controller = Controller()
+ self.controller = Dummy_controller()
+ # Open the muppy results file.
+ self.file = open('muppy_log', 'w')
+
+ # Run the test.
self.test()
+ print("Finished!")
+
+ # Show the frame.
self.Show(True)
@@ -166,111 +175,23 @@
uf.Destroy()
+ def muppy_loop(self):
+ """Generator method for looping over the iterations and writing out
the muppy output."""
+
+ # Loop over the desired number of iterations.
+ for i in range(self.num):
+ # Muppy output, only output at every 100th iteration.
+ if not i % 100:
+ self.file.write("Iteration %i\n" % i)
+ self.file.write("Muppy heap:\n")
+ for line in
muppy.summary.format_(muppy.summary.summarize(muppy.get_objects())):
+ self.file.write("%s\n" % line)
+ self.file.write("\n\n\n")
+ self.file.flush()
+
+ # Yield the loop index.
+ yield i
+
+
def show_controller(self, arg1):
"""Dummy function."""
-
-
- def test(self):
- """Run the tests."""
-
- # Minimise via the GUI user function.
- file = open('muppy_log', 'w')
- for i in range(10000):
- self._execute_uf(uf_name='minimise.execute', min_algor='simplex',
constraints=False)
- if not i % 100:
- file.write("Iteration %i\n" % i)
- file.write("Muppy heap:\n")
- for line in
muppy.summary.format_(muppy.summary.summarize(muppy.get_objects())):
- file.write("%s\n" % line)
- file.write("\n\n\n")
- file.flush()
-
- print("Finished!")
-
-
-# Missing intensity type (allow this script to run outside of the system test
framework).
-if not hasattr(ds, 'int_type'):
- ds.int_type = 'height'
-
-# Missing temporary directory.
-if not hasattr(ds, 'tmpdir'):
- ds.tmpdir = 'temp'
-
-# Create the data pipe.
-pipe.create('rx', 'relax_fit')
-
-# The path to the data files.
-data_path = status.install_path +
sep+'test_suite'+sep+'shared_data'+sep+'curve_fitting'
-
-# Load the sequence.
-sequence.read('Ap4Aase.seq', dir=status.install_path +
sep+'test_suite'+sep+'shared_data', res_num_col=1, res_name_col=2)
-
-# Deselect unresolved spins.
-deselect.read(file='unresolved', dir=data_path, res_num_col=1)
-
-# Name the spins so they can be matched to the assignments.
-spin.name(name='N')
-
-# Spectrum names.
-names = [
- 'T2_ncyc1_ave',
- 'T2_ncyc1b_ave',
- 'T2_ncyc2_ave',
- 'T2_ncyc4_ave',
- 'T2_ncyc4b_ave',
- 'T2_ncyc6_ave',
- 'T2_ncyc9_ave',
- 'T2_ncyc9b_ave',
- 'T2_ncyc11_ave',
- 'T2_ncyc11b_ave'
-]
-
-# Relaxation times (in seconds).
-times = [
- 0.0176,
- 0.0176,
- 0.0352,
- 0.0704,
- 0.0704,
- 0.1056,
- 0.1584,
- 0.1584,
- 0.1936,
- 0.1936
-]
-
-# Load the data twice to test data deletion.
-for iter in range(2):
- # Loop over the spectra.
- for i in range(len(names)):
- # Load the peak intensities.
- spectrum.read_intensities(file=names[i]+'.list', dir=data_path,
spectrum_id=names[i], int_method=ds.int_type)
-
- # Set the relaxation times.
- relax_fit.relax_time(time=times[i], spectrum_id=names[i])
-
- # Specify the duplicated spectra.
- spectrum.replicated(spectrum_ids=['T2_ncyc1_ave', 'T2_ncyc1b_ave'])
- spectrum.replicated(spectrum_ids=['T2_ncyc4_ave', 'T2_ncyc4b_ave'])
- spectrum.replicated(spectrum_ids=['T2_ncyc9b_ave', 'T2_ncyc9_ave'])
- spectrum.replicated(spectrum_ids=['T2_ncyc11_ave', 'T2_ncyc11b_ave'])
-
- # Peak intensity error analysis.
- spectrum.error_analysis()
-
- # Delete the data.
- if iter == 0:
- for i in range(len(names)):
- spectrum.delete(names[i])
-
-# Set the relaxation curve type.
-relax_fit.select_model('exp')
-
-# Grid search.
-minimise.grid_search(inc=11)
-
-# Set up and execute the GUI.
-app = wx.App(False)
-frame = Testing_frame(None, "GUI memory test")
-frame.Show(True)
-app.MainLoop()
Modified: trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py
URL:
http://svn.gna.org/viewcvs/relax/trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py?rev=27508&r1=27507&r2=27508&view=diff
==============================================================================
--- trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py
(original)
+++ trunk/devel_scripts/memory_management/GUI_uf_minimise_execute.py Wed Feb
4 14:12:22 2015
@@ -35,157 +35,28 @@
# relax module imports.
from data_store import Relax_data_store; ds = Relax_data_store()
from gui import relax_gui
-from gui.controller import Controller
-from gui.fonts import font
from gui.interpreter import Interpreter
from gui.uf_objects import Uf_storage; uf_store = Uf_storage()
from lib.errors import RelaxError
from status import Status; status = Status()
from user_functions.data import Uf_info; uf_info = Uf_info()
-
-
-class Controller:
- """Dummy relax controller."""
-
- def __init__(self):
- self.log_panel = Log_panel()
+# Base module imports.
+from GUI_base import Testing_frame
-class Log_panel:
- """Dummy relax controller log panel."""
-
- def on_goto_end(self, arg1):
- """Dummy function."""
-
-
-
-class Testing_frame(wx.Frame):
+class Frame(Testing_frame):
"""Testing frame."""
- def __init__(self, parent, title):
- """Set up a minimal relax GUI."""
+ def test(self):
+ """Run the test."""
- # Initialise the frame.
- wx.Frame.__init__(self, parent, title=title, size=(200,100))
+ # Run for the desired number of iterations.
+ for i in self.muppy_loop():
+ # Minimise via the GUI user function.
+ self._execute_uf(uf_name='minimise.execute', min_algor='simplex',
constraints=False)
- # Set up a pseudo-relax GUI.
- app = wx.GetApp()
- app.gui = self
-
- # Set up some standard interface-wide fonts.
- font.setup()
-
- # Initialise the special interpreter thread object.
- self.interpreter = Interpreter()
-
- # Build the controller, but don't show it.
- self.controller = Controller()
-
- self.test()
- self.Show(True)
-
-
- def _execute_uf(self, *args, **kargs):
- """Execute the given user function.
-
- @keyword uf_name: The name of the user function.
- @type uf_name: str
- """
-
- # Checks.
- if 'uf_name' not in kargs:
- raise RelaxError("The user function name argument 'uf_name' has
not been supplied.")
-
- # Process the user function name.
- uf_name = kargs.pop('uf_name')
-
- # Get the user function data object.
- uf_data = uf_info.get_uf(uf_name)
-
- # Convert the args into keyword args.
- for i in range(len(args)):
- # The keyword name for this arg.
- name = uf_data.kargs[i]['name']
-
- # Check.
- if name in kargs:
- raise RelaxError("The argument '%s' clashes with the %s
keyword argument of '%s'." % (arg[i], name, kargs[name]))
-
- # Set the keyword arg.
- kargs[name] = args[i]
-
- # Add the keyword args not supplied, using the default value.
- for i in range(len(uf_data.kargs)):
- # Alias.
- arg = uf_data.kargs[i]
-
- # Already set.
- if arg['name'] in kargs:
- continue
-
- # Set the default.
- kargs[arg['name']] = arg['default']
-
- # Merge the file and directory args, as needed.
- for i in range(len(uf_data.kargs)):
- # Alias.
- arg = uf_data.kargs[i]
-
- # File selection and associated directory arg.
- if arg['arg_type'] == 'dir' and arg['name'] in kargs:
- # Find the associated file selection arg name.
- for j in range(len(uf_data.kargs)):
- if uf_data.kargs[j]['arg_type'] == 'file sel':
- file_sel_name = uf_data.kargs[j]['name']
-
- # Prepend the directory to the file, if needed and supplied.
- if file_sel_name in kargs and kargs[arg['name']]:
- kargs[file_sel_name] = kargs[arg['name']] + sep +
kargs[file_sel_name]
-
- # Remove the directory argument.
- kargs.pop(arg['name'])
-
- # The user function object.
- uf = uf_store[uf_name]
-
- # Force synchronous operation of the user functions.
- status.gui_uf_force_sync = True
-
- # Call the GUI user function object with all keyword args, but do not
execute the wizard.
- uf(wx_wizard_run=False, **kargs)
-
- # Execute the user function, by mimicking a click on 'ok'.
- uf.wizard._ok()
-
- # Restore the synchronous or asynchronous operation of the user
functions so the GUI can return to normal.
- status.gui_uf_force_sync = False
-
- # Destroy the user function object.
- uf.Destroy()
-
-
- def show_controller(self, arg1):
- """Dummy function."""
-
-
- def test(self):
- """Run the tests."""
-
- # Minimise via the GUI user function.
- file = open('muppy_log', 'w')
- for i in range(10000):
- self._execute_uf(uf_name='minimise.execute', min_algor='simplex',
constraints=False)
- if not i % 100:
- file.write("Iteration %i\n" % i)
- file.write("Muppy heap:\n")
- for line in
muppy.summary.format_(muppy.summary.summarize(muppy.get_objects())):
- file.write("%s\n" % line)
- file.write("\n\n\n")
- file.flush()
-
- print("Finished!")
# Missing intensity type (allow this script to run outside of the system test
framework).
@@ -271,6 +142,6 @@
# Set up and execute the GUI.
app = wx.App(False)
-frame = Testing_frame(None, "GUI memory test")
+frame = Frame(None, "GUI memory test")
frame.Show(True)
app.MainLoop()
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits mailing list
[email protected]
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