Skip to content

Releases: hanjinliu/impy

v1.25.1

25 Jan 06:24
Compare
Choose a tag to compare

Improvements

  • Avoid using functions from dask-image for better performance on multi-dimensional images (gaussian_filter and convolve).
  • Performance improvements on binning using GPU.
  • Set depth correctly in LazyImgArray.

v1.25.0

20 Jan 12:16
Compare
Choose a tag to compare

Highlight

  • CLI (command line interface) is supported now. Instead of launching Python, you can just use the terminal. See documentation for the details.
  • Performance of parallel calculation on GPU is largely improved.

New Features

  • ImgArray.imsave now can save .mrc file if file extension is specified.
  • New method smooth_mask in ImgArray for creating soft masks.
  • CLI support.

Improvements

  • Read .map file using mrcfile.
  • Check scale values when any of them is set.
  • Clearer error and caching on axis-targeted slicing.
  • Clearer docstrings of numpy-like functions such as ip.zeros.
  • Make read_meta faster.
  • Do not rechunk in proj and binning for better performance.
  • Improve performance using cupy.
  • Lazy loading of pandas and dask.
  • Update for napari==0.4.13

Deprecations

  • In LazyImgArray, img.compute() should be used in place of img.data because there is no reason to use different name as dask.
  • In LazyImgArray, img.value should be used in place of img.img for compatibility with ImgArray.

v1.24.4

09 Jan 10:21
Compare
Choose a tag to compare

Bug Fixes

  • Fourier transformation fft and ifft returned wrong results if image has axes other than spatial dimensions.

Changes

  • impy.random is no longer an Random object but now its a submodule. No API change.
  • New random functions, random_uint8 and random_uint16, for easier random image generation.
  • Clearer error handling in imsave.
  • Set scale_unit to "px" if exception happened.

v1.24.3

24 Dec 11:29
Compare
Choose a tag to compare

New Features

  • In Fourier transformation methods such as fft, power_spectra and local_dft, you can set double_precision=True to force float64 and complex128 calculation because single precision sometimes causes non-negligible errors.
  • Floating error in local_dft is minimized by considering periodicity of exponential function. The error between local_dft and fft are now completely even.

Bug Fixes

  • lowpass_filter, highpass_filter did not work on such as "tyx" and "zcyx" images.
  • __turediv__ was incompatible with complex images.
  • enhance_contrast was incompatible with float images.
  • LazyImgArray behaved in slightly different ways compared to ImgArray.

Others

  • Fixed some typings.
  • Add tests of major functions.

v1.24.2

28 Nov 02:20
Compare
Choose a tag to compare

Changes

  • Don't change napari because it became incompatible with current version.
  • Bug fix in numpy inherited functions such as ip.empty.
  • Phase cross correlation function with Fourier space input.

v1.24.1

11 Nov 01:31
Compare
Choose a tag to compare

Changes

  • License is changed to BSD 3-Clause.
  • Add reset button in plane clip.
  • The angle axis "<" are all changed to "a".
  • img.shape now returns namedtuple (AxesShape) object.
  • Update table widget etc. for the latest napari.
  • New low-pass filter methods.
  • Force float32 in FFT based filters.
  • Use np.memmap and tempfile in LazyImgArray's release and imsave methods and the performance is largely improved.
  • ScaleDict support __setitem__ and __setattr__.
  • Update typings.
  • Removed label_multiostu and slic methods because they are unstable.
  • Update setup.py for PyPI.

Bug Fixes

  • ifft was not correct.
  • Some correlation functions were not compatible with cupy.

v.1.23.0

05 Sep 09:33
Compare
Choose a tag to compare

In this release I updated for napari==0.4.11 and improved some UI.

New Features

  • Table widget is largely improved.
    • When a data is selected in shapes/points layer, the corresponding table row will be highlighted, both in 2D or 3D mode.
    • When a shapes/points layer is linked to a table widget, manually adding/deleting data in the viewer can at the same time adding/deleting table row(s) in the table.
    • When table items or header names are changed, the properties of linked shapes/points layer will also be changed. Now you can use table widget as property editor.
    • Some shortcuts are deleted because they usually conflict with main window.
  • You can change text layer's text in place with double click.
  • 3D plane clipper is added in "Layer" menu, owing to the clipping plane feature in napari==0.4.11.

