What’s new¶
News in 2.2.0¶
Bug fixes¶
- Exported ADAF files incorrectly expanded the type declaration, causing
problems in stand-alone viewer.
Restored ability to select operator in Filter rows in Table.
Tables, ADAFs: fixed Create Empty Entry, action on import failure.
Removed limitation which prevented loading large syx-files.
MDF importer: fixed case where boolean signals would incorrectly become True when the signal byte contained uninitialized data.
Table(s): Limited problems with the MDB/Access database driver, introduced in Office (Build 13127.20296), from affecting import of other types of data.
Fixed issue which could cause Sympathy to exit after 5 minutes on Windows due to an access violation.
Fixed some unintended behaviors of optional subflow ports, that would result in subflow lacking external ports when linked.
Node changes¶
Figure: added option to invert axes.
Added ability to control error handling to Parallel Map subflows.
API changes:¶
Controller trigger based on port existing or not, see Controllers.
MongoDB nodes¶
MongoDB, Set Collection, Find, Insert, Update, Replace, Bulk write. (Sympathy Enterprise)
News in 2.1.0¶
User interface¶
New option to automatically save all open flows. Can be enabled at Preferences -> General -> Autosave flows.
Backup and restore:
If Sympathy crashes, you will be able to recover the last flow changes!
The Message area (used in Calculators and FilterADAFs) has been improved and is globally configurable:
Configured in Preferences -> Node Configuration -> Node Configuration to be shown, hidden or set to show after first message.
Uses fixed height and shows only one line of text.
Viewers¶
ADAF viewer: Added search for signals in Timeseries view.
Table viewer:
Added configurable, interactive cursors.
Ability to export plotted data or the data between two cursors as a csv file.
Improved icons and tweaked toolbars.
Node changes¶
Figure wizards:
Added support for: Histograms, heatmaps, images, and timelines.
Wizard selection shows up when configuring an empty figure node.
Improved DPI handling in Export Figures:
DPI can now only be set when using a rasterized output format and a physical image size.
All old nodes should still produce the same output as before.
Improved Calculator:
Undo/Redo!
More compact layout showing calculations on a single line to require fewer manual adjustments.
Calculations are available as Results under Signals and Common functions to make them easier to discover and use in other calculations.
Informative feedback when using forbidden = character in calculation name.
Added option to copy input to Lookup Table.
Platform changes¶
Configuration port for subflows. When enabled, it is implicitly connected to all nodes selected in the subflow’s settings.
Added internal index to adaf to speed up computation of names.
Optimized link handling to avoid some unnecessary overhead when propagating input structures to output.
Added APIs¶
equal_to for table and adaf.
Python versions¶
Draft support for Python 3.8.
Windows Installer¶
Installers bundle the content from Visual C++ 2019 Redistributable instead of the executable installer itself to avoid requiring elevated privileges when installing.
Enterprise Edition¶
Moved storage directory under the user folder.
News in 2.0.0¶
New version scheme that will follow semantic versioning. The file structure has been modernized to allow more seamless use and distribution as a python package.
License change¶
Using the same license for all sources. License details can be found in the About Sympathy window.
Installer¶
Install as user by default.
Replaced Sysess directory with Combine.
Replaced Sysess registry key with Combine.
Platform changes¶
Optional subflow ports. See Optional ports.
Support for Spyder, is limited to installations containing spyder and where the editor plugin is installed.
Documentation:
Our installers now comes with documentation prebuilt
Documentation never starts building automatically
Restructured the outline and shorted many headers to provide better overview.
Library documentation organized by tags.
Better separation between generated documentation for standard platform and third-party libraries.
Plugin base classes and implementations can specify a name used in documentation generation instead of the class name.
Files were restructured:
Top-level package sympathy_app no longer exists. It has been renamed sympathy.
Sources are structured as a setuptools project using setup.py.
Packages sympathy and sylib can be installed via setup.py. These can then be imported without requiring sys.path manipulations.
Tests and other files that are not relevant for end users are excluded from installation.
New library format which is built as a python package. See New Library Format. These can be defined and installed as setuptools entry points.
Added new option to remove unused port file when nodes are removed in flows or when flows are closed. On by default.
Removed some dependencies that were only required for development of Sympathy itself and completely optional (unused by Sympathy) otherwise.
Settings moved from Sysess/Sympathy_*.ini to combine/Sympathy.ini. Values are copied from the old location when the new settings file is created.
Library view changes
Disk Layout and FlatTag Layout are no longer available
New option to show all hidden nodes
Fixed bug causing inability to save lock status in flows.
Fixed bug causing changes to environment variables to be lost on save.
Fixed bug causing problems when printing unicode characters in the platform itself on Windows.
Added USERPROFILE to worker environment to fix os.path.expanduser on Windows.
Cleanup of compat code for Python 2: __future__ imports and uses of six.
User interface¶
Documentation:
Online documentation is used if local documentation is unavailable.
Generation is no longer triggered automatically when documentation is missing.
Help menu button to generate documentation has been removed since it was no longer useful. Library developers should use the command-line interface to generate documentation and ensure to make it available to users.
Examples from third-party libraries can be opened from the help menu.
Command line options:
Removed underscores from the command line interface.
–version is now a top level option. -v is no longer used for printing the version.
Top level commands used to run external tools in the Sympathy environment are no longer required and have been removed. That is, spyder, nosetests, coverage, pyflakes, pylint and ipython. These can simply be installed in the same python environment as Sympathy and then run directly.
New top-level command doc, for generating documentation.
Improved performance when pasting many elements in the Flow Window.
Library wizard creates new-style libraries by default.
Library and Flow overview highlight gives more predictable feedback.
New nodes¶
Node/plugin changes:¶
xlsx import plugin has new option to import all sheets.
xlsx export plugin has new option to replace existing sheets which can be used to insert raw data into a template file.
Zip/Tar extractor: fixed issues with output structure.
Examples¶
Added example for updating sheets in xlsx file.
Updated examples for machine learning.
Updated calculator example flows.
Replaced deprecated nodes in example flows.
Removed nodes¶
Plot Table(s)
Copy files with Table
Rename file(s)
Rename file with Table
Matlab Calculator
Export Figures with Datasources
Removed plugins¶
XLS importer (only legacy Excel format, xlsx importer still works as before)
XLS exporter (only legacy Excel format, xlsx exporter still works as before)
DIVA importer
LAA importer
Matlab Calculator plugin
Removed APIs¶
ManagedNode
node_helper.list_node_factory
Added APIs¶
sympathy.api.library, for new-style libraries.
sympathy.api.component, for adding plugins to nodes.
Changed nodes¶
Improved labels in many machine learning nodes.
Layout Figures in Subplots can now take global colorbar and global legend from a configurable parent figure instead of always taking it from the last figure in the list.
Filter List with Table:
Return empty output instead of full output when filter lacks rows.
Fail instead of using first column when filter column is missing
Removed Node parameters¶
Select rows in Table(s):
Use compatible string constraints
Select rows in ADAFs:
Use compatible string constraints
Select rows in Tables with Table
Evaluate values as code
Changed APIs¶
The different fields of a list parameters (list, value and value_names) are now always required to match. Any old list parameters where this is not the case are automatically updated from value_names. For list parameters that use the standard editors, this should not be a problem. For some custom parameter guis might need to be changed to adhere to this rule.
Deprecated APIs¶
node_helper.table_node_factory
node_helper.tables_node_factory
node_helper.adafs_node_factory
node_helper.TableOperation
Python versions¶
Removed support for Python 3.6 and older. We now target 3.7+.
Compatibility with bokeh >= 1.3.
Dropped compatibility with matplotlib < 2.2.0.
Dropped compatibility with scikit-image < 0.14.3.
Dropped compatibility with scikit-learn < 0.20.4.
Currently not compatible with numpy >= 0.18.0.
Compatibility with openpyxl >= 3.0.0, replaces XlsxWriter.
News in 1.6.2¶
License change¶
Changed copyright from SysESS to Combine.
Platform changes¶
Instant warning and notice messages from nodes.
Issue reporting, see Reporting issues.
Collection of anonymous user statistics. See Data Privacy Notice for more details about privacy and data collection in Sympathy.
Fix issues with the histogram plot in table viewer.
Sympathy can now generate file associations and desktop entries on Linux.
Support for spyder, if installed in the same python environment.
Improved performance when working with large number of files.
New options to clean up temporary files when closing flows and the application.
Configuration ports can have any types.
Built in support for creating parameter bindings to configuration ports with table data.
Ability to override temp location using environment variables. See Using environment variables.
User interface¶
You can now close flows by clicking the middle mouse button on the respective tab.
Wizard configuration can now be maximized.
Changed menus for creating and removing ports.
New text editor with search support, used for json and text viewers.
Restructured command line arguments:
Help texts should be more consistent.
New options for generating documentation.
Improved feedback when:
Library package fails to load.
Some types of corrupt flows are loaded.
New context menu option to create library node from subflow.
Node changes¶
Using combo-boxes for choice parameters with single selection.
New simplified wizards for some plot types in figure node.
Improved the ability of Figure Compressor and Layout Figures in Subplots to reproduce their input figures:
Improved getting labels from legends.
Correctly reproduce custom tick labels.
Support for reproducing box plots, rectangles, ellipses, and error bars.
Support for reproducing QuadMesh artist (from matplotlib’s pcolormesh function).
Improved error messages when some features could not be reproduced.
New option for sharing axes in Layout Figures in Subplots.
Figure features:
Add edge color and line width properties to scatter plot.
Fix edit issues on MacOS.
Hiding the labels of a pie chart no longer hides its percentages.
New completions interface.
Fixes in CSV:
Add support for a few more obscure line endings (e.g. r).
Fix regression in handling of incomplete csv-files.
-
Improved performance of local_min/local_max.
Fix a problem with masked values not being treated correctly in local_min/local_max.
Removed unnecessary warnings.
Empty calculations are now allowed and do nothing.
Datasource: Paths can be relative to library directory.
-
Can now paste multiple values.
Always shows float values in C locale.
Export Model: added datasource output.
File Datasources: can search for files, directories or both.
Drop NaN Table: able to choose columns.
Assert Equal Table: can add more ports.
Filter rows in Table: standardized configuration GUI.
Hold value Table: able to choose columns.
Configure JSON Parameters: list choices and editors updated from data.
New nodes¶
Unpivot Table and list version.
Set column names in Table with Table and list version.
List versions of several existing nodes:
Documentation¶
Documentation is built as part of the installation process. This means that documenatation should usually be available directly after installation.
Third-party library documentations can be built separately.
Documentation is now by default built for only the platform and the standard library.
Documentation pages are generated for library subflows. The subflows documentation can be edited in the subflow properties dialog.
Building the documentation places it in <SY_ROOT>/Docs/ by default.
Node documentation pages now start with the node’s description.
A warning is automatically added if a node is deprecated.
Nodes can now have a list of related nodes, which shows up on the node’s documentation page.
A node’s docstring is now used as description if the description field is missing or empty.
Basic node documentation for nodes with optional ports.
Updated documentation for available command line arguments.
API changes¶
More guards against using bad arguments in table and adaf. For example, use of reserved names. Recarrays in place of numpy arrays, etc.
Datetime parameter can set editor display format to show only date and allows fractional second precision.
Expanded names API with another parameter: fields.
Added col_paths as a new kind of names field for accessing data.
Added new completions API.
Python versions¶
Compatibility with Python 3.7.3 in virtualenv.
Compatibility with h5py >=2.10 and dask>=2.
Compatibility with scikit-learn >= 0.19.2.
Compatibility with networkx >= 2.4.
News in 1.6.1¶
Release 1.6.1 is a bug-fix release addressing several bugs present in 1.6.0.
Platform changes¶
Write value and list to the syx file again for ParameterList. This change will have to wait until we have rooted out all nodes that use .value or .list of a list parameter.
Made it possible to open workflow with reference to missing library.
Made it possible to open tabbed subflow configurations containing failed configurations.
Node changes¶
Changes in Figure:
Add property ‘Distance to Axes’ to legend. Use this to tweak the position of the legend when placed outside of the Axes. If the legend is placed inside the Axes this property is ignored.
Avoid rare exception when editing some properties.
Improved default values and editors for Annotations.
Changes in Figure Compressor and Layout Figures in Subplots:
Fixed a bug when copying axes with unsupported elements. Those elements will now simply be ignored.
Fix colorbar handling.
Fixed python 3 incompatibility in Export Model.
Fixed inability to configure and execute Calculator Table(s) if comment contained newlines.
Introduced compatibility option for Select rows in Table(s).
Fixed issues with configuration related to missing list and value in:
Fixed issues with preview/viewer on Windows for:
Fixed issue in JSON to Table.
Fixed use of Fit/Fit Transform with One-Hot Encoder.
News in 1.6.0¶
Gui changes¶
Panning the flow view is now mapped to middle mouse button (scroll wheel click). There are also toolbar buttons for panning/selection.
New icons from Font Awesome in toolbar, menus and context menus.
Color theme based on the standard palette in Windows 10, is used for all OSs.
Changed keyboard shortcuts for Zoom to selection and Zoom fit all.
Flow Overview look and feel similar to that of Library View.
New splash screen on startup of GUI.
Removed redundant groupings in parameter GUIs, this makes some configuration GUIs more compact.
More clear highlight of invalid parameter values, on Windows.
Double click on node executes or does nothing, will never trigger configure.
Plots in Table viewer shows current resampling.
Figure viewer now supports mouse interactions for 3D axes.
Deprecation warnings are on by default. They can be disabled by unchecking Display warnings for deprecated nodes in the Advanced section of Preferences.
Platform changes:¶
Supports Python 3.6+.
Supports PySide 2 (Qt for Python). This results in smoother rendering, various improvements.
Asyncio is used in place of twisted, this will make it easier to install Sympathy on some OSs.
Support for installing Sympathy in a Python virtual env, on Windows.
Improved platform stability, undeterministic process crashes when running and on shutdown caused by PySide do not seem to happen anymore.
Improved structure of menus, with new groupings and consistent ordering.
Windows installer produces different package structure, similar to a wheel install.
Added json parameter type.
Added datetime parameter type.
Added dict port type.
Added Html port type.
Added GeoJSON port type.
Added Table editor for json parameter type.
General preview which can easily be added to nodes.
list_node_decorator replaces list_node_factory.
Reduce size of syx files by not writing descriptions etc for all parameters. Pretty print parameter structures for increased legibility.
Selections can be expanded while holding down Ctrl (Cmd on OSX). Ctrl + click toggles selection of individual nodes.
List parameters with static lists are now automatically updated from their definition.
Automatically fix minor inconsistencies between .value and .value_names during update_parameters. Warn about parameters that are still inconsistent during execute/configure.
Documentation improvements:
New instructions for wheel install, now also for Windows. See Installation.
New instructions for debugging using PyCharm. See Debugging nodes using PyCharm.
Show labels for parameters in node documentation.
Improved documentation about node libraries and their structure.
No longer supported:
Python 2. Python 3.5 and older.
PySide.
Built-in debugging and editing using Spyder.
Built-in benchmark of the platform.
Add maintainer information to library.ini metadata. Useful when maintainer and original author are not the same.
Node copyright notice is now inherited from library.ini metadata if unspecified in the node. Allows less repetition when creating nodes.
Node/plugin changes:¶
Datasource can supply URL to importer nodes.
Support for URL datasource in import nodes and new Download URL to file.
VJoin, Transpose: improved feedback when constructing unsupported columns
Select columns in Table uses new preview feature.
New Figure:
Many different improvements to the configuration gui and to the code.
Allow setting major/minor ticks.
Support for legend outside of axes.
Enabling and disabling individual plots.
Uses new preview.
The node no longer outputs its configuration in the form of a Table.
Improved support for plotting datetimes
Improved documentation.
The old figure node can still be used, but will be deprecated at some point in the near future.
Transpose can set column names even when there are no rows
Consistently using “regex” to refer to regular expressions in node configurations.
Calculator should be able to detect res-dependencies that use other quoting than ‘’.
Improved reading of typed input value:
Mask nodes.
Replace value in Table
Select rows in Table
F(x) can be configured without external file.
New nodes/plugins:¶
Removed nodes:¶
Propagate Input
Repeat Item to List
Elementwise ADAFs to Tables
Filter Image (deprecated)
Deprecated nodes/plugins:¶
Convert specific columns in Table(s)
Copy files with Datasources
Rename file(s)
Rename Files with Table
Jinja2 Template (deprecated)
Plot Table(s)
Export Figures with Datasources
Matlab Calculator
DIVA import plugin
LAA import plugin
API changes:¶
sympathy.api.dtypes includes handling for reading typed values from text input
Deprecated ManagedNode base class.
Removed deprecated methods from table, adaf, table_wrapper and adaf_wrapper.
New (compatible) format for F(x) script, see F(x).
Deprecate support for ${signal0} syntax in calculator plugins.
Deprecate imports() from calculator plugins.
News in 1.5.3¶
Platform changes:¶
Improved behavior of locked subflows:
Child nodes that have finished executing will give feedback immediately instead of after the whole locked flow has completed.
Child nodes that has executed successfully, in memory, will show up in purple color to indicate that their output port data is unavailable.
Output from locked child nodes will be shown like for other nodes, in the Messages view.
Modifying locked flows will no longer reload all nodes.
Showing progress from child nodes.
Locked subflows and lambdas (Apply, Map) will continue executing as much as possible instead of aborting after the first node has failed.
Subflow configuration wizard copes with nodes executed in locked subflows and executes them when needed to ensure that progress can be made.
Toggle-able filter for list parameters with mode selection saves vertical space.
Included brief description of current node state in tooltips.
Documentation improvements:
Links to example flows in the node documentation for many nodes, see Example flows.
Documented how to create custom library tags for third party libraries, see Library tags.
Documented how to create plugins for calculators, importer and exporter nodes, see Plugins.
Improved documentation for Tables with more modern APIs and descriptions of attributes etc.
Windows installer generates links and file associations that ignore local user site - this makes the bundled Python more stand-alone and helps avoid issues in case of package conflicts.
Figure and plotting updates:¶
Figure(s) can now take any sympathy object or lists of object instead of just tables. The configuration output table is now optional and need to be added explicitly to be used. Arguments can now be accessed using “arg” instead of “table” in expressions, eg. arg[‘X’] gives column X if the argument is a table.
Improved the Figure node with new plot types and drawing primitives:
Boxplots calculating and visualizing median, average, quantiles and outliers.
Pie-charts.
Timeline plots for drawing events or states.
Sets of unconnected lines based on starting/ending XY points.
Rectangles and Ellipses.
Text and arrows (annotations) to point out or label parts of data.
Images (using the generic Figure inputs).
Added extended example “Figure Gallery” with 12 plots to show how the new plot types and options can be used.
Added options for drawing error-bars on scatter-plots and bar-plots.
Frames and axes can now toggle visibility and the XY spines of the axes can be drawn at a predetermined XY data coordinate (eg. with the axis through origo), or at a given point on the screen (eg. center).
Fixed bug showing tooltips for plot parameters.
Node/plugin changes:¶
Added error strategies to Get Item List, when the list is empty.
Add different strategies for handling lists of different lengths in Zip Tuple.
Added median filtering to Overlay Images and Overlay Images List
Added Colormap lookup to explicitly create colors from values, useful when creating many figures where exact control of the colors are needed. New color-maps added for discrete categories of objects.
Fixed bug in Image to List missing one of the extracted objects.
Improved Generic Calculator with:
More robust handling of dependencies between calculations.
Compacted layout with a larger portion available for preview. Input signals are shown in in the tree where functions are shown.
Drag and drop of calculations.
Ability to set custom attributes for each calculation.
Error handling for Extract lambda nodes with choice between skip and error.
Match Tables Nodes: support for masked arrays.
Filter ADAFs: will only auto-refresh when it has been enabled.
Adaf(s) to Table(s): shows preview of available signals.
Many nodes have toggle-able filter for their column selection editors.
Dask visualize example: improved detection of Graphviz installation.
Ensure columns in Tables with Table: can create type-dependent zero elements for missing columns.
MDF importer plugin has better support for reading partially unsupported or broken files.
Avoid infinite loop when loading scikit-learn 0.20.
Excel importer plugin copes with date values outside of supported range by assigning masked values.
New nodes/plugins:¶
Rename datasource with Regex: helps to simplify automatically creating new datasource names based on existing file names.
ADAF importer plugin for LabVIEW TDMS files.
Transpose List swaps the outer two layers of a nested list.
Descriptive statistics: calculates simple descriptive statistics for all columns in a table.
API changes:¶
Generalized interface for import and export nodes and their plugins.
Opt-in support for toggle-able filter for single-select parameters with combo box editors.
Public APIs for creating importer and exporter plugins.
Datasource: added getitem. Example use:
datasource['type']
.Table: added setter for name. Example use:
table.name = 'some name'
.New exception: SyColumnTypeError, raised when creating table columns of unsupported type.
News in 1.5.2¶
Platform changes:¶
Fixed problem causing the OK button to be disabled (grey) when configuring subflows containing certain nodes (for example, Interpolate ADAF and Convert Specific Columns in Table using the Wizard or Tabbed dialog.
News in 1.5.1¶
Platform changes:¶
Improved performance overhead of nodes that simply select some columns of the incoming data and pass them to the output.
Significantly reduced file sizes of lambdas on disk.
More careful disconnection of signals to improve stability and performance.
Added option to Unlink linked subflows.
Confirmation dialog when canceling subflow configurations with unsaved changes.
Better feedback and handling of node errors when configuring subflows.
Improved ability to open (somewhat corrupt) flows with duplicate identifiers, instead of failing early.
Cleared up separation between flows linked from library and normal linked subflows.
Disabled automatic documentation generation.
Cleaned up command line options, “-” is used to separate words instead of “_”.
Added Recent libraries, to simplify switching between libraries in use.
Restructured documentation format for Nodes.
New installation instructions for Linux and Mac OS.
Saving warning filter between node executions to avoid interference.
Improved deprecation warnings for nodes, on by default.
Fixed some regressions causing library view not to update.
Node/plugin changes:¶
Improved feedback and validation for many scalar parameters. Incorrect values are displayed in red and the tooltip shows why.
Added progress and current list index, in case of error - to many list nodes.
In some cases, improved performance for Replace values in Table.
Improved documentation regarding handling of unmatched values for Lookup Table.
Select categories in ADAFs now respects the choice made in the combo box for raster selection.
Datasource nodes store UNIX paths in their configuration, but show paths in native format.
MDF Importer, improved performance when importing unsorted files and added option to attempt to read incomplete files without error.
ADAF exporter, improved GUI.
CSV exporter, improved performance.
@ca.changed()@, @ca.changed_up()@, and @ca.changed_down()@ can now all handle masked arrays with scalar masks.
Filtered several expected warnings produced by nodes.
News in 1.5.0¶
Sympathy for Data version 1.5.0 offers several improvements and new features, such as workflows in the library and routing points for connections.
Nodes and flows from 1.3 and 1.4 should for the most part be compatible with 1.5.0.
Platform changes:¶
Markdown is now supported in text fields.
Mark unavailable items in list views.
list views and combobox views can be edited when customized with editor attribute edit=True. This makes it possible to create selections that includes columns that do not exist in the input data or without executing previous nodes.
Shorter tab labels for flows, only showing parent flow names as necessary.
Only nodes that are in the current libraries can be used. Current libraries depend on the configured libraries for the current flow and the global selection from preferences.
Allow subflows to specify custom svg icons.
Route points for connections, see Route points.
0 based indexing is used more consistently, that is, 0 is the index of the first element, etc. This behavior is more consistent with python code.
English/US locale is used regardless of the host language settings.
Generalized text-output port on all nodes.
Flows can be added to library, see Subflows in the Node Library.
API changes:¶
Improved backwards compatibility of ParameterLists during execution.
ParameterLists return copies of its internal state disallowing direct mutation.
Ability to get and set dask arrays in adaf and table APIs. See example nodes: Dask max example, Dask stack example and Dask tail example.
Made getitem, setitem usable as a shorthand way of working with arrays columns in tables. For example table1[‘x’] = table2[‘y’].
Node/plugin changes:¶
Improved masked arrays support in input data to Select rows nodes.
Custom filter predicates in Select rows in Table(s) get normal numpy arrays instead of pandas Series.
Select rows in Table with Table understands literal comparison operators such as ‘==’ or ‘>’ in addition to their old text representations.
HJoin Tables gives consistent names when renaming duplicate columns
Figure allows you to rotate bin labels in bar plots.
New parameter in Select rows with Table(s) turning on/off evaluation of value column. Defaults to no evaluation for new nodes.
New flows:¶
Removed nodes:¶
Many deprecated nodes were removed, see Deprecations.
News in 1.4.5¶
Platform changes:¶
Fixed problem inserting linked subflow.
Minor documentation fixes.
Fixed default editor for list parameters.
Improved backwards compatibility for empty selection in list parameters.
Node/plugin changes:¶
Fixed empty handling of Filter rows in Tables.
News in 1.4.4¶
Platform changes:¶
Add default workflow environment variable SY_PARENT_FLOW_FILEPATH.
Always show empty item in comboboxes when no selection has been made.
Confirmation dialog when canceling node configurations with unsaved changes is no longer experimental and is on by default.
More operations, such as, edit are available for locked subflows.
Locked subflows are now available under Execution Mode.
Limit the number of characters written to Messages window, this improves performance. Default setting of 32000 characters can be changed in Preferences -> Advanced.
Setting to change the behaviour of moving views has been added in Preferences -> General.
Reload library updates nodes that were previously missing in library.
Running nodes can now be deleted.
Improved font and icon rendering on high-dpi Windows 8, 10.
Searchable text fields in Flow overview.
New option to enable/disable window docking in General pane.
Textfields can be manually ordered to choose how they overlap.
New nodes:¶
Update Configuration with Table: updates a node configuration using a table. This can be used to set almost any configuration option programmatically.
Image filtering algorithms have been split from the
Filter Image (deprecated)
into the more specific nodes Edge detection, Corner detection, Morphology (single input), Transform image, Threshold image, Color space conversion, Color range conversion, and Filter image. Additional algorithms have been added to some of these nodes.Cartesian Product Table node creating a table with all combinations of rows in the input tables. Useful for generating XY data for heatmap generation.
Node/plugin changes:¶
ORB feature detection algorithm now also outputs XY coordinates.
Jinja2 template node now give the same context for Python expressions as the calculator node, as far as allowed by the Jinja2 template engine.
Add optional Datasources port to Export Texts.
Allow adding more ports to Concatenate texts.
Fix bug where Copy files would drop extensions if configured with a directory.
ATF importer includes more attributes.
LAA importer, support for autodetection
Importers: better support for opening a large number of sydata files.
Export Tables, ability to control filename using datasource.
Customizable ports for Append List and Bisect List.
Customizable port for Propagate First Input, deprecated
Propagate Input
.Calculator, input port can be removed.
Added support for masked arrays to Replace values in Tables nodes.
Showing progress for Map, Apply and Locked subflows.
Calculator plugins can add their own packages via import statements.
Export Datasources has changed name to Archive files and now supports packing and unpacking of ZIP, GZ, and TAR formats.
Added progress to F(x) nodes, Convert columns nodes and Predicate list nodes.
API changes:¶
New API for accessing worker settings: sympathy.api.nodeconfig.settings.
Improved implementation of
set_list()
and the resultingParameterList
with stricter promises. Parameters are given exactly as before during execute, but some nodes might need to be updated to make configuration work. Overall, this will make working with lists much easier.Allow the options in the combobox editor to be a dictionary with keys and display texts.
Allow choosing the available states (abs/rel/flow etc.) in filename editors.
Improved API for setting parameter editors: They can now be found in
node.editors
(as well as their old location) and.value()
is no longer needed. Default to combobox editor for list parameters without an editor.Two new editors:
synode.editors.multilist_editor
andsynode.editors.textarea_editor
to Editors.Allow passing controllers structure to ParameterGroup.gui() to ensure that it builds with the relevant controllers.
New method: types, added to TypeAlias API.
Added ‘ts’ and ‘rasters’ as new kinds of names from adaf to be used in adjust.
Added
raster
method toadaf.TimeSeries
.
News in 1.4.3¶
Platform changes:¶
Improved handling of labels for linked subflows. Changing the label of a linked subflow only changes the link label. The original source label can be seen in the subflows tooltip. Both labels can be changed individually in the subflow’s properties.
A little plus sign has been added to subflows with overrides.
Fixed a problem with encoding the character sequence ]]> when saving flows.
Using synchronous state machine for more predictable state changes, hoping to avoid random problems with nodes ending up in the wrong state.
Improved performance in some situations by validating fewer nodes.
Added destination folder argument to documentation generation. See Command options.
Fixed Table viewer glob filtering.
Added ability to generate documentation for node plugins.
Preferences changes:¶
Added option to the Advanced pane to clear cached Sympathy files (temporary files and generated documentation). Also an option to clear settings, restoring Sympathy to its orignial state. This may be used for debugging purposes.
Changed the default MATLAB JRE setting to be disabled since it gives a big performance boost in cases when JRE is not used (which would be most of them). For existing installations you will have to change this manully, in the MATLAB pane.
New library layout: Separated tag layout, which uses the same ordering as Tag layout, but separated into libraries.
API changes:¶
Added methods
RasterN.update_basis()
andRasterN.update_signal()
.Improved performance and memory usage when running locked subflows and lambdas.
Standardized ADAF attribute interfaces, based on abc.MutableMapping.
Added include_empty=bool to combobox editors, usable for representing no selection.
Added shallow=bool argument to
TypeAlias.source()
. Custom types need to be updated, adding keyword shallow=False should be enough. Using shallow=True in calls to source can improve performance.
Node/plugin changes:¶
Improved path editors. For example, using the dialog to select a file will result in a path with the same state as was selected before the dialog.
Optionally include index column in output from Pivot Table.
Improved performance in Select columns in ADAFs in some situations.
xls/xlsx importer plugins is better at handling columns with mixed types, especially integers and strings.
xls/xlsx can import tables with missing values. Those positions in the table will be masked.
Replaced Jinja2 template node with a new version accepting generic arguments, allowing for instance lists of tables or ADAFs as input to expression.
Renamed node Either With Data Predicate to Conditional Propagate.
Renamed Select columns in ADAF with Table to Select columns in ADAF with structure Table
Heatmap calculation uses masked arrays instead of nan in its output.
Improvements and bug fixes to the figure nodes.
A Datasource output to Scatter 3D Table has been added.
Options for relative and absolute paths in Datasource to Table and Table to Datasources.
Added support for integers and floating point values in Replace values in Table.
Datasource has had its tabbed inteface replaced with a dropbox.
When using a manual timestep in Interpolate ADAF, the time step is added to the raster’s column attributes.
Manually create Tables can now use ‘nan’ and ‘±inf’ as float values.
The node Select columns by type in Table has been added.
News in 1.4.2¶
Node/plugin changes:¶
Improved performance of Select columns in Table in cases when lots of columns are discarded.
Added the node Periodic Sequence Split Table that can split up a Table into a Tables list where each element holds one periodic event.
Support for creating masked values in Lookup Table and Pivot Table. Pivot node now works with any data type.
Improved performance in all VJoin Tables/ADAFs nodes with a single list input, in the case when the input list contains a single element.
Optimization and new option for HJoin Tables with different number of rows analogous to VJoin Tables.
Optional creation of masked array in Ensure columns in Tables with Table.
Harmonized quoting for CSV importers and exporters.
Chunked MDF writing to improve performance when exporting large Rasters.
Extended VJoin Tables with more options for controlling how to handle missing index.
Machine learning:¶
New machine learning nodes based on scikit-learn. Features include:
Operates on tabular (nummeric) data, texts, or images converted to tables
Supervised learning using Multi-Layer Perceptron Classifier neural networks, Support Vector Classifier, Logistic Regression, Decision Tree Classifier and Random Forest Classifier.
Regression using Linear Regression, Kernel Ridge Regression, and Epsilon Support Vector Regression.
Clustering using K-means Clustering
Exporting/importing trained models, extracting and visualising attributes
Many preprocessing models including nodes such as Normalizer, Robust Scaler, Label Binarizer, Principal Component Analysis (PCA), Polynomial Features.
Combining models in a chain using Pipeline nodes
Creating ensembles from models using Voting Classifier nodes
Hyper parameter search using Grid Parameter Search or simple Randomized Parameter Search.
Various cross-validation schemes
Model metrics such as ROC-curves, Confusion Matrix, or Learning Curve nodes.
See also the machine learning examples from the install path of the Sympathy node library.
Platform:¶
It is now possible to enter a minimum version for a workflow, in flow properties. Bear in mind that this feature is not very useful until it has existed for a few versions.
Possibility to jump from an error message to the node/flow that caused the error.
Some default workflow variables have been removed. Only SY_FLOW_FILEPATH and SY_FLOW_DIR remain.
Lambdas can be configured to show input ports that can be used to perform configuration against data. See Lambda.
Improved performance of the Figure type in some situations.
Redesigned sympathy.api.dtypes, this API should be stable.
Configurable node ports can now be added and removed when the nodes are connected. See Ports.
Made it possible to build GUI:s from group parameters which includes children.
Improved handling of flows and libraries in non-ascii paths.
Reduced the maximum number of worker processes, used by default, to 4.
News in 1.4.1¶
Node/plugin changes:¶
Select columns in Table(s) uses new multiselect editor mode to offer more options when it comes to unknown signals.
Added new Convert columns in Table(s) nodes, old ones were renamed to Convert specific columns in Table(s). New ones use multiselect editor mode to offer more options when it comes to unknown signals.
Added som new nodes for manipulating files: copying, deleting, renaming, and moving files.
Added node for getting table names, Get Table Name.
Added node for creating json, Manually Create JSON.
Added nodes for converting json, Text to JSON and JSON to Text.
Several improvements for Manually Create Table. It now allows you to create masked arrays, floating point numbers with arbitrary precision and more relaxed syntax, and date time columns. It also has a new undo functionality which allows you to undo mistakes while editing a table.
All functions supplied by the Calculator plugin in the standard library can now handle masked array.
Improved performance of Interpolate ADAF(s) when several signals from the same raster are resampled. For a file with 1000 resampled columns the new implementation was about three times faster.
Added option to export just the time basis in Interpolate ADAFs.
Add variable ‘arg’ for Jinja2 template allowing iterating over full table.
F(x) nodes now correctly produce errors for some cases where they previously executed, but ignored the entire source file.
MDF importer handles rasters with a basis and no timeseries.
HJoin ADAFs now has an option to merge rasters with the same name in systems with the same name.
Added option to Sort columns in Table to select sort order.
Generic Calculator nodes have been added, which can take any type as input.
Image processing:¶
New image processing nodes based on scikit-image for automated image analysis, features include:
Images as a new Sympathy datatype with custom image viewers. Support for alpha channel and any number of colour channels.
>50 algorithms for Filter image, Morphological Image Operations or Extract Image Data. Includes edge/corner detection, hough transforms, feature detection, adaptive thresholding, morphology, blob detection, labeling, and many more algorithms.
Extracting Image Statistics and features/lines into Sympathy tables for further processing of results.
Visualization by Draw on Image for displaying identified objects or features. Overlay Images using image layer operations.
Platform:¶
Configurable number of node ports (select nodes). See Using custom port types.
Ability to modify configuration using an optional json configuration port available to any node. See Configuration Port.
New method: ParameterList.selected_names (usable with multiselect editor).
Changes to ParameterEditorListWidget in multiselect: moved selection buttons to context menu. Context menu is always available.
New boolean option: mode, for multiselect editor which adds choice of how to interpret the selection in selected_names.
New api function: nodeconfig.adjust, useful for implementing adjust_parameters.
New typealias method: names, useful for implementing adjust_parameters and as a common way of accessing names of different kind.
Extended output of profiling, with graphs of nodes and flows if Graphviz is available. See Profiling nodes and workflows.
Changed and documented API for creating new types. See Data types.
Improved performance when working lists or tuples of figures.
Improved performance of some operations like reloading and unlinking subflows.
More extensive linking of propagated data that has not been accessed. This greatly improves performance of nodes that operate on the outer container when working with composite elements. For example, Item to List with Random ADAFs as input.
Subflow progress overlay has been improved and stays visible while nodes are executing. Completion of nodes affect the progress meter and Locked subflows and Lambdas are counted as 1 node.
Improved presentation of node errors when running sympathy in CLI mode.
Copying subflows with parameter overrides is more reliable.
News in 1.4.0¶
Sympathy for Data version 1.4.0 offers support for Python 3, improved responsiveness and several new features such a Flow overview window, a popup dialog for adding nodes and an improved library filter with highlighting of matches.
Many small improvements were made to the standard node library, for example, exporter plugins preview the filenames automatically.
Nodes and flows from 1.3.0 should be compatible with 1.4.0.
Node/plugin changes:¶
“Table Search and Replace” has been replaced with Replace values in Table with Table.
Old Matlab nodes have been replaced with new ones, which are using the new MATLAB API.
A bug which prevented all markers being used in the Figure nodes has been resolved.
TimeSync ADAF can now use both integer and float time bases and propagates basis unit.
Filter ADAFs filter column can be selected from a dropdown list instead of being hardcoded.
Workflow examples have been added for (almost) all library nodes.
Improved performance of Interpolate ADAF(s).
Future imports in Calculator and other code input. This changes the meaning of the operator
/
to always mean “true division”. To get floor division use the operator//
. Literal strings will also be interpreted differently. The syntax'text'
will now produce a text object (str
in python 3,unicode
in python 2). Use the syntaxb'binary'
to produce a binary object (bytes
in python 3,str
in python 2).Preview button have been removed and preview handling have been updated for all export/import nodes.
Node Export Texts can now use dynamic file extensions.
Many obsolete nodes have been deprecated and are due for removal in the next major version, 1.5.0. To see if your flows contain any of these nodes, go to File/Preferences/Advanced and check ‘Display a warning when running deprecated nodes’, and run your flows. You can then use the new Flow overview to find these nodes.
TimeSync ADAFs now correctly saves column attributes for the raster column.
Set column attributes in Table(s) can remove attributes.
Icons for all standard library nodes previously missing an icon. Default icon has been updated.
Platform:¶
Support for running Sympathy under Python 3. The platform and nodes from the standard library should work well under Python 3. Third party libraries written for Python 2 will probably need to be upgraded to run on Python 3.
Synchronous task handling based on Twisted instead of ZeroMQ. This should reduce delay when executing and make the GUIs more responsive overall while lowering the load on your system.
Automatic viewer reload when nodes are executed.
Improved handling of node states. For example, if a node produces an error all following nodes will be clearly marked as not executable.
Significant GUI speedups when working with large flows with many subflows.
Improved library view with a new search algorithm which gives better, more focused search results, and an advanced search and search highlighting.
Add nodes by starting a connection and dropping it on an empty part of the flow. This opens a popup which allows to quickly search and insert a new node from the library. The shortcut
Ctrl+Shift+N
also opens the same popup at the current mouse position.Flow overview showing all subflows and nodes, and the ability to search for nodes within flows (including subflows and linked flows). Click a node or subflow to go directly to that node or subflow. See Flow overview for more details.
Button in the data viewer for jumping to a specific row. When data is transposed this will scroll the view horizontally instead of vertically.
Improved layering of nodes so that selected and moved nodes always end up on top.
MATLAB API introduced, with Table-like functions, which is much simpler to use.
The old MATLAB API has been removed.
Flow environment variables are now added by right clicking in a flow, clicking Properties, and then going to the Environment variables tab. This was previously done in Preferences.
Added a small example on how to use environment variables for CLI execution.
Viewers show the node icon and the name indicates which node/port that is shown.
News in 1.3.5¶
Node/plugin changes:¶
Calculations in Calculator can be deselected for output enabling better support for intermediary calculations. This also enables intermediary calculations to have different lengths from output columns.
The input table(s) in Calculator can be easily copied over to the output table(s) with the new Copy Input parameter. Calculations with the same column name override columns from the input table(s).
MATLAB nodes and
Matlab Calculator
have gotten better cross-platform compatibility.Matlab Calculator
has been updated with the same GUI and (almost) the same functionality as Calculator List.Matlab Table and Matlab Tables have gotten a new simplified format. See the documentation for details on how to use that. This format can also be imported and exported in Table and Export Tables respectively. A Table-like API is planned for a future release. The API that currently resides in Sympathy/Matlab will also be deprecated in a later release, in favor of the new format. The old nodes are left for compatibility, so current flows and scripts will still work.
The generic Empty node allows to specify the data type of the output port. The previous, specific, Empty-nodes have been deprecated.
Rename column nodes have more consistent priority rules when more that one column are renamed to the same name.
Extract lambda nodes are more robust with regard to corrupt flows. One corrupt flow should no longer stop the nodes from extracting other lambdas.
New node: Heatmap calculation useful for feeding the heatmap in Figure(s) from Table(s).
New features for heatmaps in Figure(s) from Table(s): logarithmic color scales and Z labels.
Datasource and other nodes where you specify a file path can specify paths relative to its own workflow or the top workflow. This can make a difference when working with linked subflows.
File Datasources GUI is no longer slowed down when searching large folder structures. If the search takes to long it is aborted, and to get the full results the node has to be executed.
The table name used for the output in HJoin Table can now be selected.
Fixes to extract flows as lambdas so that workflow environment variables and flow name are set correctly.
TimeSync ADAFs can now use integer timebases and correctly displays datetimes in the plot.
Assert Equal Table now treats NaNs as equal.
Improved config gui and handling of NaN values, masked values and non-ascii binary data in VSplit Table(s).
A new node has been added HJoin ADAFs pairwise.
When zooming and panning in Plot Table and using datetime as X axis, the current time span in the plot is displayed.
SQL importer plugin can use SQLAlchemy and provide betters autodetection of existing tables.
SQL exporter plugin can use SQLAlchemy.
Improved documentation generation with support for libraries on different drives or on unicode paths.
Platform:¶
Nodes have gotten dynamic port icons that display the actual types.
Color of textfields can now be changed.
A textfields can be moved by dragging on any part of it. It is now edited by double clicking it or by right clicking and choosing “Edit”.
The table viewer and any viewer which uses that component (i.e. ADAF viewer) can now be transposed for better viewing of long column names and tables with few rows but many columns.
Table viewer now supports copying values and/or column names as a table or as text.
The viewer can now show histograms for more types of data.
Allow maximizing subflow configurations.
Linked flows can now be placed on a different drive than their parent flows.
combo_editor for string parameters can now have an empty list of options.
Invalid subflows are more reliably shown as invalid (gray). Now any subflow which looks executable should be executable.
Subflows show an error indicator if they contain any nodes that are not found in the node library. This should make such nodes much easier to find.
Better feedback when trying to open a non-existing or corrupt workflow.
The platform can handle a larger number of linked files without running into the OS limit.
An Advanced tab has been added to Preferences, with one option to limit the number of concurrent nodes that may be executed, and one option to display warnings about deprecated nodes.
New preference option to set number of concurrent worker processes. This may help with performance for heavily branched flows.
Python 3 support for files created with the node and function wizards.
Library wizard can create subdirectories.
Spyder can’t handle files on file paths contaning non-ascii characters, and will fail to start when trying to debug nodes. An error message is now displayed to notify the user of this.
Improved stability of type inference.
File datasources always store absolute paths.
Database datasources can use SQLalchemy in addition to ODBC.
News in 1.3.4¶
Sympathy for Data version 1.3.4 offers improvements to existing nodes, including several new plot types for the figure nodes and overall polish.
Node/plugin changes:¶
Figure nodes have been massively improved with several new plot types (scatter/bar plots/histograms/heatmaps), improved gui, etc
Extended figure export node with plugin exporter structure as for other types and choice of specifying image size in mm and dpi
Reporting Nodes have been improved with rulers in layout window, pdf exporting and auto creation of tree structures
Calculator, allows accessing the input table directly under the name “table” allowing for a way to test if a column exists. The node was also extended with the json module in the execution context
ca.changed now correctly returns empty array for empty input
Added functions ca.global_min and ca.global_max to standard calculator plugin. These handle empty input as you would expect
Interpolate ADAF nodes have improved handling of missing values and resampling of zero-length signals
Datasource and exporter/importer of SQL can use SQLAlchemy
Pad List input can be different types of lists
Predicate nodes have new editors for writing code
VJoin nodes can mask missing values
MDF importer creates MDF_datetime metadata
Assert Equal Table allows approximate comparison of floats
APIs:¶
Made it possible to specify viewer and icon for custom types (TypeAlias). For details, see Data types
Only scanning Libraries for plugins, PYTHONPATH is no longer included
Scalar parameters can use the new combobox editor. See All parameters example for an example
Code parameter editor for string parameters. See Editors for details and All parameters example for an example
Allow Controllers to trigger on user-specified value. For an example of this see Controller example
Implemented
cols()
and added documentation for col/cols and Column class. See Table APIAdded
attrs
property to Table APIExpose dtypes module in sympathy.api
New nodes:¶
Export Figures with Datasources
UI:¶
Improved look and feel of wizards
Library wizard has new examples
Node wizard can select tags
Show filename in flow tab unless flow label has been explicitly set by user. This means that a flow created in 1.3.4 will have no flow label when opened in older versions.
Platform:¶
More robust checks of port types
Masked arrays
Deprecated nodes:¶
Raw Tables nodes
Scatter 3D ADAF
News in 1.3.3¶
Sympathy for Data version 1.3.3 offers improvements to existing nodes, the table viewer and automatic parameter validation when configuring nodes.
GUI:¶
Behaviour change of “?” wildcard in Table viewer search bar to match single character only
General improvements of Table viewer GUI
General improvements of parameter validation
New nodes/plugins:¶
New node: Conditional error/warning
New node: Cartesian product tuple2
Changes in nodes/plugins:¶
Allow unicode characters in Calculator node
Improved default behaviour of Calculator node
Improved rescaling of preview plot in Filter ADAFs node
Improved XLSX export output compatibility
Extract Lambdas can be configured when connected
Improved performance of VSplit Table
Improved bounds checking for calculator functions
shift_seq_start
andshift_seq_end
Improve gui in Manually Create Table. Now allows removing selected rows/columns as well as changing name and datatype of existing columns
Improved handling of bad timebases in interpolation nodes
APIs:¶
Added
value_changed
propagation to parametersMade verify_parameters validate every change to configured parameters, for nodes with generated configurations
Miscellaneous:¶
Fixed update method for tuple type
Data viewer can once again be run stand alone
Updated icons
News in 1.3.2¶
Sympathy for Data version 1.3.2 offers several new and prominent features, such as the ability to specify libraries used by workflows, new window handling which brings open, but minimized, configurations and viewers into focus, a reworked save dialog that properly detects changes in subflows and many improvements to existing nodes.
GUI¶
Raise open Configuration/Settings/Viewer windows on consecutive clicks
Improved save confirmation for workflows
Improvements to the function wizard. Including updating it to work with the new generic F(x) nodes
New features¶
Flows can now specify libraries and python paths in the Info dialog. These are added to the global library/python paths when loading the flow
New error message box for node dialogs for showing validation errors/messages in node configurations
Support for storing masked arrays, but not every node can handle them correctly
New nodes/plugins¶
Figure nodes with support for Tables
New version of Transpose Table(s). These handle multiple rows and columns
Assert Equal Table: for checking if two tables are equal. Mostly useful for testing purposes
Generic F(x) nodes replacing all the previous type-specific f(x) nodes
ATFX importer plugin for ADAF
Set and Get nodes for Table attributes and Table column attributes
Propagate First Input (Same Type). Can be used for constraining type if needed.
Changes in nodes/plugins¶
Renamed Plot to Figure for nodes using the Figure type
Figure Compressor, Layout Figures in Subplots: added auto recolor and auto rescale
Improved datetime handling in Figure nodes
MDF exporter plugin: encode unicode columns instead of ignoring them
Convert columns in Table(s): converts string dates to either UTC or Naive datetimes. Choosing UTC, localized times will be converted to UTC. Choosing naive, the time zone info in the input is simply ignored. Old nodes will automatically use UTC
Improved performance of Select rows in Table(s)
Select rows nodes better handles values without explicit type annotation
Improved error handling in lookup nodes
Calculator plugin: Make sure that result is always correct length in changed_up, changed_down, and shift_array
Filter ADAFs: added parameter validation and error messages. Filter design is computed and shown on parameter changes
Changed the visible name for importer and exporter plugins for ADAF and Table to SyData
Removes matlab settings from Matlab Table,
Matlab Calculator
and put them into global Preferences dialogRenamed calculator nodes to Calculator(s)
CSV Exporter plugin: improved writing of datetime columns
Improve handling of missing units in interpolate nodes
APIs¶
Extended Table API and added
Column
objectChange default value for attribute
'unit'
to always be empty string in ADAFsAdded ParameterView base class for generated and custom GUIs to API. Custom GUIs can override the methods and properties to customize the behavior. Inheriting from ParameterView will be required in the future versions
Miscellaneous¶
Added support for signing the Installer/Uninstaller
Extended searchbar functionality for the Table viewer
Always write generated files in the right directory
Fix overrides not saved in syx files
Non-linked subflows inherit their parents $SY_FLOW_FILEPATH and $SY_FLOW_DIR
Improve performance of type inference
News in 1.3.1¶
Sympathy for Data version 1.3.1 offers several new and prominent features such as an improved data viewer with embedded plot, a new figure datatype and many new nodes as well as improved performance and stability.
New features¶
Improved Data viewer with embedded plotting of signals.
Overhaul of subflow configuration: Split into settings and configuration. Removed grouping. Only allow selecting shallow nodes/flows. Added Wizard configuration mode. Optionally override parameters of linked subflows. Should be somewhat backwards compatible
Added Figure-type. Passes serialized matplotlib figures between nodes
Added tuple-type
Better handling of broken links/nodes missing from library and changed port types due to subflow changes
F(x) function wizard
Allow setting flow name, description, version, author, and copyright information in flow info dialog. Also improved handling of flow labels all around
Expose more environment variables from workflow
New command-line option:
--nocapture
for debugging
New nodes¶
Figure-type nodes: Figure from Table with Table (deprecated), Figure Compressor, Layout Figures in Subplots, Export Figures
Calculator for a single Table added to Library
New Filter ADAFs node with preview plots and improved configuration gui
Signal generator nodes for generating Table(s) of sinus, cosines or tangents
Matlab Tables node
Propagate Input
and Propagate First Input. These can be used to implement some workarounds and for determining execution order in a flowFilter rows in Tables. This is the multiple Table version of existing Filter rows in Table
Tuple nodes
Delete file, which deletes a specified file from the file system
Node changes¶
Allow selection of multiple columns in Unique Table
Allow choosing specific rasters in Select categories in ADAFs
Table attributes are merged for the HJoin nodes
Allow setting fixed width/height for TextBoxes in Report Template
Easier date settings in Plot Table
Rewrote Matlab Tables and
Matlab Calculator
nodes
Exporters/Importers changes¶
ADAF Importer was extended with option to link to imported content
MDF Importer can handle zip-files that include a single MDF-file as input
Gzip Exporter binary writes files correctly
ATF Importer supports a wider range of files
Export tables nodes will now create output folders if necessary
Increased compression for exported sydata-files produces smaller files
Optimizations¶
Faster reading of writing of intermediate files
Faster ADAF copy methods
Improved length handling for tables
Faster execution of Select rows in Table(s)
Faster execution of Table and Select categories in ADAFs
Responsive preview for Calculator List and Calculator
API changes¶
Added MATLAB API for writing scripts executed by the Matlab node
Added update method to Attributes class. (ADAF API)
Added support for placeholder text in lineedit_editor in parameter helper
Added visibility and enable/disable slots to ParameterValueWidget
Bug fixes¶
Fixed name and type of output port of Report Apply nodes
Fixed a bug where save file dialog wouldn’t show up at all when trying to save subflow on Windows, if the subflow label contained some specific unallowed characters
Made sure that aborting a subflow doesn’t also abort nodes outside of the subflow
Fixed a bug where linked subflows were sometimes inserted with absolute path
Stability¶
Improved reliability when working with lambdas, maps and apply nodes
Deprecated nodes¶
Deprecated nodes don’t show up in the library view, but can still be used in workflows.
Type specific versions of list operation nodes (such as Get Item Table and Append ADAF).
Old FilterADAFs node
News in 1.3 series¶
Sympathy for Data version 1.3.0 offers several new and prominent features such as generic types, higher order functions and much improved support for linked subflows.
Many small improvements were made to the standard node library. Nodes will often cope better with empty input data and deliver informative, but less detailed, feedback.
Nodes from 1.2.x should be compatible with 1.3.0 but there are new, more succinct, ways of writing nodes for 1.3.x that are not backwards compatible with 1.2.x. When writing new nodes, consider which older versions of the platform that will be used.
New features¶
Higher order functions: Lambda, Map and Apply
Official, and much improved, support for Linked Subflows
Official support for Locked Subflows
New library structure using tags
New nodes¶
New generic versions of all list operations
Extract Lambdas builtin node for reading lambda functions from existing workflows
User interface¶
Right-click on an empty part of the flow to insert higher order functions.
New command in context menu for inserting a subflow as a link.
Improved file dialogs in node configurations, by using native dialog when asking for an existing directory and starting file dialogs from currently selected file path.
API changes¶
Simpler APIs for writing nodes. See Introduction
New method in ADAF API:
Group.number_of_rows
Configuration widgets can expose a method called save_parameters which is called before the gui is closed. See Custom GUIs
Added API (parameter helper): List parameter widgets emit
valueChanged
signalImproved slicing of (sy)table with slice object with negative or undefined stride
Automatically update order, label, and description for parameters when the node’s definition changes
NodeContext is no longer a named tuple
Added new method:
NodeContext.manage_input()
. A managed input will have its lifetime decided outside of the node
Linked/locked subflows¶
Include subflows relative to path of parent flow, not relative to root flow. This affects where sympathy searches for linked subflows inside linked subflows and should hopefully feel more natural than the old system
Allow opening of flows with broken links
Import and export nodes can now be used inside locked subflows and lambdas
Made it impossible for flows below a locked flow to themselves be locked
Improved abort for locked subflows
Node changes¶
Report framework: histogram2d graph layer is now called heatmap and can handle different reduction functions (count, mean, median, max, min).
Improved XLS(X) import/export. Especially handling of dates, times, and mixed types. Cells formatted as Time are now imported as timedeltas.
Renamed Sort Table(s) to Sort rows in Table(s)
Calculator List: chooses columns case-sensitively on Windows too.
Calculator List: shows number of output rows in preview in calculator gui.
VSplit Table: Removed constraint that the index should be sorted. The elements will be grouped by the first occurrence of each unique value.
Convert columns in Table: Added conversion path between datetime and float.
Select columns in ADAF with structure Table now works as expected when Remove selected has been checked.
Select rows in Table with Table offers a choice of reduction function between rows in config table. Previously it only read first row of the config table.
“Slice List of ADAFs/Tables”: Basic integer indexing now works as expected.
Improve handling of one sample signals in Interpolate ADAF(s)
Report Apply nodes output datasources to created files
Improved CSV import. Can now handle empty input, input with only one row, with or without trailing newline, and files with errors towards the end. It also features a new option for how to handle errors when importing a file. Header row has been made independent of the other input boxes, and no longer affects the data row. When read to end of file is selected, the number of footer rows is ignored. Delimiter detection was improved
Fixed issues with nesting of higher order functions (Map, Lambda and Apply)
Improvements to reporting: Improved bin placement and x-axis extent of 1d histograms. Automatically set axes labels from data source if they are empty. Added option “Lift pen when x decreases” to line graph layer. Added vline layer in reporting tool.
Several nodes are better at forwarding attributes, table names, etc. to output Slice data Table, Select columns in ADAF(s) with structure Table(s), Unique Table(s), ADAF(s) to Table(s), Select rows in Table(s) with Table, Interpolate ADAF(s), and Rename columns nodes
Many nodes are better at handling missing or incomplete input data: Filter rows in Table, Replace values in Tables, Detrend ADAF(s), ADAF(s) to Table(s), Select Report Pages, Scatter nodes.
Added ‘calculation’ attribute on all output columns from Calculator List node
Export Tables and Archive files create missing folders
Fixed Export Texts
Other improvements¶
Added default workflow environment variables
SY_FLOW_FILEPATH
,SY_FLOW_DIR
andSY_FLOW_AUTHOR
. All flows have these and they can’t be set or deleted.Subflows can define workflow variables. Each subflow specializes the variables of its parent flow, so that the parent flows vars are accessible in the subflow but not vice versa.
Improve performance by skipping validation of any nodes that don’t implement
verify_parameters()
Improve performance by changing compression settings for sydata files, compression is faster but compresses slightly less
Pretty print workflow xml files, making diffs possible
New requirements:
Requiring pandas version 0.15 for the CSV import, for versions before 0.15 down to 0.13 it will still work but may behave slightly differently in edge cases with blank rows
News in 1.2 series¶
Sympathy for Data version 1.2 is a significant minor release for Sympathy for Data. It features several prominent new features, improved stability and more. It is however not redesigned and with only a few small modifications, all existing nodes and flows should work as well as in 1.1.
The bundled python installation has been upgraded with new versions of almost every package. Added to the packages is scikit-learn, used for machine learning. Our investigations suggest that the new package versions are reasonably compatible with old nodes and cause no significant differences for the standard library.
New features¶
Added support for using environment variables, and per installation/workflow variables. The variables which can have a default value are used in string fields of configuration widgets to enable parametrization. See Using environment variables.
Added support for profiling, with the ability to produce graphs if Graphviz is available. See Profiling nodes and workflows.
Added support for debugging single nodes with data available from Sympathy using spyder. See Debugging nodes using Spyder.
Added new Node Wizard for generating new nodes. See Creating new nodes.
Added support for configuring subflows by aggregating selected node configurations. See Subflow configuration.
Improved support for plugins in third party libraries. It is no longer necessary to add the folder with the plugin to python path in preferences
Support for adding custom data types in third party libraries. See Data types.
Significantly improved handling of unicode paths including the ability to install Sympathy and third party libraries in a path with unicode characters
Nodes and plugins¶
Added CarMaker type 2 ERG ADAF importer plugin called “CM-ERG”
Plugins can now export to non-ascii filenames
Fixed MDF export of boolean signals
Added generating nodes for empty Table, Tables ADAF and ADAFs.
Convert column nodes can convert to datetime
Calculator node can produce compact output for length matched output
Lookup nodes handles both event column and other columns with datetimes
Time Sync nodes “SynchronizeLSF” strategy should work as expected again. The Vjoin index option is now only used for the ”Sync parts” strategy
New command line options¶
See Command options for more info.
Added new command line option, ‘–generate-documentation’ for generating documentation from CLI
Added ‘exit-after-exception’ argument which is activated by default in CLI. It makes Sympathy exit with error status if an unhandled exception occurs in a signal handler.
Added separate flag: –node-loglevel, for controlling the log output from nodes.
Made it possible to set the number of workers using –num-worker-processes n.
API changes¶
Libraries must now have only a single python package in their Common folders. See Introduction. In the Standard Library this package is called sylib
Removed
has_parameter_view
from node interface. See Custom GUIs.Changed default unit for time series to empty string instead of
'unknown'
.Added
has_column
method in sytable and added corresponding method intable.File
Accessing an ADAF basis which does not exist will raise a KeyError
Improved node error handling, making it possible for nodes to issue user friendly error messages as well as warnings. See Errors and warnings.
Expanded and improved documentation, including API references for all default data types, and documentation on how to create your own data type
Improved error handling in many data type API functions
User interface¶
Improved selection and context menu handling
“Help” in node context menus will now also build documentation if necessary.
Allow connections to be made by dragging from an input to an output port
Added zoom with Ctrl/Cmd + scroll wheel
Added working stop button.
Improved the presentation of data in the viewer with a clearer font and better size handling as well as coloring of columns by data type
Improved undo/redo functionality, making more operations available in the undo history
Stability¶
Avoid hanging on Windows when too much output is produced during startup
Avoid infinite wait during node validation