W. Trevor King [Wed, 12 May 2010 12:33:25 +0000 (08:33 -0400)]
Moved debuging commands from hooke_cli and plugin.system to plugin.debug.
W. Trevor King [Wed, 12 May 2010 12:29:00 +0000 (08:29 -0400)]
Moved system commands from hooke_cli to plugin.system.
W. Trevor King [Wed, 12 May 2010 12:05:48 +0000 (08:05 -0400)]
Added Argument.count handling to hooke.ui.commandline.
W. Trevor King [Wed, 12 May 2010 11:31:34 +0000 (07:31 -0400)]
Rework hooke.command.Command.handle_arguments (again :p).
Previous implementation didn't set params[name] when
num_provided == 0 and argument.callback != None
W. Trevor King [Wed, 12 May 2010 11:20:48 +0000 (07:20 -0400)]
Adjust hooke.command.UncaughtException to properly handle pickle reconstruction.
multiprocessing.Queue pickles objects to send through its pipe, so our
objects must be capable of surving the pickling process unscathed.
W. Trevor King [Tue, 11 May 2010 10:52:31 +0000 (06:52 -0400)]
Added interaction to hooke.ui.commandline.LocalCommandExit.
Also broke out commandline's exit and help commands. They were
getting complicated enough to deserve their own classes.
W. Trevor King [Mon, 10 May 2010 19:47:08 +0000 (15:47 -0400)]
Better solution to internal/external names via `name_fn`.
W. Trevor King [Mon, 10 May 2010 19:27:12 +0000 (15:27 -0400)]
Use ._cl_name and ._cl_aliases instead of overwriting .name and .aliases.
We don't change the keys hardcoded into the Command._run methods, so
we need to keep the original names. Hmm, I'll have to adjust
Command.help and Argument.help to use the external names...
W. Trevor King [Mon, 10 May 2010 18:19:59 +0000 (14:19 -0400)]
Add hooke.playlist.NoteIndexList and refactor exception handling in commandline.
Highlights:
* hooke.playlist classes now subclass the new hooke.playlist.NoteIndexList
* hooke.plugin.cut.CurveArgument replaces previous _run hacking with
a callback to initialize the default curve.x
* hooke.ui.commandline.command_parser -> CommandLineParser. The new
class is cleaner, and raises exceptions rather than exiting. We
don't want Hooke dying until the user has time to clean up.
W. Trevor King [Mon, 10 May 2010 16:43:05 +0000 (12:43 -0400)]
Pass Hooke instance to CommandEngine.run(), not UserInterface.run().
User interface just needs its configuration (already setup in
Hooke.load_ui() -> ui.load_ui(self.config)
) and a read-only list of commands. Giving the Hooke instance to
CommandEngine allows the commands to work on the Hooke instance
directly. This makes user interfaces less intelligent (i.e. easier to
write), and more consistent (because they all depend on the same
commands engine.)
W. Trevor King [Mon, 10 May 2010 15:35:03 +0000 (11:35 -0400)]
Don't crash when Command._run() raises an uncaught Exception.
Just print the traceback and move on. This gives the user time to
exit gracefully (saving playlists etc.).
W. Trevor King [Mon, 10 May 2010 15:05:34 +0000 (11:05 -0400)]
Argument parser now works for command execution as well (vs. just for help).
W. Trevor King [Mon, 10 May 2010 13:43:55 +0000 (09:43 -0400)]
Added command parser to hooke.ui.commandline for argument listing.
W. Trevor King [Sun, 9 May 2010 22:41:55 +0000 (18:41 -0400)]
help_* working in commandline UI.
Still to go:
* DoCommand._parse_args
* DoHelp._usage_string
* CompleteCommand
* Interactive communication between user and command
W. Trevor King [Sun, 9 May 2010 20:54:30 +0000 (16:54 -0400)]
Added basic commandline framework to ui.commandline (using cmd.Cmd)
W. Trevor King [Sun, 9 May 2010 19:43:58 +0000 (15:43 -0400)]
Finished off hooke.hooke and fleshed out hooke.ui.
Highlights:
* New hooke.command for CommandExit (and subclasses), Command, and
Argument. For the same reason as hooke.playlist: keep core
functionality out of hooke.plugin, which is only for the pluggable
interface to that functionality.
* New hooke.engine containing CommandEngine. Not much going on
here. Perhaps I will merge it into hooke.command later...
* New hooke.ui.commandline stub for 'command line' UI.
* Filled in hooke.ui stub.
* Added UI and CommandEngine handling to hooke.hooke.Hooke.
* Added a new super-local '.hooke.cfg' to hooke.config.DEFAULT_PATHS.
For project-specific hooke configuration? Mostly to avoid suprising
the user by clobbering ~/.hooke.cfg.
* Fix expanduser bug in hooke.config.HookeConfigParser.write.
* Fix super(AddCommand, self) -> super(AddGlobCommand, self) bug in
hooke.plugin.playlist.AddGlobCommand.__init__.
W. Trevor King [Sun, 9 May 2010 17:23:02 +0000 (13:23 -0400)]
Added hooke.plugin.playlist.AddGlobCommand.
This completes the rewrite of individual playlist handling.
Also:
* Added hooke.plugin.playlist.FilePlaylist.set_path() to reduce
duplicate code.
W. Trevor King [Sun, 9 May 2010 17:04:26 +0000 (13:04 -0400)]
Oops, I'd forgotten to version the restored hooke.playlist module.
W. Trevor King [Sun, 9 May 2010 16:26:19 +0000 (12:26 -0400)]
A number of minor documentation cleanups.
W. Trevor King [Sun, 9 May 2010 15:30:14 +0000 (11:30 -0400)]
Updated to doc building framework. Added Sphinx extensions and fixed genrst dependency
W. Trevor King [Sun, 9 May 2010 15:29:06 +0000 (11:29 -0400)]
Minor fix to hooke.plugin.playlist.__doc__
W. Trevor King [Sun, 9 May 2010 14:32:27 +0000 (10:32 -0400)]
Moved Playlist and FilePlaylist definitions back to hooke.playlist
We shouldn't define core classes in plugins. This will make the
plugin clearer, separating the core functionality from the silly
plugin interface to that core functionality. Such Builtins are useful
for the Hooke command line and GUIs, but not for people using Python
to import hooke directly.
W. Trevor King [Sun, 9 May 2010 13:57:07 +0000 (09:57 -0400)]
Cleaned up Builtin handling and reduced driver/plugin duplication.
W. Trevor King [Sun, 9 May 2010 13:29:39 +0000 (09:29 -0400)]
Moved hooke.playlist -> hooke.plugin.playlist and added hooke.plugin.Builtin.
Highlights:
* Cleaner Playlist, with more consistent file format.
* New "Builtin" class for required (core) commands.
* Moved NotRecognized from hooke.driver -> hooke.curve to avoid
import-order issues. Now hooke.curve can be fully loaded before
hooke.driver.
* Moved hooke.curve.Data.notes -> hooke.curve.Data.info['note']
for better consistency with Curve and Playlist.
* Started cleaning up plugin loading into flexible functions.
W. Trevor King [Sat, 8 May 2010 22:54:58 +0000 (18:54 -0400)]
Add Hooke.commands, a list of available commands
W. Trevor King [Sat, 8 May 2010 22:46:11 +0000 (18:46 -0400)]
Ironed out kinks in plugin/driver loading and configuring.
Highlights:
* Plugin/Driver.setting_section attribute so subclasses don't need
to construct it on their own (duplicate effort, and so, error
prone).
* Fixed self.wrap = True -> self.wrap = wrap bug in
hooke.config.Setting
* No longer alter hooke.config.DEFAULT_SETTINGS in
hooke.hooke.Hooke.__init__()
* Filled in Hooke.load_plugins()/.load_drivers() stubs.
* Removed deprecated Hooke.driver_default_settings().
* Commented out a lot of the old HookeFrame code. I'll delete
it as I go through and implement its functionality.
W. Trevor King [Sat, 8 May 2010 21:04:08 +0000 (17:04 -0400)]
Rework hooke.driver and hooke.driver.tutorial along the lines of hooke.plugin.
Many more drivers to refactor, but this is good enough to get me going
again with the core code.
W. Trevor King [Sat, 8 May 2010 12:48:02 +0000 (08:48 -0400)]
Assorted changes so import hooke.plugin works ;).
Uncommenting the cut entry in PLUGIN_MODULES exposed a number of bugs
which I fixed:
* def Plugin (object): -> class Plugin (object):
* plugin initialization must occur *after* Command/Argument definition.
That way the neccessary classes are defined when we go to load the
plugin modules.
* Broken default_settings() fixed.
Also did some docstring cleanup.
W. Trevor King [Sat, 8 May 2010 11:20:02 +0000 (07:20 -0400)]
Moved hooke.libhookecurve -> hooke.curve and rewrote HookeCurve -> Curve class.
New class Data subclasses numpy.ndarray for faster data handling.
Changes:
* hooke.libhookecurve.PlotObject -> hooke.ui.gui.plot.PlotObject
* hooke.libhookecurve.Driver -> hooke.driver.Driver
* Raise new exception hooke.driver.NotRecognized if no driver
matches (vs. old print message and return false).
* Curve stores data in a list (vs. old dict). Often data order
is important. The names that used to key the data dict can
now go into Data.info['name'].
* HookeCurve.fits -> Curve.info['fits']
* HookeCurve.plots is GUI data, but if the UI needs it, it should be
stored in Curve.info['plots']
* Since Curve.data is an array,
HookeCurve.add_data() -> Curve.data.append(),
HookeCurve.delete_data() -> Curve.data.remove(), and
HookeCurve.set_data() -> Curve.data[i] = data
W. Trevor King [Sat, 8 May 2010 10:39:24 +0000 (06:39 -0400)]
Converted hooke.plugin.cut to new Plugin architecture.
W. Trevor King [Sat, 8 May 2010 10:37:08 +0000 (06:37 -0400)]
Use .type.upper() (vs. old .name.upper()) for Argument.metavar.
This conveys more information to the user
output FILE
compared to the same word twice:
output OUTPUT
Also rearranged some options.
W. Trevor King [Sat, 8 May 2010 04:07:11 +0000 (00:07 -0400)]
Moved Argument and other class definitions after Command
W. Trevor King [Sat, 8 May 2010 04:03:39 +0000 (00:03 -0400)]
Added Command and related classes to hooke.plugin
Based on my libbe.commands.base work for Bugs Everywhere.
W. Trevor King [Sat, 8 May 2010 02:26:56 +0000 (22:26 -0400)]
Added hooke.plugin.Plugin.name attribute.
Also:
* Reordered Plugin methods from first called -> last called.
* Removed old Commands class.
W. Trevor King [Fri, 7 May 2010 16:13:39 +0000 (12:13 -0400)]
Added tip-to-root/root-to-tip flexibility to hooke.util.graph
The old implementation only did tip-to-root. The new default is
root-to-tip.
W. Trevor King [Thu, 6 May 2010 12:37:52 +0000 (08:37 -0400)]
Added inclusion logic to hooke.plugin
W. Trevor King [Thu, 6 May 2010 12:37:17 +0000 (08:37 -0400)]
Added the graph module I'd developed for Bugs-Everywhere
W. Trevor King [Thu, 6 May 2010 11:27:59 +0000 (07:27 -0400)]
Beginning to rewrite Hooke to decouple from GUI.
This commit:
* Started documenting with reStructuredText (for later use by Sphinx)
* Added hooke.config module to handle configure files (via ConfigParser)
* Added hooke.compat module to hold compatibility code
(e.g. workarounds to allow Hooke to work on older Python versions).
* Added config input/output to hooke.hooke.Hooke.
* Stubbed out driver/plugin initialization in Hooke
W. Trevor King [Thu, 6 May 2010 11:25:12 +0000 (07:25 -0400)]
Added Sphinx documentation framework
W. Trevor King [Wed, 5 May 2010 15:33:22 +0000 (11:33 -0400)]
Convert from DOS to UNIX line endings.
This keeps the project consistent, since all my new files will have
UNIX line endings. If people use tools that can't handle UNIX line
endings, we can always convert back later:
for f in $(find . | grep -v '\.git'); do unix2dos "$f"; done
W. Trevor King [Tue, 4 May 2010 15:47:17 +0000 (11:47 -0400)]
Really hideous merge of Rolf Schmidt's code.
It's hard to merge code when you're not sure which version is more
recent, what the rationale behind the changes are, or very much about
how the code is supposed to work at all ;). I think I caught most of
the important ideas from both sides, and now I'm going to go back
through and clean things up.
W. Trevor King [Tue, 4 May 2010 07:23:44 +0000 (03:23 -0400)]
Oops, fix libinput import in hooke.plugin.review. Missed it in the merge
W. Trevor King [Tue, 4 May 2010 07:16:05 +0000 (03:16 -0400)]
Removed busy loop from hooke/plugin/flatfilts.py.
Perhaps it was an attempt to pause briefly? If so, time.sleep() would
be better. It wasn't much of a pause though:
$ time python -c ''
real 0m0.111s
user 0m0.089s
sys 0m0.020s
$ time python -c 'for i in range(1000): k=0'
real 0m0.115s
user 0m0.090s
sys 0m0.024s
W. Trevor King [Tue, 4 May 2010 07:09:59 +0000 (03:09 -0400)]
Merged with trunk
fabrizio.benedetti.82 [Tue, 11 May 2010 09:23:48 +0000 (09:23 +0000)]
WLC and FJC output are now with 2 decimal precision. Added a comment on autopeak on how to use the 'manual' option
fabrizio.benedetti.82 [Mon, 10 May 2010 11:09:31 +0000 (11:09 +0000)]
Added the possibility to manually choose the peaks in 'autopeak' with the option 'manual'.
fabrizio.benedetti.82 [Fri, 7 May 2010 09:07:54 +0000 (09:07 +0000)]
Correct number of digits of many output, improvement in the utility 'cut' and 'txt'.
albertogomcas [Thu, 6 May 2010 09:07:37 +0000 (09:07 +0000)]
Fixes bad call to wlc/fjc fit
W. Trevor King [Tue, 4 May 2010 06:41:19 +0000 (02:41 -0400)]
Added modular directory structure.
Also some import and other cleanups to convince myself that the
reorganization was mostly working.
albertogomcas [Wed, 24 Mar 2010 15:41:09 +0000 (15:41 +0000)]
fit.py : extended FJC fit (models water bridges of PEG in water solutions)
fit quality parameter, ratio distance(fit-data)/std(flat_area)
multifit.py : WLC and eFJC as default fits
saves quality of fits
albertogomcas [Wed, 17 Mar 2010 08:58:25 +0000 (08:58 +0000)]
multifit.py : slope can be measured from data or form manual points
tried to scale better the YNarrow
albertogomcas [Wed, 17 Mar 2010 05:09:10 +0000 (05:09 +0000)]
multifit.py : slope can be measured manually
generalvclamp.py : change color of slope line to black
albertogomcas [Tue, 16 Mar 2010 08:39:37 +0000 (08:39 +0000)]
mfp3d.py : the retraction speed is extracted from Velocity, not RetractVelocity
albertogomcas [Mon, 15 Mar 2010 05:56:37 +0000 (05:56 +0000)]
multifit.py : some graphical niceties
albertogomcas [Fri, 12 Mar 2010 06:23:26 +0000 (06:23 +0000)]
multifit.py : proper formatting of help section
albertogomcas [Fri, 12 Mar 2010 03:08:59 +0000 (03:08 +0000)]
multifit.py : Fixed a wrong named var
libhook.py : Deleted deprecated message (irritates me :D)
albertogomcas [Thu, 11 Mar 2010 12:02:18 +0000 (12:02 +0000)]
multifit.py : new plugin, mouse input based
generalvclamp.py : separated code from do_slope into _slope allowing use in other funtions
hooke.conf: activate multifit plugin by default
albertogomcas [Wed, 10 Mar 2010 09:03:04 +0000 (09:03 +0000)]
review.py: fixed crash when a file is not valid
albertogomcas [Wed, 10 Mar 2010 05:58:50 +0000 (05:58 +0000)]
review.py: avoided crash when displaying final stats
hooke.conf: deactivate hdf5 by default, activate native mfp3d
mfp3d.py: adapted driver from Hooke GUI to work in this version
procplots.py: centerzero only uses last chunk of retract
FMjoin.py: utility script to put together all files from IgorPro force maps
fabrizio.benedetti.82 [Tue, 9 Mar 2010 16:44:29 +0000 (16:44 +0000)]
Corrected a bug for the command txt when it is invoked with an unvalid plot to export.
fabrizio.benedetti.82 [Fri, 5 Mar 2010 11:44:09 +0000 (11:44 +0000)]
A correction on autopeak.py due to the add of curvetools.py (a self. was missing)
fabrizio.benedetti.82 [Mon, 1 Mar 2010 13:50:51 +0000 (13:50 +0000)]
Corrected some bugs in the scale of graphs.
albertogomcas [Thu, 18 Feb 2010 05:38:56 +0000 (05:38 +0000)]
Fixed some bugs
fabrizio.benedetti.82 [Thu, 11 Feb 2010 13:20:54 +0000 (13:20 +0000)]
Scale of axis are now in engineering format.
devicerandom [Wed, 10 Feb 2010 21:04:56 +0000 (21:04 +0000)]
(generalvclamp.py) Error checking in flatten plot manipulator - fixes issue 31
albertogomcas [Fri, 5 Feb 2010 05:56:15 +0000 (05:56 +0000)]
review.py plugin allows to review curves in groups of ten (à la Igor Pro), select some of them and save to a separate directory
fabrizio.benedetti.82 [Wed, 27 Jan 2010 08:02:51 +0000 (08:02 +0000)]
Added two plugin: jumpstat.py and multidistance.py. Change to the function has_peaks. Moved some basics routines in the new file curvetools.py.
albertogomcas [Wed, 27 Jan 2010 03:52:42 +0000 (03:52 +0000)]
Command 'note' saves notes into 'hookedir/output' directory (a bit cleaner) and if the note file exists adds instead of overwriting the file.
albertogomcas [Wed, 27 Jan 2010 03:01:14 +0000 (03:01 +0000)]
New plotmanip 'centerzero' shifts the curves to 0 force
albertogomcas [Fri, 22 Jan 2010 07:14:22 +0000 (07:14 +0000)]
Support for HDF5 files created with Igor Pro (see wiki for how to create the HDF5 file)
albertogomcas [Fri, 22 Jan 2010 07:10:10 +0000 (07:10 +0000)]
Fix: genlist can now import files without extension
W. Trevor King [Thu, 17 Dec 2009 21:09:51 +0000 (16:09 -0500)]
Added Alberto's mailing list comments about lib*.py to their docstrings.
From the thread:
http://groups.google.com/group/hookesoftware/browse_thread/thread/
7b893284cc317ea6#
W. Trevor King [Thu, 17 Dec 2009 20:35:25 +0000 (15:35 -0500)]
Added config_dir to libhooke.HookeConfig to match new dir structure
W. Trevor King [Thu, 17 Dec 2009 20:02:55 +0000 (15:02 -0500)]
Added USAGE file based on code.google.com/p/hooke/wiki/BasicAnalysis
W. Trevor King [Thu, 17 Dec 2009 19:43:34 +0000 (14:43 -0500)]
All classes should at least subclass 'object' to avoid being old-style classes.
See, for example
http://www.python.org/doc/newstyle/
http://www.python.org/doc/2.5.2/ref/node33.html
W. Trevor King [Thu, 17 Dec 2009 19:32:21 +0000 (14:32 -0500)]
Removed sha-bang from non-executable python files + whitespace cleanups.
Whitespace cleanups mostly involved removing trailing whitespace.
W. Trevor King [Thu, 17 Dec 2009 19:19:40 +0000 (14:19 -0500)]
Added README and reorganized directory structure (breaks code)
devicerandom [Thu, 19 Nov 2009 19:10:11 +0000 (19:10 +0000)]
(fit.py) Quick kludgy patch for crash of issue 0028
devicerandom [Thu, 19 Nov 2009 19:01:28 +0000 (19:01 +0000)]
(fit.py) Fixed -maybe- FJC plotting
fabrizio.benedetti.82 [Thu, 19 Nov 2009 11:46:40 +0000 (11:46 +0000)]
(autopeak.py) Corrected a bug introduced in r208
fabrizio.benedetti.82 [Wed, 11 Nov 2009 15:08:17 +0000 (15:08 +0000)]
(autopeak.py) Repeatedly asks for correct input.
fabrizio.benedetti.82 [Tue, 3 Nov 2009 15:44:12 +0000 (15:44 +0000)]
Added multidistance plugin.
devicerandom [Sun, 1 Nov 2009 17:39:28 +0000 (17:39 +0000)]
(autopeak.py) fixed autopeak documentation
devicerandom [Sun, 1 Nov 2009 17:20:21 +0000 (17:20 +0000)]
(autopeak.py) autopeak can now use FJC or WLC
devicerandom [Sun, 1 Nov 2009 16:51:27 +0000 (16:51 +0000)]
(fit.py) wording output is consistent with fit function used
devicerandom [Sun, 1 Nov 2009 16:42:42 +0000 (16:42 +0000)]
(fit.py) WLC and FJC now aliases of fit command
devicerandom [Sat, 31 Oct 2009 22:23:58 +0000 (22:23 +0000)]
Got FJC drawing right.
devicerandom [Sat, 31 Oct 2009 22:09:24 +0000 (22:09 +0000)]
Better plotting of FJC but not there yet
devicerandom [Sat, 31 Oct 2009 21:38:54 +0000 (21:38 +0000)]
First steps towards FJC support. New variable fit_function for flexible switching, still errors in drawing, inconsistencies etc. but the numbers in output seem sensible
devicerandom [Thu, 29 Oct 2009 14:57:30 +0000 (14:57 +0000)]
Hopefully reverted to r193 after mbrucale's incident
marcobrucale [Thu, 29 Oct 2009 14:43:09 +0000 (14:43 +0000)]
marcobrucale [Thu, 29 Oct 2009 14:41:17 +0000 (14:41 +0000)]
devicerandom [Thu, 8 Oct 2009 18:57:56 +0000 (18:57 +0000)]
using numpy.mean to avoid warnings; still not perfect though
devicerandom [Thu, 8 Oct 2009 18:45:14 +0000 (18:45 +0000)]
correct parsing of args of peaks command; Fixes issue 0017
devicerandom [Fri, 28 Aug 2009 12:12:09 +0000 (12:12 +0000)]
added cut.py plugin (by Fabrizio Benedetti, EPFL, Lausanne)
devicerandom [Mon, 10 Aug 2009 22:18:17 +0000 (22:18 +0000)]
deleted spurious empty dir from tree
illysam [Fri, 7 Aug 2009 13:21:48 +0000 (13:21 +0000)]
fixed: plot does not display on Windows at program launch (troubleshooting issue 1)
fixed: driver tries to open a directory (issue 15)
illysam [Fri, 31 Jul 2009 19:39:18 +0000 (19:39 +0000)]
fixed counter issue
illysam [Wed, 29 Jul 2009 17:19:47 +0000 (17:19 +0000)]
Fixed MFP1D export from Igor 4 (wavenote was not complete)
illysam [Wed, 29 Jul 2009 13:34:33 +0000 (13:34 +0000)]