mailr27508 - in /trunk/devel_scripts/memory_management: GUI_base.py GUI_uf_minimise_execute.py


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

Header


Content

Posted by edward on February 04, 2015 - 14:12:
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()




Related Messages


Powered by MHonArc, Updated Wed Feb 04 14:20:02 2015