Plotpy

Latest version: v2.3.3

Safety actively analyzes 638845 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 6 of 8

2.2.0

New features:

* Added scaler module: resize function (using scaler C++ engine to resize images) which is incredibly faster than scipy.misc.imresize
* `guiqwt.io` module was rewritten: new extensible I/O functions `imwrite`/`imread` (see section 'Possible API compatibility issues')
* SelectTool:
* added Undo/Redo actions (triggered by platform's standard key sequences)
* "Select all" action is now triggered by platform's standard key sequence
* Added 'get_segment' test (analog to 'get_point')
* Interactive tools: added argument 'switch_to_default_tool' (if True, when tool action is finished, plot manager will automatically switch to the default tool)
* Added `label.RangeInfo` object: showing XRangeSelection shape informations (x, dx) in a label. See associated method 'range_info_label' in 'builder.make' singleton and unit test in 'tests/computations.py'.
* Snapshot tool: added an option to apply (or not) the interpolation algorithm
* `guiqwt.pyplot`: selecting default item type, hence allowing to use directly tools when there is only one curve/image without having to select it before
* Added new guiqwt svg logo
* Added new dialogs and widgets for manipulating (multiple) images:
* Rotate&Crop dialog, widget and tool (+ test) for TrImageItem plot items
* Flip&Rotate dialog and widget
* `pyplot.imshow`: added interpolation option ('nearest', 'linear', 'antialiasing')
* `io.imagefile_to_array`: added support for 16-bit Tiff with PhotoInterpretation=1
* ResizeDialog: added option "keep original size" to bypass this dialog
* RectangularActionTool: added option 'fix_orientation' (default: False, but set to True for the SnapshotTool)

Possible API compatibility issues:

* `guiqwt.io` module was rewritten -- potential API breaks:
* `imagefile_to_array` --> `imread`
* `array_to_imagefile` --> `imwrite`
* `array_to_dicomfile` --> `imwrite`
* `IMAGE_LOAD_FILTERS` --> `iohandler.load_filters`
* `IMAGE_SAVE_FILTERS` --> `iohandler.save_filters`
* `set_dynamic_range_from_dtype` --> `scale_data_to_dtype`

* Created `guiqwt.widgets` package to regroup ResizeDialog and RotateCropDialog/Widget
* Moved module `guiqwt.fit` to `guiqwt.widgets` package

Bug fixes:

* `guiqwt.geometry` : fixed zero division error in `compute_angle` function
* Fixed minimum value for histogram display
* Fixed Issue 16: use double precision for point baseclass
* Fixed rounding error in image.assemble_imageitems: concerns the snapshot tool, and the new rotate/crop dialog box (Rotate/Crop dialog: added a specific test checking if exported image is exactly identical to the original image when the cropping rectangle has the same size and position as the image below -- see rotatecrop.py test script).
* scaler: linear interpolation was inactive on image edges (first/last col/row)
* ImagePlot widget: fixed aspect ratio when showing the widget for the first time
* Events/Hit test:
* Plot item: fixed AttributeError with cursors (when clicking on the canvas with no current active item)
* Curve item: avoid showing dividing by zero warning
* tools.SnapshotTool:
* now fixing ROI orientation to avoid the negative size issue
* now handling out of memory errors for big images

2.1.6

Other changes:

* guiqwt.pyplot.savefig:
* added support for all image types supported by Qt (JPEG, TIFF, PNG, ...)
* first argument (`fname`) may now be a file-like object (e.g. StringIO)
* guiqwt.baseplot/curve: added stepsize in `set_axis_limits` and removed from `set_axis_ticks`
* guiqwt.image:
* QuadGridItem: allow set_data to update X,Y along with Z
* new item PolygonMapItem: PolygonMapItem is intended to display maps i.e. items containing several hundreds of independent polygons
* guiqwt.builder.make.error: added options 'errorbarwidth', 'errorbarcap', 'errorbarmode' and 'errorbaralpha' (avoid having to tweak the ErrorBarParam to customize these settings)
* guiqwt.pyplot/pydicom: avoid the annoying warning message about the DICOM dictionnary revert
* guiqwt.tools:
* EditItemDataTool: new tool for editing displayed curve/image data using a GUI-based array editor (this feature requires the `spyderlib` library)

Bug fixes:

* ErrorBarCurveItem (error bar curves):
* now handling NaNs uncertainties properly
* handling runtime warnings that could end badly in draw method (example: transforming a zero in log scale)
* Annotations/pickle bugfix: a QString (instead of unicode) was pickled for annotation title, hence leading to compatiblity issues with PyQt API v2
* guiqwt.io.array_to_dicomfile: fixed value representation error for smallest/largest pixel value parameters
* guiqwt.resizedialog.is_edit_valid: fixed compatibility issue with PyQt API v2
* Sift: upgraded deployment script for compatibility with guidata v1.4+
* geometry.colvector: fixed major regression in coordinates calculations (significative impact on TrImageItem related features)

2.1.5

Other changes:

* guiqwt.io: added function 'eliminate_outliers' to cut image levels histogram (previously available only for display)
* baseplot: added method 'copy_to_clipboard' + tools: added CopyToClipboardTool (copy canevas window to clipboard)

2.1.4

Since this version, `guiqwt` is compatible with PyQt4 API 1 *and* API 2.
Please read carefully the coding guidelines which have been recently added to
the documentation.

Bug fixes:

* Sift/bugfix: difference/division operations were performed backwards (s001-s000 instead of s000-s001)
* Sift: working directory is now changed after opening/saving signal/image
* label.RangeComputation: fixed bug if compute function was returning more than one result and when X-range was empty (e.g. selection is outside curve X-axis values)
* curve.CurvePlot: fixed pan/zoom erratic behavior for curves associated with log-scale axes
* baseplot.BasePlot: now performing an autoscale after changing axis lin/log scale (set_axis_scale/set_scales)
* annotations.AnnotatedSegment/CRITICAL: fixed an error (introduced in v2.1.0) when computing segment length (returned length was twice lower than the real value)
* image.XYImageItem (Contributor: Carlos Pascual): fixed bug when Y-axis array is of dimension Ni+1 (where Ni is the number of rows of the image pixel data array)
* Fixed compatiblity issues with PyQt v4.4 (Contributor: Carlos Pascual)
* (minor) Fixed label text (too long) of 2D-Histogram items background color in shown DataSet
* guiqwt.io.array_to_dicomfile/bugfix: Smallest/LargestImagePixelValue fields had wrong type (str instead of int)
* LabelTool: label was not moved as expected (default: now, label is *not* attached to canvas)
* tools.ImageStatsTool/bugfix: image title was not shown
* CurvePlot: autoscale for log scales / bugfix: handling zero values
* tools.AxisScaleTool/bugfix: when updating its status, the tool was setting the axes scales even when not necessary, hence causing an autoscale since changeset 1159 (687e22074f8d)
* ItemCenterTool was not working as expected when centering annotated shapes having a specific transform matrix
* XYImageItem objects: re-added cross-section support (removed accidently)
* Curve autoscale method (curve.CurvePlot/ErrorBarCurvePlot):
* now handles non-finite values (NaNs and infs)
* logarithmic scales: now excludes zero/negative values to avoid confusing the autoscale algorithm

Possible API compatibility issues:

* Moved functions from guiqwt.io to new module guiqwt.qthelpers: exec_image_save_dialog, exec_image_open_dialog, exec_images_open_dialog
* Markers:
* label and constraint callbacks take now 2 arguments (the marker's coordinates) instead of 3
* removed method 'move_point_to': use new method 'set_pos' instead (takes two arguments: x, y)
* Removed cursors introduced in v2.1.0:
* These cursors have been replaced by shapes.Marker (i.e. objects derived from QwtPlotMarker)
* Removed signals.SIG_CURSOR_MOVED, shapes.HorizontalCursor, shapes.VerticalCursor, annotations.AnnotatedHCursor, annotations.AnnotatedVCursor and associated builder methods (annotated_vcursor, annotated_hcursor)
* Builder methods vcursor and hcursor were slightly changed (see tests/cursors.py to adapt your code)
* Use markers instead of cursors (and SIG_MARKER_CHANGED instead of SIG_CURSOR_MOVED -- arguments are not identical, see signals.py):
* base object: shapes.Marker
* associated builder methods: marker, vcursor, hcursor, xcursor (see tests/cursors.py)
* label.LabelItem: renamed method 'set_position' to 'set_pos' (consistency with shapes.PointShape, ...)
* Annotations:
* method `get_center` now returns coordinates *without* applying the transform matrix, i.e. in pure plot coordinates
* the following methods were renamed to highlight the fact that the transform matrix is applied in those computations:
* `get_center` was renamed to `get_tr_center`
* `get_size` was renamed to `get_tr_size`
* `get_angle` was renamed to `get_tr_angle`
* `get_diameter` was renamed to `get_tr_diameter`
* `get_length` was renamed to `get_tr_length`
* Removed the following deprecated classes in `guiqwt.plot`:
* CurvePlotWidget (renamed to CurveWidget)
* CurvePlotDialog (renamed to CurveDialog)
* ImagePlotWidget (renamed to ImageWidget)
* ImagePlotDialog (renamed to ImageDialog)

Other changes:

* Added module qthelpers: image open/save dialog helpers (moved from guiqwt.io to avoid using GUIs in this module)
* Annotation/default style: changed string formatting from '%d' to '%.1f'
* baseplot.BasePlot.add_item: when adding the same item twice, printing a warning message
* Using new guidata.qt PyQt4->PySide transitional package
* Sift: ROI extraction ("Crop"-->"ROI extraction" + added the same feature for signals), added "swap axes" operation for signals/images, added "normalize" processing for signals only
* Sift: added linear calibration (signals: X/Y axes, images: Z axis)
* Interactive tools: added signal SIG_TOOL_JOB_FINISHED emitted when tool has finished its job + if SWITCH_TO_DEFAULT_TOOL class attribute is True, switching to the default interactive tool
* Buider: added cross cursor and marker constructors (builder.make.marker and builder.make.xcursor, see tests/cursors.py)
* Added SignalStatsTool (standard curve tool) to show ymin, ymax, ymean, ... on a selected curve ROI
* Sift: added support for curve data with error bars (I/O + operations + processing)
* Added coding guidelines to the documentation
* builder/make.computation/computation2d: added title option (defaults to object's (curve or image) label)
* plot.CurvePlot, plot.CurveWidget: added keyword arguments 'xunit' and 'yunit' to set axes units (same syntax as labels)
* plot.ImagePlot, plot.ImageWidget: added keyword arguments 'xunit', 'yunit' and 'zunit' to set axes units (same syntax as labels)
* pyplot.imshow: added keyword argument 'mask' to support masked arrays display

2.1.3

Bug fixes:

* tools.RectangularActionTool: removed unnecessary calls to setup_shape_appearance
* tools.ImageStatsTool/CrossSectionTool.setup_shape / bugfix: parent method was not called
* Sift/bugfix: Spyder's internal shell was not parented -- this was causing issues with spyderlib v2.0.11
* Cross section/auto refresh toggle button: do not refresh plot if disabling the auto refresh mode
* (Fixes Issue 14) tools.CommandTool: docstring was translated from french
* (Fixes Issue 13) Fixed precision/string formatting issue: switched from '%f' to '%g' (on-curve labels, ...)

Possible API compatibility issues:

* baseplot.BasePlot.get_selected_items: added argument 'z_sorted' in first position (like in get_items)

Other changes:

* added *this* changelog
* baseplot/plot axes styles: added support for physical unit
* annotations/attached label: added automatic axes unit support
* annotations: added support for measurement relative uncertainty
* fit/Fit param widgets: added suffix label + code cleaning
* guiqwt.io/sift: open/save image dialog code refactoring
* tools.ExportItemDataTool: added support for images
* Added tool ItemCenterTool: center objects (rectangle, ellipse and their annotated counterparts)
* Cross section panel: when a cross section shape has been removed, clearing cross section curve before removing it (notify other panels)
* Cross sections/update_plot: added option 'refresh' (default: True) --> we do not want to refresh the cross section panel systematically after registering a new shape
* Annotations/annotationparam: added 'readonly' and 'private' options (bugfix: these parameters are now pickled correctly for shapes)

2.1.2

Bug fixes:

* 1D Computations: now support error bar curves as well as simple curves
* test_line test: this test should have been excluded from test list + it should be possible to import it without executing it... fixed

Other changes:

* guiqwt.fit: code cleaning / reimplementing FitParam.create_widgets is now supported

Page 6 of 8

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.