v1.22.0

25 Aug 04:32
Compare
Choose a tag to compare

Highlights

  • Image analysis protocols can be easily defined. Decorate a function with ip.gui.bind_protocol, then key bindings and parameter container are updated automatically.
  • Shapes and Points layer can be linked to table widget. You can view/edit layer properties, add/delete data etc. from linked tables.
  • Add points or shapes in a similar way to ImageJ ROI using register_point and register_shape. The layers are linked to the result tables.

New Features

  • Results widget is implemented (similar to Jupyter's variable explorer). ip.gui.results are updated to this widgets but API does not change.
  • Editability of table widget can be changed. Default is not editable now.
  • Layer projection (Ctrl+P) supports labels projection.
  • Many functions that could only be called by key binding are callable from menu bar.
  • Axes.scale uses ScaleDict now. You can get scales by such as img.scale.x instead of img.scale["x"]. ScaleDict is also compatible with scale parameter in Affine transformation, so that it can directly passed to them like viewer.add_image(img, scale=img.scale).
  • "Add time stamp" menu in menu bar.

Improvements

  • Zoom factor changing problem upon key binding "[" and "]" are solved.
  • Highlight warnings and errors in logger.
  • The main figure canvas and parameter container are floating by default.
  • File information in the tooltips of file explorer.
  • "Alt+Up", "Alt+Down" is overloaded to assert z-axis will be changed.

v1.21.0

17 Aug 15:29
Compare
Choose a tag to compare

In this release new widgets are added and existing widgets are improved a lot.

  • Table widget now displays formatted float value, which looks better than the default setting. Also, many functions are implemented.
  • Many improvements in figure canvas. It is now highly interactive and subplots are nicely cooperating.
  • Logger widget. Opened only when ip.gui.bind is called and when logger is accessed via ip.gui.log.
  • Explorer widget. Open in "File" menu or "Ctrl+Shift+E".
  • Text file viewer widget. Added when a txt file is opened in the explorer widget.
  • Layer duplication ("Ctrl+Shift+D") and layer projection ("Ctrl+P") now work for any basic layers. However, they dropped support for the case in which multiple layers are selected.
  • ip.gui.bind now can make custom functions with parameter inputs. It automatically adds a parameter controller widget to the active viewer.
  • ip.gui.bind now has access to the table widget and the log widget in the viewer.
  • ip.gui.goto method makes it easier to change the current slice.
  • LabeledArray now inherit copy (not pointer) of metadata from previous array.
  • Call pandas.read_csv and directly convert it to table.
  • ip.imread_collection can read images from list of paths.
  • Some exception of physical scale in Micromanager 's ome.tiff is now considered in ip.imread.

v1.20.0

09 Aug 10:35
Compare
Choose a tag to compare

The biggest update in v1.20 is ip.gui.bind method. You can make interactive plugins very easily now.

New Features

  • Template Matcher
  • Rectangle editor can edit rotated rectangles.
  • Measure Region Properties.
  • Duplicate single slice.
  • Table widget can plot inside the viewer, just like Excel.
  • Bind custom function with ip.gui.bind.
  • ip.gui.get method enables getting certain type of layer's data very easily.
  • ip.gui.current_slice property enables getting slice from viewer very easily.

Changes and Bug Fixes

  • Focusing markers with [ and ] had a bug. → fixed.
  • Scales were not properly saved by imsave. → fixed.
  • dask.cache is moved into try/except in case Cachey is not installed.
  • apply_dask had a serious bug such as when multidimensional hessian_eigval is called. → fixed.
  • LabeledArray.extract no longer supports crop=False because it is not useful and almost independent of crop=True.
  • Implementation of ImgArray.rotate and ImgArray.scale was wrong. → fixed.