- integer dtype images now have integer-aligned bins, with bin number
determined by a target value
- step size is automatically chosen based on a target image size
- bins and step arguments have default values 'auto'
When an ImageItem's data has an integer dtype, this patch ensures that
each bin of the LUT histogram contains the same number of integer
values, in order to avoid "spikes" in the histogram that are merely due
to some bins covering more integer values than others.
This commit needs testing (it was rebased from an old commit).
- Essentially a graphical interface to dict; all items have text and value
- Assigns previously-selected text after list is cleared and repopulated
- Get, set current value
- CSV headers include data names, if available
- Exporter correctly handles items with no data
- pg.plot() avoids creating empty data item
- removed call to reduce() from exporter; not available in python 3
- Gave .name() methods to PlotDataItem, PlotCurveItem, and ScatterPlotItem
* __init__.py now contains latest release version string
* installing from git checkout that does not correspond to a release commit
will result in a more descriptive version string
New Profiler class from Antony Lee:
* Simpler API (with backward compatibility)
* Individual Profilers can be enabled by environmental variable PYQTGRAPHPROFILE
A new function profiling system is implemented. Most importantly, this
allows one to profile various internal functions directly by setting the
`PYQTGRAPHPROFILE` environment variable to a comma separated list of
function and method names, e.g.
PYQTGRAPHPROFILE=functions.makeARGB,ImageItem.render \
python -mexamples
Specifically, items in `PYQTGRAPHPROFILE` must be of the form
`classname.methodname` or `dotted_module_name.functionname`, with the
initial "pyqtgraph." stripped from the dotted module name.
Moreover, the overhead of inactive profilers has been kept minimal: an
introspective check of the caller's name (only if `PYQTGRAPHPROFILE` is
set) and a trivial function (not method) call per profiler call.
The new profilers rely on `sys._getframe` to find the caller's name,
although the previous system (passing the caller's name explicitely)
could certainly have been kept instead.
Finally the API of profilers has been changed: register a
profiling point simply by calling the profiler, and profilers are
automatically flushed on garbage collection. See the docstring of
`pyqtgraph.debug.Profiler` for more details.
The main change is on `ViewBox.getContextMenus`, which now returns an
up-to-date of actions that `GraphicsScene.addParentContextMenus` can use.
Also, `getContextMenus` was given a default implementation in the base
class (falling back on `getMenu` if defined), and some cleanup was done.
- Process now optionally wraps stdout/stderr from child process to
circumvent a python bug
- Added windows error number for port-in-use check
- fixed segv caused by lost QImage input in pyside
* RawImageWidget (and thus OpenGL) isn't imported by default anymore.
* scipy.stats.scoreatpercentile is replaced by numpy.percentile.
This commit has not been tested as the example runner is currently
broken.
- setRange now only affects target range
- updateViewRange only affects view range
- updateMatrix only affects childGroup transform
- updateMatrix is only called before a render
Pathway now looks like:
setRange -> updateViewRange -> matrix dirty -> ...
-> sigRangeChanged
... -> prepareForPaint -> updateAutoRange, updateMatrix if dirty
- GraphicsView.render now correctly invokes GraphicsScene.prepareForPaint
- Fixed RemoteGraphicsView renderer to use new PyQt QImage API.
- multiprocess.Process now pipes stdout/err directly to console when in debugging mode
- ROI updates on sigTransformChanged
- ViewBox is more careful about accepting all auto-range changes up to the point it is disabled, even if the auto-range calculation is deferred.
This requires an API change:
- AxisItem.setScale(float) has the usual behavior
- AxisItem.setScale(None) is no longer allowed. Instead use:
- AxisItem.enableAutoSIPrefix(bool) to enable/disable SI prefix scaling
Also makes the API more intuitive since these features are now accessed and implemented independently.