W. Trevor King [Mon, 19 Nov 2012 11:48:52 +0000 (06:48 -0500)]
Convert from "print ..." to "print(...)"
Also convert "'...' % (...)" to "'...'.format(...)".
These bring us up to date with Python 2.7, and will make future
porting to Python 3 less painful.
W. Trevor King [Mon, 19 Nov 2012 10:18:03 +0000 (05:18 -0500)]
hooke:util:fft: remove in favor of my external FFT-tools package
W. Trevor King [Sun, 18 Nov 2012 20:23:11 +0000 (15:23 -0500)]
Ran update-copyright.py
Changed my drexel address to tremily and added an address for Richard
Naud (both read from .mailmap).
W. Trevor King [Sun, 18 Nov 2012 20:17:53 +0000 (15:17 -0500)]
.update-copyright.conf: update to pipe separators and {project}
This brings the config file up to speed with the following
update-copyright commits:
commit
3c68a1a48419d8b2bbc2ce0e7f1700b996ec30e9
Author: W. Trevor King <wking@tremily.us>
Date: Fri Oct 19 21:52:48 2012 -0400
project: for consistency, also separate ignored paths with pipes
commit
b50d5d2168a07cbbf216e7f556a8fcf316f32545
Author: W. Trevor King <wking@tremily.us>
Date: Thu Oct 25 17:35:11 2012 -0400
project|utils: expand info into kwargs for format().
W. Trevor King [Mon, 20 Aug 2012 18:09:06 +0000 (14:09 -0400)]
Replace hooke.util.igorbinarywave with external igor package.
http://pypi.python.org/pypi/igor
Now that This way we share a more general package instead of rolling
our own.
Most of the changes to the mfp3d driver are due to the fact that the
igor package reads the IBW into a single dict (vs. three dicts for
igorbinarywave), and some of the keys have changed. The dimension
labels have also changed a bit, since ...['wave']['labels'][1] is
['', 'Raw', 'Defl', 'LVDT']
instead of the old
['Raw', 'Defl', 'LVDT']
The blank label is for labeling all the columns. From WaveMetrics'
TN003:
A 3 point 1D wave has 4 dimension labels. The first dimension label
is the label for the dimension as a whole. The next three dimension
labels are the labels for rows 0, 1, and 2.
So the labels are:
['', 'Raw', 'Defl', 'LVDT']
^ ^ ^ ^-- column 2
| | `-- column 1
| `-- column 0
`-- columns as a whole
W. Trevor King [Mon, 20 Aug 2012 17:27:56 +0000 (13:27 -0400)]
Move wxversion.select call to hooke.ui.gui and remove evtmgr import.
This ensures wxversion.select gets called before anyone has a change
to import wx. evtmgr hasn't been used since
commit
bbf2b7eb99e94cf82de4c4160c9fdf8702cd1ba4
Author: W. Trevor King <wking@drexel.edu>
Date: Mon Aug 2 10:56:10 2010 -0400
Updated gui.panel.note and simplified hooke.plugin.note.
W. Trevor King [Mon, 20 Aug 2012 15:13:10 +0000 (11:13 -0400)]
Add `setup.py sdist` side effects to .gitignore.
W. Trevor King [Wed, 18 Apr 2012 17:18:16 +0000 (13:18 -0400)]
Change my email address from drexel.edu to tremily.us.
W. Trevor King [Thu, 8 Mar 2012 16:04:28 +0000 (11:04 -0500)]
Add a `Delete` button to the GUI NavBar, and cleanup deletion callbacks.
The most confusing part of this change is the adjustment to
`Default.txt`. The NavBar was not expanding to display the new button
(which was avialable via a flyout), so I had to manually adjust the
default perspective. Because we load the default perspective after
setting up the GUI, any changes in the code (e.g. setting a reasonable
width) get clobbered later by `Default.txt`. Anyhow, the change I
made to `Default.txt` was to change the toolbar's `bestw` from 100 to 300.
W. Trevor King [Thu, 8 Mar 2012 15:40:54 +0000 (10:40 -0500)]
Use Python AUI implementation (instead of C++) in hooke.ui.gui.
W. Trevor King [Thu, 8 Mar 2012 15:37:23 +0000 (10:37 -0500)]
Cleanup command stack handling in hooke.plugin.polymer_fit.
W. Trevor King [Thu, 8 Mar 2012 15:35:22 +0000 (10:35 -0500)]
Add `peak extraction method` option to `polymer fit` command.
W. Trevor King [Thu, 8 Mar 2012 15:24:03 +0000 (10:24 -0500)]
Make `index` argument optional and return curve in `remove curve from playlist`.
W. Trevor King [Thu, 8 Mar 2012 15:11:46 +0000 (10:11 -0500)]
Add Richard Naud's email address to .update-copyright.conf.
W. Trevor King [Wed, 22 Feb 2012 16:53:47 +0000 (11:53 -0500)]
Update download URL from einstein to tremily.
Also made a few reStructuredText corrections in the README.
W. Trevor King [Fri, 17 Feb 2012 03:10:02 +0000 (22:10 -0500)]
Fix download URL to point to Git source in setup.py.
W. Trevor King [Fri, 17 Feb 2012 03:08:53 +0000 (22:08 -0500)]
Fix hooke.version(4) with missing patch index.
W. Trevor King [Fri, 17 Feb 2012 02:50:28 +0000 (21:50 -0500)]
Respect UTF-8 README in setup.py.
Also make a few minor changes to hooke/__init__.py so I can use
$ python3 setup.py register -r pypi
to push the new metadata to PyPI. Using Python 3 works around
http://bugs.python.org/issue13114.
I also had to explicitly convert classifiers to a list to avoid:
Server response (400): Invalid classifier "<filter object at 0x...>"
W. Trevor King [Fri, 17 Feb 2012 01:57:17 +0000 (20:57 -0500)]
Cleanup reStructuredText in the README.
W. Trevor King [Thu, 16 Feb 2012 23:18:08 +0000 (18:18 -0500)]
Update docs to point to Git repository.
W. Trevor King [Thu, 16 Feb 2012 23:18:08 +0000 (18:18 -0500)]
Rename REAMDE -> README in test/data/vclamp_mfp3d.
W. Trevor King [Thu, 16 Feb 2012 20:02:17 +0000 (15:02 -0500)]
Run update-copyright.py.
W. Trevor King [Thu, 16 Feb 2012 20:00:42 +0000 (15:00 -0500)]
Transition to my external update-copyright package.
http://pypi.python.org/pypi/update-copyright/
W. Trevor King [Sun, 8 Jan 2012 23:44:46 +0000 (18:44 -0500)]
Ran update_copyright.py.
W. Trevor King [Sun, 8 Jan 2012 23:42:09 +0000 (18:42 -0500)]
Simplify ALIASES and add email addresses to AUTHOR_HACKS in update_copyright.py.
Now that we're versioning with Git, we can use .mailmap instead of
ALIASES. The adjustments to AUTHOR_HACKS avoid duplicated entries
(author vs. author and email).
W. Trevor King [Sun, 8 Jan 2012 17:05:13 +0000 (12:05 -0500)]
Add .mailmap to standardize author names and emails for update_copyright.py.
The format of the .mailmap file is described in git-shortlog's man page
under "MAPPING AUTHORS".
W. Trevor King [Sun, 8 Jan 2012 15:57:52 +0000 (10:57 -0500)]
Change VCS from Mercurial to Git in update_copyright.py.
W. Trevor King [Sun, 8 Jan 2012 15:22:47 +0000 (10:22 -0500)]
Convert .hgignore to .gitignore now that I'm versioning with Git.
W. Trevor King [Mon, 14 Nov 2011 21:24:29 +0000 (16:24 -0500)]
Remove debugging *.dat file output from curve plugin.
W. Trevor King [Fri, 11 Nov 2011 15:23:21 +0000 (10:23 -0500)]
Move everything except `GUI` from `hooke.ui.gui` to `hooke.ui.gui.interface`.
This allows Hooke to be used in command line mode without requiring a
suitable wxPython installation.
W. Trevor King [Fri, 11 Nov 2011 15:03:35 +0000 (10:03 -0500)]
Remove nominal wxWidgets 2.8 support.
I was getting
'MouseEvent' object has no attribute 'shiftDown'
when I tried to run the current GUI on wxWidgets 2.8.10.1.
W. Trevor King [Fri, 11 Nov 2011 11:51:47 +0000 (06:51 -0500)]
Expand ~ in the glob path of 'glob curves to playlist'.
W. Trevor King [Fri, 11 Nov 2011 08:01:00 +0000 (03:01 -0500)]
Add 'scaled column addition' command.
Example usage: removing linear drifts with
scaled_column_addition --block retract
--input_column_1 'surface deflection (m)'
--input_column_2 'surface distance (m)'
--output_column 'flattened surface deflection (m)
--scale_1 1 --scale_2 -1
--scale_2_name 'surface deflection offset|non-contact slope'
Also:
* Allow `None` as a column name in ColumnAccessCommand._get_column().
* Add 'force zero non-contact slope' option to SurfaceContactCommand.
* Convert slopes from surface contact fit from deflection/point to
deflection/distance.
* Fix the returned deflection offset so it is a float and not a
length-one tuple (by removing the trailing comma).
W. Trevor King [Fri, 11 Nov 2011 04:17:00 +0000 (23:17 -0500)]
Initial work transitioning to wxWidgets 2.9.
m_shiftDown -> shiftDown in wxWidgets 2.9.0.1 [1]
NamedColor alias for NamedColour removed in in wxWidgets [version?] [2]
[1]: http://www.wxpython.org/recentchanges.php
[2]: http://svn.wxwidgets.org/viewvc/wx/wxPython/trunk/src/gtk/_gdi.py?r1=52881&r2=53838&pathrev=53838
W. Trevor King [Thu, 10 Nov 2011 20:37:47 +0000 (15:37 -0500)]
Temporary fix to hooke/driver/wtk.py now that data_logger is deprecated.
W. Trevor King [Thu, 10 Nov 2011 20:39:12 +0000 (15:39 -0500)]
Use sys.stderr.write instead of the deprecated 'print >>' syntax in the tutorial plugin.
W. Trevor King [Thu, 10 Nov 2011 17:12:56 +0000 (12:12 -0500)]
Adjust NoteIndexList._index in .index() if it falls off the end of the list.
W. Trevor King [Thu, 10 Nov 2011 17:03:39 +0000 (12:03 -0500)]
Call 'remove curve from playlist' when deleting curves via the playlist panel.
W. Trevor King [Thu, 10 Nov 2011 17:01:57 +0000 (12:01 -0500)]
Fix 'remove curve from playlist' implementation.
W. Trevor King [Wed, 9 Nov 2011 20:04:47 +0000 (15:04 -0500)]
Add GUI postprocessing for 'name playlist' so the new playlist shows up immediately.
W. Trevor King [Wed, 9 Nov 2011 20:03:58 +0000 (15:03 -0500)]
Don't delete curve files through the GUI's delete function.
It is enough for them to be removed from the playlist. There is no
need to touch the raw data file itself.
W. Trevor King [Wed, 9 Nov 2011 19:55:10 +0000 (14:55 -0500)]
Standardize playlist path expansion in hooke/playlist.py.
W. Trevor King [Tue, 11 Oct 2011 17:51:45 +0000 (13:51 -0400)]
Add motivational blurb to command_stack docstring.
W. Trevor King [Tue, 11 Oct 2011 17:43:25 +0000 (13:43 -0400)]
Fix citating -> citing typo in doc/analysis.txt.
W. Trevor King [Sun, 15 May 2011 15:52:58 +0000 (11:52 -0400)]
Remove more invalid loop syntax from hooke/plugin/multifit.py.
W. Trevor King [Sun, 15 May 2011 15:32:48 +0000 (11:32 -0400)]
Fix invalid loop syntax in hooke/plugin/multifit.py.
W. Trevor King [Thu, 28 Apr 2011 16:30:10 +0000 (12:30 -0400)]
Adjust fit-parameter handling for the polymer_fit plugin.
This should have happened during
changeset: 820:
b0d23a0bdaf7
branch: wtk
user: W. Trevor King <wking@drexel.edu>
date: Thu Apr 28 07:49:26 2011 -0400
summary: Adapt to handle scipy.optimize.leastsq for scipy >= 0.8.0.
W. Trevor King [Thu, 28 Apr 2011 12:34:14 +0000 (08:34 -0400)]
Clean up and adjust names of commands requiring curve updates in the GUI.
W. Trevor King [Thu, 28 Apr 2011 11:50:59 +0000 (07:50 -0400)]
Ran update_copyright.py.
W. Trevor King [Thu, 28 Apr 2011 11:49:26 +0000 (07:49 -0400)]
Adapt to handle scipy.optimize.leastsq for scipy >= 0.8.0.
For single-parameter fitting, leastsq() used to return the fitted
parameter as a float. Now it returns it as a length-one array. With
this commit, Hooke should work with either case.
W. Trevor King [Thu, 21 Apr 2011 12:12:27 +0000 (08:12 -0400)]
Initial attempt at PicoForce 0x05120005 support.
W. Trevor King [Tue, 19 Apr 2011 20:50:27 +0000 (16:50 -0400)]
Add Mercurial URL to README and use README as long_description,
W. Trevor King [Tue, 14 Dec 2010 21:14:55 +0000 (16:14 -0500)]
Merge Veeco -> Bruker and NumPy/SciPy doc guide patches.
W. Trevor King [Tue, 14 Dec 2010 21:13:36 +0000 (16:13 -0500)]
Update URL for NumPy/SciPy documentation guide.
W. Trevor King [Fri, 19 Nov 2010 18:08:07 +0000 (13:08 -0500)]
Veeco -> Bruker since sale of metrology wing this August.
W. Trevor King [Sat, 13 Nov 2010 13:31:53 +0000 (08:31 -0500)]
Better contact point detection now handles some initial vibrations.
W. Trevor King [Thu, 11 Nov 2010 13:27:15 +0000 (08:27 -0500)]
Actually, filtering the copy directly is *almost* ok.
W. Trevor King [Thu, 11 Nov 2010 13:15:54 +0000 (08:15 -0500)]
Use hooke.command_by_name[...] in hooke.plugin.*.
W. Trevor King [Thu, 11 Nov 2010 13:13:09 +0000 (08:13 -0500)]
Only shallow copy when filtering a playlist.
We should iterate through the base playlist, because iterating over a
playlist that's having items removed is poorly defined. However, if
were iterating through the input playlist and removing items from the
copy, we need a shallow copy so the item ids still match. Curves can
belong to several playlists, so shallow copies are ok.
Another problem with the old version was that the _index was being
updated in the copy, not the current curve, so the
current_curve_callback() bit was *not* working.
W. Trevor King [Thu, 11 Nov 2010 12:11:38 +0000 (07:11 -0500)]
.`_setup_item` -> `._setup_item` in hooke.playlist.Playlist.unload.__doc__.
W. Trevor King [Wed, 10 Nov 2010 18:10:42 +0000 (13:10 -0500)]
Adjust playlist curve setup to load curves after YAML restore.
W. Trevor King [Wed, 10 Nov 2010 17:56:07 +0000 (12:56 -0500)]
Add yaml load test to hooke.curve.Data.
W. Trevor King [Wed, 10 Nov 2010 16:13:32 +0000 (11:13 -0500)]
expanduser() in hooke.playlist.load().
W. Trevor King [Tue, 9 Nov 2010 21:18:06 +0000 (16:18 -0500)]
Don't save digests in the playlist file.
They create dependency loops:
digest_{i+1} = checksum(file with digest_i)
With the old way, exiting after
$ hk.py -c 'new_playlist --output_playlist mylist'
-c 'glob_curves_to_playlist ...*.curve'
-c 'save_playlist --output mylist' -p
would complain of unsaved playlists.
W. Trevor King [Tue, 9 Nov 2010 20:24:47 +0000 (15:24 -0500)]
data_logger.normalize_logdir -> normalize_log_dir with data_logger v0.4.
W. Trevor King [Tue, 9 Nov 2010 20:22:31 +0000 (15:22 -0500)]
Update WTK driver links with git.php -> gitweb.cgi.
W. Trevor King [Tue, 9 Nov 2010 20:05:03 +0000 (15:05 -0500)]
Update test/wtk_driver.py for data_logger version 0.4.
W. Trevor King [Wed, 3 Nov 2010 19:18:18 +0000 (15:18 -0400)]
Don't use questions in the README section headings.
W. Trevor King [Wed, 3 Nov 2010 19:14:48 +0000 (15:14 -0400)]
Fixup reStructuredText in README.
W. Trevor King [Wed, 3 Nov 2010 18:41:49 +0000 (14:41 -0400)]
Explain my Hooke ebuild in doc/install.txt.
W. Trevor King [Wed, 3 Nov 2010 15:37:50 +0000 (11:37 -0400)]
Ran update_copyright.py, updating hooke/ui/gui/dialog/string.py.
W. Trevor King [Wed, 3 Nov 2010 15:36:52 +0000 (11:36 -0400)]
Fix hg.py -> hk.py in setup.py.
W. Trevor King [Thu, 28 Oct 2010 16:43:35 +0000 (12:43 -0400)]
Merged `igorbinarywave.py --not-strict` and playlist expanduser() commits.
W. Trevor King [Thu, 28 Oct 2010 16:39:29 +0000 (12:39 -0400)]
Add -n/--not-strict to igorbinarywave.py (currently for IBW files with non-empty padding).
W. Trevor King [Wed, 29 Sep 2010 16:41:23 +0000 (12:41 -0400)]
Move some playlist-related expanduser() calls from hooke.plugin.* to hooke.playlist and hooke.curve.
W. Trevor King [Wed, 29 Sep 2010 14:27:48 +0000 (10:27 -0400)]
Update hooke.playlist.FilePlaylist doctests for explicit_user_call.
W. Trevor King [Wed, 29 Sep 2010 14:25:40 +0000 (10:25 -0400)]
Update hooke.command_stack.CommandStack doctests for explicit_user_call.
W. Trevor King [Wed, 29 Sep 2010 14:17:07 +0000 (10:17 -0400)]
Cleanups so hooke/ui/gui/ passes unittests.
W. Trevor King [Wed, 29 Sep 2010 14:08:00 +0000 (10:08 -0400)]
Log errors when instantiation fails in hooke.util.pluggable.construct_*().
W. Trevor King [Wed, 29 Sep 2010 13:53:30 +0000 (09:53 -0400)]
Relax doctest constraints on hooke.util.fit.ModelFitter.
I'm not sure of the reason behind the differences, but sometimes the
exit condition varies slightly depending on which test box I use.
W. Trevor King [Wed, 29 Sep 2010 13:47:50 +0000 (09:47 -0400)]
Add os.path.expanduser() wrappers to user-supplied paths.
This allows things like
[gui user interface]
perspective path = ~/.hooke/resources/gui/perspective
to work as expected.
W. Trevor King [Wed, 29 Sep 2010 12:59:25 +0000 (08:59 -0400)]
Zip files use slashes (not os.path.sep) for their path separator (JPK driver).
W. Trevor King [Wed, 29 Sep 2010 11:42:59 +0000 (07:42 -0400)]
Quote backslash-containing arguments in doc/tutorial.py.
W. Trevor King [Wed, 15 Sep 2010 19:22:38 +0000 (15:22 -0400)]
albedomanu -> Manuel Gensler based on an email from the latter.
W. Trevor King [Thu, 9 Sep 2010 12:26:49 +0000 (08:26 -0400)]
Use `with Closing(...) as f:` in JPKDriver._zip_segment().
W. Trevor King [Thu, 9 Sep 2010 12:24:58 +0000 (08:24 -0400)]
Extended test/jpk_driver.py to test .jpk-data1D file reading.
W. Trevor King [Thu, 9 Sep 2010 11:37:03 +0000 (07:37 -0400)]
Extent JPK driver to also read .jpk-data1D-file files.
Also:
* Lowercase most JPK exception messages.
* Decode integer types to floats as specified by 'encoder'.
* Give the path to the old file when suggeesting an `out2jpk-force` upgrade.
W. Trevor King [Wed, 8 Sep 2010 20:22:09 +0000 (16:22 -0400)]
Fix test/jpk_driver.py now that we can load each of the examples.
W. Trevor King [Wed, 8 Sep 2010 20:21:39 +0000 (16:21 -0400)]
Ensure unique segment names in the JPK driver.
W. Trevor King [Wed, 8 Sep 2010 20:13:18 +0000 (16:13 -0400)]
Fix distance_base_unit extraction in JPK driver for encoded data.
W. Trevor King [Wed, 8 Sep 2010 20:09:23 +0000 (16:09 -0400)]
Fix JPK list field splitting for empty lists.
W. Trevor King [Wed, 8 Sep 2010 20:02:24 +0000 (16:02 -0400)]
Only pass curve params out to segments if they exist.
W. Trevor King [Wed, 8 Sep 2010 19:48:22 +0000 (15:48 -0400)]
Skip some param translation in the JPK driver for channel-less segments.
W. Trevor King [Wed, 8 Sep 2010 19:45:20 +0000 (15:45 -0400)]
Improve handling of the base calibration slot units in JPK driver.
W. Trevor King [Wed, 8 Sep 2010 17:59:08 +0000 (13:59 -0400)]
I'm using the 0.12 specs for the JPK driver, so allow version 0.12 files.
The previous range(12) code only went up to version 0.11.
W. Trevor King [Wed, 8 Sep 2010 17:57:56 +0000 (13:57 -0400)]
Adjust unit extraction from the JPK file format.
I've emailed Michael Haggerty to track down the version that made the
change from 'data.unit=' to 'data.unit.unit='. For now, I'm assuming
it's just <= 0.2.
W. Trevor King [Wed, 8 Sep 2010 17:35:23 +0000 (13:35 -0400)]
Add support for raster and constant data to JPK driver.
W. Trevor King [Wed, 8 Sep 2010 17:18:19 +0000 (13:18 -0400)]
Add support for {,u}int{16,32} segments in JPK driver.
TODO: check that these are converted to float32 or similar when
converting from bits to meters. Potentially change from multi-column
Data blocks to lists of single column blocks to allow for different
dtypes in each block.
W. Trevor King [Wed, 8 Sep 2010 14:58:45 +0000 (10:58 -0400)]
Break JPK data block name extraction out into ._zip_segment_name().
Also removes restrictions on allowed names.
W. Trevor King [Wed, 8 Sep 2010 14:54:40 +0000 (10:54 -0400)]
Extract 'z piezo sensitivity (m/V)' from JPK files into Curve.info.
Not particularly important, since we convert from V to m inside the
driver, but it's an interesting property for getting a feel for how a
particular instrument works.