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
W. Trevor King [Wed, 19 May 2010 09:56:26 +0000 (05:56 -0400)]
Apply 'name' argument in plugin.playlist.FilterCommand
W. Trevor King [Wed, 19 May 2010 09:53:18 +0000 (05:53 -0400)]
Fix typo .add -> .append in plugin.playlist.FilterCommand
W. Trevor King [Wed, 19 May 2010 09:52:25 +0000 (05:52 -0400)]
Initialize 'min peaks' from configuration (if required) in convfilt/flatfilt
W. Trevor King [Wed, 19 May 2010 09:41:42 +0000 (05:41 -0400)]
Fix some outstanding argument issues in flatfilt.
Also adjust temporary contact point value in vclamp.scale to ensure
'blind window' fits.
W. Trevor King [Wed, 19 May 2010 09:37:34 +0000 (05:37 -0400)]
Input codec messes with readline.
Disabled in hooke.ui.commandline while I work the kinks out of
flatfilt.
W. Trevor King [Wed, 19 May 2010 08:55:53 +0000 (04:55 -0400)]
Move 'blind window' and 'min peaks' from FlatPeaksCommand to FlatFiltPlugin
W. Trevor King [Wed, 19 May 2010 08:50:39 +0000 (04:50 -0400)]
Success import and better peaks validation in flatfilt and convfilt.
W. Trevor King [Wed, 19 May 2010 08:42:20 +0000 (04:42 -0400)]
array.abs() -> numpy.abolute(array) in hooke.util.peak
W. Trevor King [Wed, 19 May 2010 08:39:32 +0000 (04:39 -0400)]
Removed trailing comma that turned 'median' into a tuple
W. Trevor King [Wed, 19 May 2010 08:39:04 +0000 (04:39 -0400)]
Added default name to hooke.util.peak.mask_to_peaks
W. Trevor King [Wed, 19 May 2010 08:08:42 +0000 (04:08 -0400)]
Fix 'min deviation' -> 'min deviations' typos.
In hooke.util.peak and hooke.plugin.convfilt/flatfilt.
Also:
* Fix "std == data.std" typo in hooke.util.peak.above_noise
* Pass mean and std from noise to above_noise in find_peaks.
W. Trevor King [Wed, 19 May 2010 07:58:47 +0000 (03:58 -0400)]
hooke.util.peak.find_peaks should *not* die on noise nonconvergence
W. Trevor King [Wed, 19 May 2010 07:57:50 +0000 (03:57 -0400)]
Clean up argument handling in hooke.plugin.convfilt/flatfilt.
* Take advantage of hooke.util.peak._kwargs to split out appropriate
kwargs for find_peaks.
* Add missing arguments 'blind window' and 'median window' to
FlatFiltPlugin.
* Fix leftover convfilt code in FlatFiltPlugin._run peak naming.
* Add type casting HACK to FlatFiltPlugin._setup.
W. Trevor King [Wed, 19 May 2010 07:41:37 +0000 (03:41 -0400)]
Added input key flexibility to hooke.util.peak._kwarg
W. Trevor King [Wed, 19 May 2010 07:17:52 +0000 (03:17 -0400)]
Restore plugin setup in hooke.command.Command.__init__
W. Trevor King [Wed, 19 May 2010 07:15:23 +0000 (03:15 -0400)]
Added preliminary hooke.plugin.vclamp.scale (just def. m -> N conversion).
W. Trevor King [Wed, 19 May 2010 06:49:39 +0000 (02:49 -0400)]
Import VelocityClamp in hooke.plugin.flatfilt for ConvolutionPeakCommand._setup
W. Trevor King [Wed, 19 May 2010 06:47:37 +0000 (02:47 -0400)]
Allow negative voltages in hooke.driver.picoforce.PicoForceDriver._translate_block_info
W. Trevor King [Wed, 19 May 2010 06:46:44 +0000 (02:46 -0400)]
Fix self.hooke -> hooke typo in hooke.plugin.flatfilt.FlatFilterCommand.filter
W. Trevor King [Wed, 19 May 2010 06:40:52 +0000 (02:40 -0400)]
Fix broken hooke.plugin.playlist.playlist_name_callback
W. Trevor King [Wed, 19 May 2010 06:40:24 +0000 (02:40 -0400)]
Remove if __name__ == '__main__' section of hooke.hooke
W. Trevor King [Wed, 19 May 2010 06:31:00 +0000 (02:31 -0400)]
Add unicode-capable IO to hooke.ui.commandline.
The previous implementation produced:
$ python bin/hooke -c 'flat_filter_playlist'
...
hooke> Traceback (most recent call last):
...
UnicodeEncodeError: 'ascii' codec can't encode character u'\xec'...
The new encoding detection functions in hooke.util.encoding came from
my libbe.util.encoding module for Bugs Everywhere. From my original
BE commit (Tue 2008-11-25 15:47:19 -0500):
get_encoding() is from Trac
http://trac.edgewall.org/browser/trunk/trac/util/datefmt.py
format_datetime()
Trac has a BSD license
http://trac.edgewall.org/wiki/TracLicense
I don't know if such a small snippet requires us to "reproduce the
above copyright" or where we need to reproduce it if it is needed.
The stdout/stdin replacement code follows
http://wiki.python.org/moin/ShellRedirectionFails
References:
http://wiki.python.org/moin/Unicode
http://www.amk.ca/python/howto/unicode
http://www.python.org/dev/peps/pep-0100/
W. Trevor King [Wed, 19 May 2010 05:11:15 +0000 (01:11 -0400)]
Remove two debugging prints from hooke.ui.commandline
W. Trevor King [Wed, 19 May 2010 05:03:30 +0000 (01:03 -0400)]
Adjust update_copyright hacks to follow plugin.peakspot -> util.peak move
W. Trevor King [Wed, 19 May 2010 04:54:48 +0000 (00:54 -0400)]
Major plugin restructuring.
The restructuring makes major improvements in:
* numpy/scipy utilization (for speed)
* functional encapsulation (breaking long, complicated functions
into easily understood pieces, and sharing those pieces between
related Commands).
Renames:
* generalclamp -> fclamp
* generalvclamp -> vclamp
* generaltccd -> tccd
* peakspot -> hooke.util.peak
Splits:
* flatfilts -> flatfily
`-> convfilt
The config files convfilt.conf and flatfilts.ini were also
internalized into their respective plugins' .default_settings().
W. Trevor King [Wed, 19 May 2010 04:41:11 +0000 (00:41 -0400)]
Remove debugging print command from hooke.util.calculus.derivative
W. Trevor King [Wed, 19 May 2010 04:38:51 +0000 (00:38 -0400)]
Fix a pickling problems with hooke.plugin.playlist.FilterCommand.
Pickle doesn't like functions that aren't defined the top level of
modules (such as NoteFilterCommand's old lambda filter_fn). Add a
warning to that effect to the FilterCommand doc string, and rearrange
to encourage the use of methods (which are less likely to be defined
on the fly than functions).
Also:
* Added pickle queue debugging code to hooke.hooke. This isn't the
first tiem I've had a pickling problem. This code (when enabled),
makes it easier for me to track down the failing code.
* Fix a typo in hooke.hooke.HookeRunner.run (self.ui -> hooke.ui).
* Remove a snip of trailing whitespace in hooke.hooke.
W. Trevor King [Tue, 18 May 2010 16:35:22 +0000 (12:35 -0400)]
Allow extra arguments to NoteIndexList.filter's filter_fn
W. Trevor King [Tue, 18 May 2010 14:50:18 +0000 (10:50 -0400)]
Move argument_to_setting before plugin loading code in hooke.plugin.
Otherwise Python loads the plugins before argument_to_setting has been
defined, which makes it hard for the plugins to use the function ;).
W. Trevor King [Tue, 18 May 2010 14:44:29 +0000 (10:44 -0400)]
Add Numpy crossreferences to hooke.util.fft
W. Trevor King [Tue, 18 May 2010 14:43:20 +0000 (10:43 -0400)]
Introduce intersphinx to Numpy, Scipy, and Matplotlib
W. Trevor King [Tue, 18 May 2010 12:59:16 +0000 (08:59 -0400)]
Add hooke.plugin.argument_to_setting to convert Arguments -> Settings.
This will make it easy for Plugins to generate Settings matching
Command Arguments.
W. Trevor King [Tue, 18 May 2010 12:54:38 +0000 (08:54 -0400)]
Actually, pass plugin instance to Command.__init__.
Rather than using Plugin._setup_commands, because the commands may
wish to use some aspects of the Plugin during initialization (e.g. to
build argument lists from plugin settings). The previous
implemetation gave the commands no way to respond to the attached
plugin instance.
W. Trevor King [Tue, 18 May 2010 11:34:02 +0000 (07:34 -0400)]
Rework Plugin.commands() to include _setup_commands().
The previous implementation gave Commands no way to access the
Plugin's configuration.
W. Trevor King [Tue, 18 May 2010 02:04:06 +0000 (22:04 -0400)]
Fix syntax errors in hooke.plugin.curve
W. Trevor King [Tue, 18 May 2010 01:58:57 +0000 (21:58 -0400)]
Finish translating the hooke.plugin.curve Commands from procplots.
W. Trevor King [Mon, 17 May 2010 22:38:33 +0000 (18:38 -0400)]
Converted hooke.util.fft to Hooke coding style.
* Add numpydoc docstrings (to most functions)
* Converted hackish test suites to hackish `unittest.TestCase`s.
Still ugly, but now `nosetests` finds them.
They should really use .assertAlmostEqual and company...
* Added neccessary function definitions to doc/conf.py for the
'math' sections of fft's docstrings.
W. Trevor King [Mon, 17 May 2010 20:27:20 +0000 (16:27 -0400)]
Add intersphinx_mapping to doc/conf.py
This tell's intersphinx where to find documentation for other
projects. Currently we've only told it about the standard Python
libraries.
http://sphinx.pocoo.org/latest/ext/intersphinx.html#confval-intersphinx_mapping
W. Trevor King [Mon, 17 May 2010 20:18:46 +0000 (16:18 -0400)]
Add Sphinx extensions sphinx.ext.intersphinx sphinx.ext.pngmath.
* intersphinx allows documentation linking between known Sphinx packages.
http://sphinx.pocoo.org/ext/intersphinx.html
* pngmath allows LaTeX inclusion via the math directive
http://sphinx.pocoo.org/ext/math.html
Also reorder extension list following:
sphinx.* alphabetically
everything else aphabetically
W. Trevor King [Mon, 17 May 2010 19:45:20 +0000 (15:45 -0400)]
Ran ./update_copyright.py to setup copyrights in caclulus and fft.
Also corrects a name typo in th picoforce copyright. Sometimes I miss
keystrokes and Emacs starts running aspell without me noticing :p.
W. Trevor King [Mon, 17 May 2010 19:38:31 +0000 (15:38 -0400)]
Adjusted hooke.util.calculus.derivative.__doc__ so Sphinx doesn't die.
W. Trevor King [Mon, 17 May 2010 19:08:29 +0000 (15:08 -0400)]
Merged my unitary FFT wrappers (FFT_tools) as hooke.util.fft.
Origininally versioned in Git and licensed under BSD, but I wrote
them, so I'm relicensing under the LGPL for Hooke.
The original git repository was:
http://www.physics.drexel.edu/~wking/code/git/FFT_tools.git/
W. Trevor King [Mon, 17 May 2010 19:05:09 +0000 (15:05 -0400)]
Relicensed FFT_tools.py under Hooke's LGPL
W. Trevor King [Mon, 17 May 2010 18:40:02 +0000 (14:40 -0400)]
Merged hooke.plugin.plotmanip into hooke.plugin.curve.
Also:
* Fixed a number of typos in hooke.plugin.curve.
* Rewrote derivative code for Numpy in
hooke.util.calculus.derivative.
* Removed FFT code (I'm replacing it with my FFT_tools module
shortly).
* Moved v-clamp-specific code into generalvclamp.
* Moved plotmanips to hooke.plugin.plotmanip holding area.
W. Trevor King [Mon, 17 May 2010 14:33:03 +0000 (10:33 -0400)]
Remove leftover curve.InfoCommand cruft from ExportCommand.__init__.
W. Trevor King [Mon, 17 May 2010 14:29:41 +0000 (10:29 -0400)]
Moving hooke.plugin.procplots to .curve in preparation for merge
W. Trevor King [Mon, 17 May 2010 13:18:28 +0000 (09:18 -0400)]
Started translating hooke.plugin.multifit to new Plugin/Command architecture.
W. Trevor King [Mon, 17 May 2010 12:30:20 +0000 (08:30 -0400)]
Add REAMDE and playlist.hkp for Hemingway force clamp curves.
W. Trevor King [Mon, 17 May 2010 12:29:40 +0000 (08:29 -0400)]
Added sample Hemingway force-clamp curves
W. Trevor King [Mon, 17 May 2010 12:28:43 +0000 (08:28 -0400)]
Moved test/data/titin to more descriptive test/data/vclamp_picoforce
W. Trevor King [Mon, 17 May 2010 12:18:28 +0000 (08:18 -0400)]
Add REAMDE and playlist.hkp for titin I-27 curves.
W. Trevor King [Mon, 17 May 2010 12:17:46 +0000 (08:17 -0400)]
Added 100 sample velocity-clamp curves for titin I-27
W. Trevor King [Mon, 17 May 2010 12:02:21 +0000 (08:02 -0400)]
Fix rief1997 footnote in hooke.experiment.VelocityClamp
W. Trevor King [Mon, 17 May 2010 12:00:36 +0000 (08:00 -0400)]
Updated hooke.driver.picoforce to new Driver class.
This is a fairly major rewrite of the previous PicoForce driver. I've
cleaned up header parsing and tried to break trace -> block conversion
up into compact functions. The meaning of many PicoForce file
constants is still unclear to me though, so I may have gotten some
things wrong.
Also:
* Added references for each hooke.experiment.Experiment subclass.
* TutorialDriver sets curve.info['experiment'] to an Experiment subclass.
* An adjusted test.curve_info now passes.
While we're translating the old experiment strings to the new
Experiment classes, the following conversion table may be useful:
'clamp' -> ForceClamp
'smfs' -> VelocityClamp
'smfluo' -> TwoColorCoincidenceDetection