Releases: hanjinliu/impy
Releases · hanjinliu/impy
v1.25.0
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
inImgArray
for creating soft masks. - CLI support.
Improvements
- Read
.map
file usingmrcfile
. - 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
andbinning
for better performance. - Improve performance using
cupy
. - Lazy loading of
pandas
anddask
. - Update for
napari==0.4.13
Deprecations
- In
LazyImgArray
,img.compute()
should be used in place ofimg.data
because there is no reason to use different name asdask
. - In
LazyImgArray
,img.value
should be used in place ofimg.img
for compatibility withImgArray
.
v1.24.4
Bug Fixes
- Fourier transformation
fft
andifft
returned wrong results if image has axes other than spatial dimensions.
Changes
impy.random
is no longer anRandom
object but now its a submodule. No API change.- New random functions,
random_uint8
andrandom_uint16
, for easier random image generation. - Clearer error handling in
imsave
. - Set
scale_unit
to"px"
if exception happened.
v1.24.3
New Features
- In Fourier transformation methods such as
fft
,power_spectra
andlocal_dft
, you can setdouble_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 betweenlocal_dft
andfft
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 toImgArray
.
Others
- Fixed some typings.
- Add tests of major functions.
v1.24.2
v1.24.1
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 returnsnamedtuple
(AxesShape
) object.- Update table widget etc. for the latest
napari
. - New low-pass filter methods.
- Force
float32
in FFT based filters. - Use
np.memmap
andtempfile
inLazyImgArray
'srelease
andimsave
methods and the performance is largely improved. ScaleDict
support__setitem__
and__setattr__
.- Update typings.
- Removed
label_multiostu
andslic
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
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
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
andregister_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
usesScaleDict
now. You can get scales by such asimg.scale.x
instead ofimg.scale["x"]
.ScaleDict
is also compatible with scale parameter in Affine transformation, so that it can directly passed to them likeviewer.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
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 viaip.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
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 caseCachey
is not installed.apply_dask
had a serious bug such as when multidimensionalhessian_eigval
is called. → fixed.LabeledArray.extract
no longer supportscrop=False
because it is not useful and almost independent ofcrop=True
.- Implementation of
ImgArray.rotate
andImgArray.scale
was wrong. → fixed.
v1.19.0
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
andPoints
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 (changeimg.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 theLabels
layer's properties. add_surface
function to convert 3D images intoSurface
layers.- You can call
__getitem__
in function handler using input like["y=10:40"]
. - You can move shapes with arrow keys → ↑ ← ↓.
- When a
Shapes
orPoints
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 insidenapari
's console if it is started fromstart.py
. LazyImgArray.drift_correction
's graph construction is much faster now by moving variableshift
into the localwarp
function.threshold
's argument is changed:dims
→along
, for compatibility with other functions.local_dft
,local_power_spectra
for fast up-sampling Fourier transformation.opening
function inLabel
.