Skip to content

Releases: hanjinliu/impy

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.

v1.19.0

04 Aug 11:13
Compare
Choose a tag to compare

In this release I implemented a lot of new features concerned to napari viewer. Lots of new widgets and key bindings. You can find them in the "Functions" menu in the menu bar.

New Features in Viewer

  • Text editor widget for Shapes and Points layers. You can edit texts of selected shapes/points easily.
  • Parameter sweeping widget for most of the filtering functions, thresholding and labeling.
  • Show image's info by Alt+ right click.
  • You can directly label an image in napari viewer (change img.labels in place).
  • Text layer is available.
  • Rectangle editor is available. You can set rectangle's edge lengths with pixels.
  • Call regionprops in viewer and add the result directly to the Labels layer's properties.
  • add_surface function to convert 3D images into Surface layers.
  • You can call __getitem__ in function handler using input like ["y=10:40"].
  • You can move shapes with arrow keys → ↑ ← ↓.
  • When a Shapes or Points layer is selected, you can focus on the previous/next object by pressing [ or ].
  • Cropping bug is fixed when rectangle is larger than images.

Others

  • You can add images from the disk directly by ip.gui.add(path).
  • Name ip is added in the global namespace by default inside napari's console if it is started from start.py.
  • LazyImgArray.drift_correction's graph construction is much faster now by moving variable shift into the local warp function.
  • threshold's argument is changed: dimsalong, for compatibility with other functions.
  • local_dft, local_power_spectra for fast up-sampling Fourier transformation.
  • opening function in Label.