News in 7.1.0

User interface

  • Add keyboard shortcut (Shift+P) for opening a viewer for the output port of the currently selected node. If the current node has more than one output port a viewer is opened for each one.

  • The Image viewer now has a Color space dropdown (visible when viewing a 3- or 4-channel image in full-color mode) that converts the image to RGB before display. Supported color spaces are HSV, XYZ, and LAB. For LAB images, Illuminant and Observer options are also available.

Platform

  • Fixed a rare bug where the Reload flow action would ignore nodes or subflows where all input ports were optional and had been removed.

Node Changes

  • Improvements to F(x):

  • F(x) and F(x) List now support configuring a different output type via the Output type parameter, enabling type-transforming use cases where input port and output port are different types (e.g. table to figure).

  • The @fx.decorator used in F(x) and F(x) List scripts no longer requires an argument. It can now be used as @decorator, @decorator(), or @decorator(['<table>']). When no argument is given, the script can be used with any input type.

  • Updated the disk algorithm in Generate Image to allow generating both even and odd pixel dimensions.

  • Improvements to Transform image:

    • Add padding to all the sides i.e (left, right, top, bottom).

    • Add a new transform which grows the image to the given size and places the old image into it according to an alignment parameter i.e (top left, center, top right, bottom left, bottom right etc).

  • Overlay Images and Overlay Images List can now combine images with different channel counts.

  • Deprecate the 2d option in Frequency transform and deprecate not checking the center option. These options will be removed in 9.0.0 and frequencies will then always be centered using fftshift. For 2d transforms Frequency transform Image can be useful.

  • Fixed the No credentials option in Large Language Model API.

API Changes

  • sylib.imageprocessing.image.Image now always normalizes images to three dimensions (height, width, channels) in both set_image() and get_image(). Code that receives images from get_image() can rely on the array always having three dimensions.

  • All port functions in nodeconfig.Port as well as sylib.imageprocessing.image.ImagePort() now accept the n argument to set the min, max and default count of a port.

Installer and python environment

  • Added support for Python 3.13.

  • Update a few packages to support Python 3.13 and to mitigate upstream security vulnerabilities. Updated packages:

    • skorch 1.1.0 -> 1.3.1

    • bokeh 3.7.2 -> 3.8.2

    • cryptography 44.0.2 -> 46.0.5

    • filelock 3.18.0 -> 3.20.3

    • fonttools 4.57.0 -> 4.60.2

    • jaraco-context 6.0.1 -> 6.1.0

    • pillow 11.3.0 -> 12.1.1

    • pyjwt 2.10.1 -> 2.12.0

    • tornado 6.5 -> 6.5.5

    • urllib3 2.5.0 -> 2.6.3

Other Changes

  • New cli command for installing optional dependencies: sympathy install --deps DEP-GROUP. Currently the only two optional dependency groups are torch and opencv. Note that these will also be installed automatically if required by an executing node.