W. Trevor King [Thu, 29 Jul 2010 16:37:31 +0000 (12:37 -0400)]
hooke.plugin.playlist.AddGlobCommand's 'input' argument type 'glob' -> 'string'
W. Trevor King [Thu, 29 Jul 2010 16:36:38 +0000 (12:36 -0400)]
Added FloatProperty and ChoiceProperty.
ChoiceProperty will be used for 'curve', 'playlist', and possibly 'driver'.
We'll group the outstanding types following:
PathProperty():
5 file
2 path
To be renamed:
1 glob --> string
To be determined:
3 object
3 dict
1 function
Handled by callbacks, to allow clicking on plots:
1 point
W. Trevor King [Thu, 29 Jul 2010 16:08:23 +0000 (12:08 -0400)]
Added BoolProperty and StringProperty
A grep through hooke/plugins/ shows what we need to implement.
I've checked the completed properties with '+'.
$ grep 'type=' hooke/plugin/*.py | sed -n "s/.* type='\([^']*\)'.*/\1/p" | sort | uniq -c
+ 8 bool
2 curve
3 dict
1 driver
5 file
7 float
1 function
1 glob
+ 22 int
3 object
2 path
1 playlist
1 point
+ 6 string
W. Trevor King [Thu, 29 Jul 2010 15:22:09 +0000 (11:22 -0400)]
Added gui.panel.propertyeditor2 to work around *nix+wxPropertyGrid issues.
The basic framework works, but only IntProperty is currently implemented.
W. Trevor King [Thu, 29 Jul 2010 11:55:34 +0000 (07:55 -0400)]
Argument-less command execution in GUI working!
W. Trevor King [Thu, 29 Jul 2010 11:41:27 +0000 (07:41 -0400)]
Added gui.panel.output for displaying text output
W. Trevor King [Thu, 29 Jul 2010 11:39:59 +0000 (07:39 -0400)]
Added gui.panel.output for displaying text output
W. Trevor King [Wed, 28 Jul 2010 21:52:45 +0000 (17:52 -0400)]
Oops. Remove PerspectiveHooks relic of aborted MixIn refactoring
W. Trevor King [Tue, 27 Jul 2010 20:51:27 +0000 (16:51 -0400)]
Reordered gui.HookeFrame methods to group by category
W. Trevor King [Tue, 27 Jul 2010 20:35:43 +0000 (16:35 -0400)]
Got 'Perspectives' menu working
W. Trevor King [Tue, 27 Jul 2010 16:14:14 +0000 (12:14 -0400)]
Break out hooke.util.pluggable.submods.
W. Trevor King [Tue, 27 Jul 2010 14:47:32 +0000 (10:47 -0400)]
ViewMenu now works with new gui layout
W. Trevor King [Tue, 27 Jul 2010 14:39:21 +0000 (10:39 -0400)]
Oops, meant to include hooke.ui.gui.panel.selection in last commit.
W. Trevor King [Tue, 27 Jul 2010 14:30:23 +0000 (10:30 -0400)]
hooke.ui.gui was getting complicated, so I stripped it down for a moment.
I want HookeFrame to be a callback clearinghouse. Flow will look like
panels/menus/navbars
| ^
callbacks methods
v |v--(response processors)-,
Hooke Frame engine
`---(execute_command)----^
With the following naming scheme in HookeFrame:
callbacks: _on_*
response processors: _postprocess_*
Also:
* more use of hooke.util.pluggable for handling extendible submods.
W. Trevor King [Mon, 26 Jul 2010 20:43:07 +0000 (16:43 -0400)]
Broke menu, navbar, statusbar, panel.notebook, and panel.welcome out of gui
W. Trevor King [Mon, 26 Jul 2010 19:06:27 +0000 (15:06 -0400)]
Rearranged gui.panel.commands
W. Trevor King [Mon, 26 Jul 2010 00:33:15 +0000 (20:33 -0400)]
Major rework of gui.panel.playlist.
I'm trying to get as much of the Playlist handling out into this
submod as possible, which should make for a cleaner gui/__init__.py.
Still, some ways to go, and the current situation is untested.
W. Trevor King [Sun, 25 Jul 2010 16:40:50 +0000 (12:40 -0400)]
Added in_callback() to hooke.util.callback and pulled out is_iterable().
Also added hooke.util.caller with caller_name() which is useful for
in_callback().
W. Trevor King [Sun, 25 Jul 2010 01:48:06 +0000 (21:48 -0400)]
Added hooke.util.callback defining the @callback decorator.
W. Trevor King [Sat, 24 Jul 2010 19:58:01 +0000 (15:58 -0400)]
Bound events down through folders. To go: commands, propgrid, results
W. Trevor King [Sat, 24 Jul 2010 18:06:50 +0000 (14:06 -0400)]
Cleaning up hooke.ui.gui. Can initialize, but without most bindings.
Following the wxPython style guide:
http://wiki.wxpython.org/wxPython%20Style%20Guide
Most of removing IDs and breaking out GUI elements into their own classes.
W. Trevor King [Sat, 24 Jul 2010 17:44:29 +0000 (13:44 -0400)]
Fix hooke -> commands typos in ui and ui.commandline.
W. Trevor King [Sat, 24 Jul 2010 17:08:19 +0000 (13:08 -0400)]
Restore hooke.jpg which was damaged by an old update_copyright.py run
W. Trevor King [Sat, 24 Jul 2010 11:18:57 +0000 (07:18 -0400)]
Rework gui/__init__.py imports
W. Trevor King [Fri, 18 Jun 2010 13:19:05 +0000 (09:19 -0400)]
Hack merge illysam's hooke.py into hooke/ui/gui/__init__.py
W. Trevor King [Fri, 18 Jun 2010 13:14:10 +0000 (09:14 -0400)]
Restore illysam's hooke.py with GUI initialization code
W. Trevor King [Fri, 18 Jun 2010 13:10:34 +0000 (09:10 -0400)]
Started converting GUI to new UserInterface architecture
W. Trevor King [Fri, 18 Jun 2010 13:01:18 +0000 (09:01 -0400)]
Run reload_config when initializing UIs
W. Trevor King [Fri, 18 Jun 2010 12:37:36 +0000 (08:37 -0400)]
Markup corrections in doc/gui.txt
W. Trevor King [Fri, 18 Jun 2010 12:29:14 +0000 (08:29 -0400)]
Finished remarking doc/gui.txt in Sphinx's reStructuredText.
Also moved hooke.plugin.plot to hooke.ui.gui.plugin.plot, since it was
breaking Sphinx compilation.
W. Trevor King [Fri, 18 Jun 2010 11:53:55 +0000 (07:53 -0400)]
Merged Rolf Schmidt's illysam branch
W. Trevor King [Fri, 18 Jun 2010 01:02:05 +0000 (21:02 -0400)]
Use numpy.loadtxt instead of newer numpy.genfromtxt in Hemingway driver.
From
http://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html
"In particular, genfromtxt is able to take missing data into account,
when other faster and simpler functions like loadtxt cannot"
We prefer loadtxt because:
* It's faster and we don't need to handle missing data.
* It's older (genfromtxt added in Numpy in 2009/01/19, released in
v1.3.0), so it's more likely to be in the user's stock Numpy
installation.
W. Trevor King [Thu, 17 Jun 2010 23:40:22 +0000 (19:40 -0400)]
Moved hooke.driver.hemingclamp to hemingway and updated to new Driver architecture
W. Trevor King [Thu, 17 Jun 2010 19:52:31 +0000 (15:52 -0400)]
Moved Closing from hooke.driver.jpk to hooke.util.util
W. Trevor King [Thu, 17 Jun 2010 17:17:57 +0000 (13:17 -0400)]
Added calibration file support to the JPK driver.
I'm not sure about my interpretation of the calibration file format.
I've emailed JPK for clarification, so we'll see what they have to say.
Also:
* Check for 'filetype' attributes when loading playlists. If it
exists, try to load using the matching driver before going through
the whole list of available drivers. This should speed up checks
for curves that were identified by some previous playlist activity
(or by hand if the user is generating playlists from scratch).
* Pass curve info into Driver.read(). This allows playlist attributes
to affect curve loading. The particular example that motivated this
was
<CHANNEL-NAME>_<BASE-NAME>_to_<TARGET-NAME>_calibration_file
for the JPK driver, but it is a good idea in general. Experiment
temperature should probably be set this way vs. its current global
config setting.
* Added Driver.logger(), to reduce code duplication.
W. Trevor King [Mon, 14 Jun 2010 16:52:17 +0000 (12:52 -0400)]
Use PEP 343's 'with' instead of try:/finally: x.close()
W. Trevor King [Mon, 14 Jun 2010 15:37:32 +0000 (11:37 -0400)]
Bring hooke.config and hooke.util.peak doctests up to speed
W. Trevor King [Mon, 14 Jun 2010 15:28:10 +0000 (11:28 -0400)]
Also override hooke.util.encoding.get_encoding in test/unicode_output.py
W. Trevor King [Mon, 14 Jun 2010 15:13:01 +0000 (11:13 -0400)]
Import os.path when we use it in test/*_driver.py
W. Trevor King [Mon, 14 Jun 2010 15:05:53 +0000 (11:05 -0400)]
Adjust test/wtk_driver.py since I didn't add all my original files.
W. Trevor King [Mon, 14 Jun 2010 14:25:59 +0000 (10:25 -0400)]
Skip PoorFit curves in flatfilt and convfilt.
W. Trevor King [Mon, 14 Jun 2010 14:08:21 +0000 (10:08 -0400)]
Avoid possible negative p[2] values in SurfacePositionModel.
W. Trevor King [Mon, 14 Jun 2010 13:56:38 +0000 (09:56 -0400)]
Updated JPK driver for JPK's version 0.5 format and new driver architecture
W. Trevor King [Mon, 14 Jun 2010 13:55:08 +0000 (09:55 -0400)]
Be slightly more path-seperator agnostic in test/*_driver.py
W. Trevor King [Mon, 14 Jun 2010 13:48:17 +0000 (09:48 -0400)]
Add logger configuration options.
W. Trevor King [Sun, 13 Jun 2010 21:18:14 +0000 (17:18 -0400)]
Removed redundant picoforcealt driver
W. Trevor King [Fri, 4 Jun 2010 17:24:35 +0000 (13:24 -0400)]
Split out curve renaming to PicoForceDriver._replace_name
I still haven't gotten things working for the 0x07200000 data, but I'm
beginning to doubt the example file. Things appear to work on the
0x06 data.
W. Trevor King [Fri, 4 Jun 2010 15:23:21 +0000 (11:23 -0400)]
Added explicit pickle test and fixed curve.Data pickling.
I missunderstood how __reduce__ worked the first time. Now there's a
doctest proving it works ;).
W. Trevor King [Fri, 4 Jun 2010 14:40:17 +0000 (10:40 -0400)]
Adjust hooke.curve.Data so .info is picklable.
Otherwise it didn't survive the Queue between the UI and Engine
processes. See
http://mail.scipy.org/pipermail/numpy-discussion/2007-April/027193.html
W. Trevor King [Fri, 4 Jun 2010 12:10:54 +0000 (08:10 -0400)]
Remove debugging trace files from hooke.driver.picoforce
W. Trevor King [Fri, 4 Jun 2010 12:01:34 +0000 (08:01 -0400)]
Brought picoforce driver up to speed with 0x06130001 and 0x07200000
W. Trevor King [Fri, 4 Jun 2010 08:50:36 +0000 (04:50 -0400)]
Extend test.mfp3d_driver to test both MFP3D file versions we have available.
W. Trevor King [Fri, 4 Jun 2010 08:41:21 +0000 (04:41 -0400)]
Minor consistency cleanups in wtk and picoforce drivers
W. Trevor King [Fri, 4 Jun 2010 08:40:33 +0000 (04:40 -0400)]
Brought mfp3d driver up to the new architecture.
The new implementation is also cleaner and more robust.
W. Trevor King [Fri, 4 Jun 2010 07:28:19 +0000 (03:28 -0400)]
Added post-data optional field processing to igorbinarywave.loadibw.
W. Trevor King [Fri, 4 Jun 2010 06:46:11 +0000 (02:46 -0400)]
Automatically split version 5 Igor wave files into columns
W. Trevor King [Fri, 4 Jun 2010 06:16:00 +0000 (02:16 -0400)]
Added MFP3D files from tanxx06.
W. Trevor King [Fri, 4 Jun 2010 06:15:04 +0000 (02:15 -0400)]
Added JPK files from albedomanu.
W. Trevor King [Fri, 4 Jun 2010 06:07:52 +0000 (02:07 -0400)]
Added version 0x06130001 PicoForce file from Fabrizio Benedetti.
W. Trevor King [Fri, 4 Jun 2010 05:34:11 +0000 (01:34 -0400)]
Added Yukken's mfp3d example data
W. Trevor King [Fri, 4 Jun 2010 05:16:51 +0000 (01:16 -0400)]
Ran update_copyright.py on igorbinarywave.py
W. Trevor King [Fri, 4 Jun 2010 05:15:46 +0000 (01:15 -0400)]
Add hooke.driver.igorbinarywave so Hooke can read Igor files.
W. Trevor King [Thu, 3 Jun 2010 16:22:38 +0000 (12:22 -0400)]
Don't join directory in WTKDriver.__find_previous_cantilever_calibration_file().
We already did that in ._list_cantilever_calibration_files().
W. Trevor King [Thu, 3 Jun 2010 16:13:00 +0000 (12:13 -0400)]
Add headers to output of 'cut' and 'export block'.
Both controlled by new 'header' arguments (optional, True by default).
W. Trevor King [Thu, 3 Jun 2010 15:55:02 +0000 (11:55 -0400)]
Fix help message when too many arguments are passed to Hooke.
Previously,
$ python bin/hooke x
would raise an exception. Now it prints an error message and hooke's
help:
More than 0 arguments to bin/hooke: ['x']
Usage: hooke [options]
...
W. Trevor King [Thu, 3 Jun 2010 14:07:11 +0000 (10:07 -0400)]
Flip deflection sign in picoforce driver so +deflection for +tension
W. Trevor King [Thu, 3 Jun 2010 14:01:02 +0000 (10:01 -0400)]
Oops, forgot to convert 'z piezo gain' to a float in the picoforce driver
W. Trevor King [Thu, 3 Jun 2010 13:59:51 +0000 (09:59 -0400)]
Add better comment parsing to hooke.ui.commandline.
The old implemtation only handled comments after valid function calls:
hooke> load_playlist test # a comment
but failed on pure comments and in help
hooke> # failing comment
hooke> help # failing comment
The new implemation handles all of these.
I changed empty lines to no-ops (rather than repeating the last
commant), because explicit is better than implicit.
W. Trevor King [Thu, 3 Jun 2010 12:56:49 +0000 (08:56 -0400)]
Added illysam's 0x07200000 picoforce example
W. Trevor King [Thu, 3 Jun 2010 10:31:53 +0000 (06:31 -0400)]
Use Sphinx's :manpage: construct for python(1).
See
http://sphinx.pocoo.org/markup/inline.html#role-manpage
This just styles the text rather than linking somewhere, because man
pages can be installation-specific.
W. Trevor King [Wed, 2 Jun 2010 20:29:00 +0000 (16:29 -0400)]
Updated doc/tutorial.txt for currently implemented commands
W. Trevor King [Wed, 2 Jun 2010 19:48:08 +0000 (15:48 -0400)]
Add FilePlaylist._ignored_keys for boring fields
W. Trevor King [Wed, 2 Jun 2010 19:26:20 +0000 (15:26 -0400)]
Translate find_contact_point_fmms to new architecture.
Also
* Add some docstrings, comments, and line wrappings.
* Rename _find_contact_point* -> find_contact_point* so users will
look at the docstrings.
* Added curve to find_contact_point*() for driver-specific hacks
and workarounds (specifically, the PicoForce trigger bug).
W. Trevor King [Wed, 2 Jun 2010 18:11:04 +0000 (14:11 -0400)]
'wtk' -> self.name in WTKDriver to reduce duplication
W. Trevor King [Wed, 2 Jun 2010 18:05:31 +0000 (14:05 -0400)]
Add PYTHONPATH reminders to doc/tutorial.txt and doc/install.txt
W. Trevor King [Wed, 2 Jun 2010 06:10:29 +0000 (02:10 -0400)]
Restrict the setup.py package search to the hooke/ directory.
Otherwise test/ and others may also be bundled, which will clutter
your installation with useless cruft.
W. Trevor King [Wed, 2 Jun 2010 06:08:57 +0000 (02:08 -0400)]
Ignore distutils build/ directory
W. Trevor King [Wed, 2 Jun 2010 05:31:44 +0000 (01:31 -0400)]
Fix 'min_deviations + std' -> 'min_deviations * std' in hooke.util.peak
Oops :p.
W. Trevor King [Wed, 2 Jun 2010 05:25:52 +0000 (01:25 -0400)]
Fixups in hooke.plugin.vclamp parameter guess and check.
* guessing adjusted for +deflection for +tension.
* checking adjusted for left-contact and possibly negative slopes.
* added details to 'Too far' version of PoorFit.
W. Trevor King [Wed, 2 Jun 2010 05:21:31 +0000 (01:21 -0400)]
Flip deflection sign for hooke.driver.wtk.
We want +deflection for +chain tension.
W. Trevor King [Wed, 2 Jun 2010 04:36:41 +0000 (00:36 -0400)]
Moved contact point detection from plugin.fit -> plugin.vclamp.
I haven't translated the two algorithms brought over from fit yet, but
I have added my own bilinear fit approach:
_find_contact_point_wtk
Also:
* vclamp.scale gets access to hooke for the command list and
command._run(hooke, ...)
* vclamp.scale functionality broken out into SurfaceContactCommand and
ForceCommand.
* 'surface z piezo (m)' -> 'surface distance (m)'
* Actually set params['curve'] for flatfilt and convfilt FilterCommand
subclasses. Previous implementation just banged away on the default
curve, regardless of the curve option passed to the subclass' _run.
W. Trevor King [Wed, 2 Jun 2010 04:22:28 +0000 (00:22 -0400)]
Remove blank column in wtk driver retraction curves.
The old implentation reserved space for the z piezo input column, but
never filled it in or added the relevant entry to info['columns'].
This caused some column indexing confusion in vclamp.scale().
W. Trevor King [Wed, 2 Jun 2010 03:14:40 +0000 (23:14 -0400)]
Fix (retract,approach,params) -> (approach,retract,params) in wtk driver.
The block paths should be in chronological order.
W. Trevor King [Wed, 2 Jun 2010 03:00:19 +0000 (23:00 -0400)]
Add hooke.playlist.NoteIndexList._setup_item
This allows item initialization to occur in both .current() and
.filter().
Renamed Playlist._load -> ._setup_item for consistency.
W. Trevor King [Wed, 2 Jun 2010 02:10:36 +0000 (22:10 -0400)]
Additional cleanups in fit.py
* Added outqueue to tests, which turned up an 'outqeue' typo.
* Store info in .set_data(). This allows subclasses to write
data-specific information when the data changes.
* .guess_scale() returns Null by default. This tells leastsq to use
its internal scale estimating magic.
* Added strictly positive scale assertion. The error message returned
by leastsq for zero or negative scales isn't very obvious.
W. Trevor King [Tue, 1 Jun 2010 23:19:03 +0000 (19:19 -0400)]
Added hooke.util.fit for easy Levenberg-Marquardt fitting.
W. Trevor King [Tue, 1 Jun 2010 18:29:21 +0000 (14:29 -0400)]
Fix approacing -> approaching typo in cut and curve plugins
W. Trevor King [Tue, 1 Jun 2010 17:40:56 +0000 (13:40 -0400)]
Ran update_copyright.py which updated hooke.util.encoding
W. Trevor King [Tue, 1 Jun 2010 17:39:20 +0000 (13:39 -0400)]
Add wtk driver for W. Trevor King's velocity clamp data format.
Links to the related experiment control and analysis packages are
given in the docstring for hooke.driver.wtk
W. Trevor King [Tue, 1 Jun 2010 17:36:42 +0000 (13:36 -0400)]
Convert update_copyright.py to a more VCS-agnostic version.
This will make it easier for others to grab this code for their own
projects. Currently supported VCSs: Git, Mercurial, Bazaar.
W. Trevor King [Tue, 1 Jun 2010 17:33:24 +0000 (13:33 -0400)]
Use REPORT_UDIFF doctest option in test/curve_info.py
W. Trevor King [Tue, 1 Jun 2010 17:32:43 +0000 (13:32 -0400)]
Cleanups in hooke.driver.picoforce
Scaling adjustment:
* Use 'z piezo gain' in bit->m conversion (is this correct?)
Info field renames for clarity and consistency:
* 'z piezo magnification' -> 'z piezo gain' (is this correct?)
* 'z piezo scale (V/bit)' -> 'z piezo sensitivity (V/bit)'
* 'z piezo scale (V)' -> 'z piezo range (V)'
* 'raw-data' -> 'raw data'
Also:
* Stripped trailing whitespace.
* Comment typo correction 'inzrease' -> 'increase'
W. Trevor King [Tue, 1 Jun 2010 16:50:16 +0000 (12:50 -0400)]
Don't die when flat-filtering curves shorter than blind window.
This will probably only happen if the user uses an absurdly large
blind window by mistake, but that shouldn't crash Hooke.
W. Trevor King [Tue, 1 Jun 2010 15:42:53 +0000 (11:42 -0400)]
Correct relative path generation in hooke.playlist.FilePlaylist.flatten
W. Trevor King [Tue, 1 Jun 2010 14:46:26 +0000 (10:46 -0400)]
Fix /doc/build/ -> ./doc/build/ in update_copyright.py
W. Trevor King [Wed, 19 May 2010 10:51:06 +0000 (06:51 -0400)]
Add another parameter-casting hack.
W. Trevor King [Wed, 19 May 2010 10:50:41 +0000 (06:50 -0400)]
Confirm lack of peaks in test/data/vclamp_picoforce/
W. Trevor King [Wed, 19 May 2010 10:16:27 +0000 (06:16 -0400)]
Use numpy.savetxt (handles multiple columns) rather than ndarray.tofile
W. Trevor King [Wed, 19 May 2010 10:06:57 +0000 (06:06 -0400)]
Add test.flat_filter which has been driving the recent fixups
W. Trevor King [Wed, 19 May 2010 10:05:18 +0000 (06:05 -0400)]
Adjust path (if it exists) for the child playlist in FilterCommand