The version was pushed to 4.0.0 according to Semantic Versioning due to breaking changes in the Java API.
JIPipe 4.0.0 introduces a redesigned user interface, fully automated management of external dependencies, a streamlined
distribution model, and a variety of image processing features.
Upgrade notes
For users
- Your JIPipe user settings (stored in Fiji.app/jipipe) will be automatically moved to a user-wide directory (AppData on
Windows, .local on Linux, Library on macOS). Please let the process finish.
- Due to the reorganization and optimization of application settings, most of your settings will be cleared
- On loading older project, a console may open displaying an error message about missing metadata. This message can be
ignored and happens, because we removed some unused functionality.
For developers
- The packages were renamed and restructured
- Many classes were renamed, especially ones related to UI
New graph editor layout
The layout of the workflow editor in previous versions consisted of:
- A menu bar at the top containing the node categories as menus, a search bar, and various buttons
- A toolbar at the left that gives access to various tools (drawing graph annotations, rewire functions, etc.)
- A sidebar at the right that contains a variety of panels depending on the selection
Over time, the sidebar was filled with more and more items that caused problems with smaller screens and inconvenience
to users that were forced to switch between commonly used categories (e.g., parameters and results).
We decided to completely redesign the workflow editor and re-arrange the existing functions into a more flexible
interface.
Users can now freely toggle panels at four sides (Top left, bottom left, top right, bottom right) by selecting or
deselecting the buttons in the toolbars.
The panels can also be moved to other locations if convenient.
Additionally, you can save the current layout into a template and easily switch between layouts.
There is now only one toolbar above the workflow that contains all the node manipulation, graph annotation drawing, and
workflow tools.
Additionally, important actions related to the selection are displayed after the graph annotation tools.
New “Add nodes” panel
The menu bar, search bar, and old “Add nodes” panel were merged into one interface that combines features of all three
UI components.
Exactly as with the old search bar implementation and the old “Add nodes” panel, you can search through the list of
available nodes.
Additionally, category filters are now present above the search results that allow you to refine the results and browse
through them similar to the old menu.
To create new nodes, items can be dragged from the list into the workflow. Alternatively, items can also be
double-clicked to add the selected node at the +.
The categories can also be right-clicked to open a menu that has the same structure as in older JIPipe versions.
Multiple compartment outputs
Compartments aid in the organization of larger JIPipe projects. They split the workflow in multiple sub-workflows that
are connected with each other via output nodes. This relationship is managed in the Compartments tab.
In previous JIPipe versions, there was only one output node per compartment. Now you can add as many outputs
as you want by clicking the + button.
Third-party artifacts
In previous JIPipe versions, third-party dependencies like Cellpose or R needed to be downloaded manually by the user.
If a dependency was not present, a prompt would appear during the JIPipe startup.
This system was inconvenient to use and made reproducibility hard to achieve, as users were forced to do a fully manual
setup if specific dependency versions needed to be restored.
We implemented a new system of versioned third-party artifacts that are hosted on
the JIPipe website. JIPipe projects now can request
specific artifact versions that are locked in during the creation of the project. When a workflow is executed, JIPipe
automatically downloads and configures all necessary files from the remote repository without the need for manual
intervention. Artifacts are stored inside a user-wide directory (AppData on
Windows, .local on Linux, Library on macOS) and shared between JIPipe instances.
👉 The computer must be connected to the internet to if an artifact is not installed.
👉 By default, JIPipe will avoid artifacts that are designed for GPU processing. To change this, go to Project >
Application settings > General > Artifacts and enable Prefer GPU versions of artifacts
👉 Any old third-party dependencies that were installed by JIPipe 3.0.0 or earlier are automatically deleted on the first
startup
Managing artifacts (project)
JIPipe projects store the exact versions of utilized third-party artifacts. This ensures that the project is
reproducible on other systems. You can change the artifact versions by navigating to Infos & Settings > Settings and
browsing through the project-associated settings of the JIPipe plugin.
Managing artifacts (global)
To browse and manually install/uninstall artifacts, open the artifact manager via the plugins menu
New plugin manager
The JIPipe plugin manager was redesigned to be easier to use. It is now located in the Plugins menu located at the
top right of the JIPipe window.
👉 We removed the management of ImageJ plugins, as this caused a variety of bugs in our plugin manager. Instead, users
are now prompted to manually install ImageJ plugins via the ImageJ Updater, which can be accessed via the Plugins
button. JIPipe won’t apply any ImageJ update site checks anymore during the startup and loading of a project.
Enhanced external parameter setup
The setup of external parameters (i.e. repeating a node for multiple parameter sets) was simplified by simplifying the
parameter editor UI and introducing features that guide users in creating parameter sets.
By right-clicking the workflow and selecting Add parameter sets here …, users can now conveniently create
a Define multiple parameters node for a specified node type.
The editor is now easier to use and clearly labels the functionality.
New/Enhanced nodes
Annotation processing
- Annotate data with image properties: Annotates any data with image properties
Image processing
- Morphological Feature Contrast (MFC) 2D: Implementation of the MFC by Zingman et al. (2014)
- Morphological Texture Contrast (MTC) 2D: Implementation of the MTC by Zingman et al. (2014)
- Alternating Morphological Filters (AMF) 2D: Implementation of the AMF by Zingman et al. (2014)
- Find and track filaments 2D+T (TSOAX): Implementation of TSOAX (per 2D
slice) by Xu et al. 2019
- Find and track filaments 3D+T (TSOAX): Implementation of TSOAX (per 3D
cube) by Xu et al. 2019
- Analyze TSOAX output: Analyzes an existing raw TSOAX output
- Detect line segments 2D (Hough) and Detect global lines 2D (Hough): Hough global lines/line segments detection
based on the algorithm implemented by Octave/Matlab. Further enhanced with an alternative non-maximum suppression
algorithm that may yield better results
- Binarize: Convenient thresholding node that is useful as preprocessing step (all images larger than zero are set
to 255)
- Fast image arithmetics: Expression-based image arithmetics, but fast due to a custom AST implementation. Replaces
the 2D image calculator and the image math operation nodes
- Detect corners 2D (Harris), Orientation vector field 2D (OrientationJ), and Orientation features 2D (
OrientationJ): Integration of OrientationJ features
- Merge RGB channels, Merge HSB channels, and Merge LAB channels: Merges three greyscale images into
RGB/HSB/LAB
ROI processing
- Table to 2D text ROI: Given a table with columns X, Y, Z, C, T, and Text, create text ROIs at the specified
locations
- Table to 2D line ROI: Given a table with the columns X1, X2, Y1, Y2, Z, C, and T, create line ROIs at the
specified locations
- Draw 2D line ROI: Create a 2D line ROI (coordinates of the line are given via parameters)
- Extract 2D ROI profile: Equivalent of ImageJ’s “Extract ROI profile” function (Tip: if you need to calculate more
advanced profiles, convert the ROI to filaments)
- Merge 2D ROI lists (pairwise OR): Goes through all pairs of the input ROIs and merges each pair into one ROI
Filament processing
- Flatten filaments to 2D: Convenient node that sets the Z of each vertex and the Z voxel size to zero (flattens 3D
filaments to 2D)
- Set filament vertex value from image, Remove filament vertex value backups, and Restore filament vertex
value backups: On setting the vertex value, you can store the old value into a backup storage. Values can be deleted
or restored. Backup values are also output into the table output of Measure filament vertices
- Split filaments into cycles, Filament cycles to components, Convert filament cycles to 2D ROI: Implements
graph cycle detection methods
- Set filament vertex metadata to component index: Finds the filament components and stores the index inside the
vertex metadata.
- Find linear filament vertex order/distance: Finds linear filaments (non-cyclic components with two end points),
finds a starting point, and stores information about the path from the start to the end point inside each vertex.
Table processing
- Apply expression to table (columns): Applies an expression to the whole table. Given are the columns as arrays.
- Table column to histogram: Was enhanced with a weight column input
New expression functions
- NAN2D(x, y): Returns x if it is not NaN, otherwise return y
- ROUND_EVEN(x): Returns x if it’s even, otherwise returns x+1
- ROUND_ODD(x): Returns x if it’s odd, otherwise returns x+1
Miscellaneous changes
- The image viewer now defaults to the 2D view, as the current 3D viewer implementation is slow and has many bugs
- Various functions from OpenCV were integrated as nodes (Bilateral filtering, inpainting). All functions are located in
the
jipipe-opencv
plugin
- CLIJ nodes are now capable of handling 5D images. You can change how the image is processed (split into 3D cubes,
split into 2D slices, disable preprocessing)
- Cellpose/Omnipose: third-party artifacts now provide all models to ensure reproducibility
- Cellpose/Omnipose: the model parameter was removed from the node. Instead, you can provide pre-trained models via a
new node Pretrained Cellpose 2.x model. The new node outputs multiple models and thus can be utilized to test
multiple pretrained models.
- Node templates are now stored as files, which makes them less prone to be deleted by accident/bugs
- Backup manager: ability to delete old backups (must be invoked manually)
- Improved speed of the Connect filament vertices algorithms
- You can now save a copy of the current project via Project > Save copy as …
- Temporary files are now stored next to the project in a JIPipe.tmp folder. This will prevent that system-wide
temporary directories are filling the HDD space.
- “ROI” was renamed to “2D ROI” differentiate them clearly from 3D ROI
Bugfixes
- Fixed Cellpose training not passing annotations to output
- Fixed memory leaks caused by group nodes and looped partitions
- Fixed Table to Image ignoring information