Added ReadMe.txt and some docstrings
authorillysam <devnull@localhost>
Fri, 5 Feb 2010 18:11:58 +0000 (18:11 +0000)
committerillysam <devnull@localhost>
Fri, 5 Feb 2010 18:11:58 +0000 (18:11 +0000)
ReadMe.txt [new file with mode: 0644]
hooke.py
plugins/fit.py
plugins/plot.py
plugins/results.py

diff --git a/ReadMe.txt b/ReadMe.txt
new file mode 100644 (file)
index 0000000..14b05e8
--- /dev/null
@@ -0,0 +1,94 @@
+Hooke(GUI)\r
+Hooke(GUI) is a GUI-only version of Hooke. The fact that all commands can be chosen from the GUI and do not need to be typed into the command line, provides a different user experience. This might be beneficial for some users.\r
+\r
+The GUI code is based on the examples from the wxPython DEMO, copyright 1997-2006 by Robin DUnn and Total Control Software.\r
+\r
+The property editor is based on the code in test_propgrid.py provided with the wxPropertyGrid download copyright 2006-2009 by Jaakko Salli.\r
+\r
+\r
+== Installation ==\r
+Please follow the installation guidelines for Hooke. You don't need to install wxMPL to run Hooke(GUI). However, you need to install ConfigObj (http://www.voidspace.org.uk/python/configobj.html) and wxPropertyGrid (http://wxpropgrid.sourceforge.net/cgi-bin/index). Follow the installation instructions on the respective websites.\r
+Unfortunately, there seem to be some issues with wxPropertyGrid on Linux, Mac OS X and other nix systems.\r
+\r
+Hooke(GUI) has been developed and tested with this combination of libraries on Windows (XP, Vista, 7):\r
+\r
+  * Python: 2.6.4\r
+  * wxPython: 2.8.10.1\r
+  * wxPropertyGrid: 1.4.9.1\r
+  * matplotlib: 0.99.1\r
+  * SciPy: 0.7.1\r
+  * NumPy: 1.3.0\r
+\r
+The program will probably work fine with other combinations as well. If you can make it work, please post your combination on the Hooke website indicating that you are using Hooke(GUI).\r
+\r
+This version is not yet complete but provides the basic functionality required to do simple force curve filtering and autopeak analysis.\r
+\r
+\r
+== Interface ==\r
+Starting Hooke(GUI) for the first time, you will see the central plot area with the current plot surrounded by the following windows (the F key toggles the visibility of the window):\r
+\r
+  # Folders (F5)\r
+  # Playlists (F6)\r
+  # Commands (or Settings and commands) (F7)\r
+  # Properties (F8)\r
+  # Assistant (F9)\r
+  # Results (F10)\r
+  # Output (F11)\r
+\r
+\r
+Initially, the window will be rather small in order to work with small screen resolutions. Adjust the size and position to your liking.\r
+\r
+Above the windows you see the navigation toolbar to switch from one curve to another (next/previous).\r
+\r
+=== 1. Folders ===\r
+Here you can navigate your file system and double click on a saved playlist to open it. In order to change the starting folder, you have to edit _hooke.ini_ in the _config_ folder (core/workdir). In the near future, core settings will be made editable from the GUI.\r
+\r
+=== 2. Playlists ===\r
+You can manage several playlists in this window. As the GUI is rather flexible, it is possible to display the curves from different playlists side by side to compare them (relatively handy when comparing different fit parameters). You can double-click a file in the playlist to display it in the plot area. Deleting entire playlists or single files can be accomplished by right-clicking and selecting 'Delete'.\r
+\r
+=== 3. Commands (or Settings and commands) ===\r
+All available commands (_i.e._ do_COMMAND) are listed under their corresponding plug-in. In order to see a plug-in and its commands, you have to edit _hooke.ini_ in the _config_ folder (plugins/PLUGINNAME = True). Selecting a plug-in or command will display the associated help in the Assistant window (see below). You can edit the properties of the selected command in the Properties window (see below) and click 'Execute' to run the selected command. If you do not need to modify any properties, you can double-click a command to run it.\r
+\r
+=== 4. Properties ===\r
+The properties for the command selected in the Commands window (see above) are displayed here. Edit the properties to your satisfaction (some need to be confirmed by hitting enter, this seems to be a problem in wxPropertyGrid) and click the 'Execute' button to run the selected command. Floating point values are limited to a certain number of decimals (limitation of wxPropertyGrid?) so be careful when using floating point values.\r
+\r
+=== 5. Assistant ===\r
+Selecting a plug-in or command in the Commands window will display the associated help here. The help for the plug-in should give a general description of the plug-in. The help for a command should describe the properties available for this command and suggest reasonable\r
+default values if possible. feel free to point out missing help content.\r
+\r
+=== 6. Results ===\r
+The results from the 'autopeak' command are displayed here. Initially, all results are checked (i.e visible). If you want to hide a fit, simply uncheck it. Hidden curves will not be exported either. You can only display one type of fit result (WLC, FJC, etc.) at a time (results plug-in - show_results).\r
+\r
+=== 7. Output ===\r
+The Output window serves as a log where pertinent information is displayed. If something does not work the way you expect it, have a look here to see if there is more information available.\r
+\r
+== General remarks ==\r
+Ignore the text on the Welcome tab. This tab is more like a proof of principle and will contain a short how-to in the future (once the howto is written).\r
+\r
+Hooke(GUI) will remember the size and position of the main window.\r
+\r
+You can arrange the windows any which way you like and save this arrangement as a perspective. Hooke(GUI) will always start with the last used perspective and you can switch from one perspective to another by selecting a perspective from the perspectives menu. After deleting a perspective, the radio indicator in the perspectives menu disappears (known bug in wxPython). This is only a visual problem and does not affect anything else.\r
+\r
+In order to pan the plot, zoom in and out and export the plot of your force curves, use the plot toolbar under the plot. A more detailed description is available on the matplotlib website (http://matplotlib.sourceforge.net/users/navigation_toolbar.html).\r
+\r
+== Some plug-ins and commands ==\r
+  * replot (plot): replots the current force curve from scratch eliminating any secondary plots\r
+  * fjc/fjcPEG/wlc (fit): do not use any of these commands directly, they are not implemented properly yet. However, the properties you set for these commands are used for the autopeak command\r
+  * plotmanipulators (core): select the plotmanipulators you want to use and arrange them in the proper order\r
+  * test (test): use this for testing purposes. You find do_test in hooke.py\r
+  * clear_results (results): deletes all fitting results from the curve\r
+  * show_results (results): select which fitting results should be displayed on the plot\r
+  * overlay (export): exports all retraction curves in a playlist on the same scale. This is achieved by determining the maximum x window and adding x(max) and x(min) to all curves that are shorter than the maximum x window. Make sure to filter your playlist before running this command!\r
+\r
+== Basic analysis and autopeak ==\r
+Please follow the steps for basic analysis described on the Hooke website. Instead of typing in the command at the command-line, select it in the Commands window, set your properties in the Properties window and click on 'Execute'.\r
+\r
+The Brief_Autopeak_HowTo tutorial on the Hooke website is also applicable. In Hooke(GUI) you need to setup the type of fit you want to use: in the Properties of the autopeak command (autopeak plug-in) select wlc, fjc or fjcPEG from the dropdown list for the fit_function.\r
+\r
+In order to display the fitted curves on the plot, select the same type of fit in the Properties of the show_results command (results plug-in).\r
+\r
+Be advised that notes are not yet available in Hooke(GUI).\r
+\r
+== Brief Plug-in/Properties tutorial ==\r
+Have a look at the files in the _plugins_ folder. The python files contain the plotmanipulators (_i.e._ plotmanip_NAME), commands (_i.e._ do_COMMAND) and auxilliary methods. The ini files contain the information for the Properties window. You can already use a fair number of datatypes (_e.g._ integer, float, boolean, list, color, etc.) and more can be added. Be careful when using floats as there is a limit to the number of decimals (see above). The plotmanipulators and commands should read the properties directly from the ini file instead of having them passed to them as arguments. For the time being, accessor methods are located in hooke.py (_e.g._ GetBoolFromConfig()).\r
+A more detailed description will be made available.
\ No newline at end of file
index 6a28f12dc944509515fcaf2fc0c5408e8ed86e73..8be70d1926ea05fb4cbc8b269b2b0a73be987395 100644 (file)
--- a/hooke.py
+++ b/hooke.py
@@ -49,6 +49,8 @@ import panels.propertyeditor
 import panels.results\r
 import plugins\r
 \r
+import lib.igor\r
+\r
 global __version__\r
 global __codename__\r
 global __releasedate__\r
@@ -931,7 +933,7 @@ class HookeFrame(wx.Frame):
     def OnSavePerspective(self, event):\r
 \r
         def nameExists(name):\r
-            menu_position = self.MenuBar.FindMenu('Perspectives') \r
+            menu_position = self.MenuBar.FindMenu('Perspectives')\r
             menu = self.MenuBar.GetMenu(menu_position)\r
             for item in menu.GetMenuItems():\r
                 if item.GetText() == name:\r
@@ -1124,7 +1126,9 @@ class HookeFrame(wx.Frame):
         self.UpdatePlot()\r
 \r
     def do_test(self):\r
-        self.AppendToOutput(self.config['perspectives']['active'])\r
+        '''\r
+        Use this command for testing purposes. You find do_test in hooke.py.\r
+        '''\r
         pass\r
 \r
     def do_version(self):\r
@@ -1179,7 +1183,7 @@ class HookeFrame(wx.Frame):
         perspectives_list.sort()\r
 \r
         #get the Perspectives menu\r
-        menu_position = self.MenuBar.FindMenu('Perspectives') \r
+        menu_position = self.MenuBar.FindMenu('Perspectives')\r
         menu = self.MenuBar.GetMenu(menu_position)\r
         #delete all menu items\r
         for item in menu.GetMenuItems():\r
index 87caa4c3c180a0a1f804e47f12fd52b7e01fefc0..acba74c60acdd388fd9203b1369ca6341c4065ef 100644 (file)
@@ -27,6 +27,13 @@ import scipy.odr
 from lib.libhooke import coth
 
 class fitCommands(object):
+    '''
+    Do not use any of the following commands directly:
+    - wlc
+    - fjc
+    - fjcPEG
+    These commands are not implemented properly yet. However, the properties you set for these commands are used for the autopeak command.
+    '''
 
     def _plug_init(self):
         self.wlccurrent=None
index beab346e4c00adec6c8168c24af039e593f2d9f0..37a437c735ad7387589e36343cdda254e1b6a994 100644 (file)
@@ -20,4 +20,7 @@ class plotCommands(object):
         pass
 
     def do_replot(self):
+        '''
+        Replots the current force curve from scratch eliminating any secondary plots.
+        '''
         self.UpdatePlot()
index 84768826b8f57d8c2ba935e415fa5c816b4a4e16..10851bc71d6dfe9ce9ec11e7532ad47d6cd8c050 100644 (file)
@@ -17,8 +17,11 @@ class resultsCommands(object):
 
     def _plug_init(self):
         pass
-    
+
     def do_clear_results(self):
+        '''
+        Deletes all fitting results from the curve.
+        '''
         plot = self.GetActivePlot()
         if plot is not None:
             plot.results.clear()
@@ -26,4 +29,7 @@ class resultsCommands(object):
 
 
     def do_show_results(self):
+        '''
+        Select which fitting results should be displayed on the plot.
+        '''
         self.UpdatePlot()