.. This file is part of Sympathy for Data. .. Copyright (c) 2010-2017 Combine Control Systems AB .. .. Sympathy for Data is free software: you can redistribute it and/or modify .. it under the terms of the GNU General Public License as published by .. the Free Software Foundation, version 3 of the License. .. .. Sympathy for Data is distributed in the hope that it will be useful, .. but WITHOUT ANY WARRANTY; without even the implied warranty of .. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .. GNU General Public License for more details. .. .. You should have received a copy of the GNU General Public License .. along with Sympathy for Data. If not, see . What's new ========== 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 :ref:`node_config_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. New nodes ^^^^^^^^^ * :ref:`org.sysess.sympathy.adaf.renamecolumntable` * :ref:`org.sysess.sympathy.data.adaf.assertequaladaf` 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 :ref:`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 :ref:`subflow_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 :ref:`new_library`. 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 ^^^^^^^^^ * :ref:`org.sysess.sympathy.getcolumnnamesintable` * :ref:`org.sysess.sympathy.list.grouplist` 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. * :ref:`org.sysess.sympathy.visualize.figuresubplot` 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 :ref:`issues`. * Collection of anonymous user statistics. See :ref:`privacynotice` 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 :ref:`env_vars`. 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 :ref:`org.sysess.sympathy.visualize.figurecompressorgui` and :ref:`org.sysess.sympathy.visualize.figuresubplot` 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 :ref:`org.sysess.sympathy.visualize.figuresubplot`. * :ref:`org.sysess.sympathy.visualize.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 :ref:`plugin_tabledataimporterbase.dataimportcsv`: * Add support for a few more obscure line endings (e.g. \r). * Fix regression in handling of incomplete csv-files. * :ref:`org.sysess.sympathy.data.table.calculatorgeneric`: * 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. * :ref:`org.sysess.sympathy.datasources.filedatasource`: Paths can be relative to library directory. * :ref:`org.sysess.sympathy.create.createtable`: * Can now paste multiple values. * Always shows float values in C locale. * :ref:`org.sysess.sympathy.machinelearning.export`: added datasource output. * :ref:`org.sysess.sympathy.datasources.filedatasourcemultiple`: can search for files, directories or both. * :ref:`org.sysess.sympathy.data.table.dropnantable`: able to choose columns. * :ref:`org.sysess.sympathy.data.table.assertequaltable`: can add more ports. * :ref:`org.sysess.sympathy.filters.columnfilternode`: standardized configuration GUI. * :ref:`org.sysess.sympathy.data.table.holdvaluetable`: able to choose columns. * :ref:`org.sysess.sympathy.create.configureparameters`: list choices and editors updated from data. New nodes ^^^^^^^^^ * :ref:`org.sysess.sympathy.texts.splittext` * :ref:`org.sysess.sympathy.data.table.unpivottablenode` and list version. * :ref:`org.sysess.sympathy.setcolumnnamesintablewithtable` and list version. * List versions of several existing nodes: * :ref:`org.sysess.sympathy.json.jsonstolists` * :ref:`org.sysess.sympathy.json.jsonstodicts` * :ref:`org.sysess.sympathy.data.text.tables2texts` * :ref:`org.sysess.sympathy.convert.textstojsons` * :ref:`org.sysess.sympathy.texts.concatenatetextslist` 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 /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 :ref:`org.sysess.sympathy.visualize.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 :ref:`org.sysess.sympathy.visualize.figurecompressorgui` and :ref:`org.sysess.sympathy.visualize.figuresubplot`: * Fixed a bug when copying axes with unsupported elements. Those elements will now simply be ignored. * Fix colorbar handling. * Fixed python 3 incompatibility in :ref:`org.sysess.sympathy.machinelearning.export`. * Fixed inability to configure and execute Calculator Table(s) if comment contained newlines. * Introduced compatibility option for :ref:`Select rows in Table(s)`. * Fixed issues with configuration related to missing list and value in: * :ref:`org.sysess.sympathy.data.table.indextable` * :ref:`org.sysess.sympathy.data.adaf.adaf2table` * :ref:`org.sysess.sympathy.list.filterlisttable` * Fixed issues with preview/viewer on Windows for: * :ref:`org.sysess.sympathy.html.report` * :ref:`org.sysess.sympathy.html.dicttogeojson` * Fixed issue in :ref:`org.sysess.sympathy.data.json.jsontotable`. * Fixed use of Fit/Fit Transform with :ref:`org.sysess.sympathy.machinelearning.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 :ref:`installation`. * New instructions for debugging using PyCharm. See :ref:`pycharm_debug`. * 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 :ref:`org.sysess.sympathy.files.downloadfile`. * VJoin, Transpose: improved feedback when constructing unsupported columns * Select columns in Table uses new preview feature. * New :ref:`org.sysess.sympathy.visualize.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 * :ref:`F(x)` can be configured without external file. New nodes/plugins: ^^^^^^^^^^^^^^^^^^ * :ref:`org.sysess.sympathy.html.report` * :ref:`org.sysess.sympathy.html.dicttogeojson` * :ref:`org.sysess.sympathy.html.htmltotext` * :ref:`org.sysess.sympathy.datasources.renames` * :ref:`org.sysess.sympathy.files.downloadfile` * :ref:`org.sysess.sympathy.data.json.selectkeyjson` * :ref:`org.sysess.sympathy.data.json.removekeyjson` * :ref:`org.sysess.sympathy.data.json.splitonkeyjson` * :ref:`org.sysess.sympathy.dict.insert` * :ref:`org.sysess.sympathy.dict.update` * :ref:`org.sysess.sympathy.dict.getitem` * :ref:`org.sysess.sympathy.dict.fromitems` * :ref:`org.sysess.sympathy.dict.values` * :ref:`org.sysess.sympathy.dict.keys` * :ref:`org.sysess.sympathy.dict.items` * :ref:`org.sysess.sympathy.json.jsontodict` * :ref:`org.sysess.sympathy.json.dicttojson` * :ref:`org.sysess.sympathy.json.jsontolist` * :ref:`org.sysess.sympathy.json.listtojson` 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 :ref:`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 :ref:`example_flows`. * Documented how to create custom library tags for third party libraries, see :ref:`library_tags`. * Documented how to create plugins for calculators, importer and exporter nodes, see :ref:`pluginwriting`. * 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 :ref:`org.sysess.sympathy.list.getitemlist`, when the list is empty. * Add different strategies for handling lists of different lengths in :ref:`org.sysess.sympathy.tuple.ziptuple2`. * Added median filtering to :ref:`Overlay Images` and :ref:`Overlay Images List` * Added :ref:`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 :ref:`Image to List` missing one of the extracted objects. * Improved :ref:`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 :ref:`Extract lambda nodes` with choice between skip and error. * :ref:`Match Tables Nodes`: support for masked arrays. * :ref:`Filter ADAFs`: will only auto-refresh when it has been enabled. * :ref:`Adaf(s) to Table(s)`: shows preview of available signals. * Many nodes have toggle-able filter for their column selection editors. * :ref:`org.sysess.sympathy.examples.daskvisualize`: improved detection of Graphviz installation. * :ref:`org.sysess.sympathy.data.table.ensuretablecolumns`: 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: ^^^^^^^^^^^^^^^^^^ * :ref:`Rename datasource with regex`: helps to simplify automatically creating new datasource names based on existing file names. * ADAF importer plugin for LabVIEW TDMS files. * :ref:`org.sysess.sympathy.list.transposelist` swaps the outer two layers of a nested list. * :ref:`org.sysess.sympathy.keyvaluecalculation`: 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, :ref:`org.sysess.sympathy.data.adaf.interpolateadaf` 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 :ref:`Replace values in Table`. * Improved documentation regarding handling of unmatched values for :ref:`Lookup Table`. * :ref:`Select categories in ADAFs` now respects the choice made in the combo box for raster selection. * :ref:`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. New nodes: ^^^^^^^^^^^ * :ref:`org.sysess.sympathy.create.configureparameters` * :ref:`org.sysess.sympathy.create.createparameters` * :ref:`org.sysess.sympathy.data.table.createindextable` New flows: ^^^^^^^^^^ * :ref:`org.sysess.lambda.map2flow` * :ref:`org.sysess.lambda.map4flow` * :ref:`org.sysess.lambda.configurablemap4flow` 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. .. * Connections are rendered as lines. This can be changed to *Spline* in .. *Preferences -> General: connection shape* if you prefer the original look. 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 :ref:`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 :ref:`flows_in_library`. .. _Markdown: http://daringfireball.com/projects/markdown 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: :ref:`Dask max example`, :ref:`Dask stack example` and :ref:`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 :ref:`Select rows nodes` get normal numpy arrays instead of pandas Series. * :ref:`Select rows in Table with Table` understands literal comparison operators such as '==' or '>' in addition to their old text representations. * :ref:`HJoin Tables` gives consistent names when renaming duplicate columns * :ref:`Figure` allows you to rotate bin labels in bar plots. * New parameter in :ref:`Select rows with Table(s)` * :ref:`Select rows nodes` * Faster execution of :ref:`Table` and :ref:`Select categories in ADAFs` * Responsive preview for :ref:`Calculator List` and :ref:`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 :ref:`lineedit_editor` in parameter helper * Added visibility and enable/disable slots to ParameterValueWidget Bug fixes ^^^^^^^^^ * Fixed name and type of output port of :ref:`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 ^^^^^^^^^^^^ * :ref:`Generic types` * :ref:`Higher order functions`: Lambda, Map and Apply * Official, and much improved, support for :ref:`linked subflows` * Official support for :ref:`locked_subflows` * New library structure using tags New nodes ^^^^^^^^^ * New generic versions of all list operations * :ref:`Ensure columns in Tables with Table` * :ref:`Conditional Propagate` * :ref:`Extract Lambdas` builtin node for reading lambda functions from existing workflows User interface ^^^^^^^^^^^^^^ * Right-click on an empty part of the flow to insert :ref:`higher order functions`. * New command in context menu for inserting a subflow as a :ref:`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 :ref:`nodewriting` * New method in :ref:`adafapi`: ``Group.number_of_rows`` * Configuration widgets can expose a method called save_parameters which is called before the gui is closed. See :ref:`custom_gui` * Added API (parameter helper): List parameter widgets emit ``valueChanged`` signal * Improved 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 * :ref:`NodeContext ` is no longer a named tuple * Added new method: :meth:`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 ^^^^^^^^^^^^ * :ref:`Report` framework: histogram2d graph layer is now called heatmap and can handle different reduction functions (count, mean, median, max, min). * Improved XLS(X) :ref:`import`/:ref:`export`. Especially handling of dates, times, and mixed types. Cells formatted as Time are now imported as timedeltas. * Renamed Sort Table(s) to :ref:`Sort rows in Table(s)` * :ref:`Calculator List`: chooses columns case-sensitively on Windows too. * :ref:`Calculator List`: shows number of output rows in preview in calculator gui. * :ref:`VSplit Table`: Removed constraint that the index should be sorted. The elements will be grouped by the first occurrence of each unique value. * :ref:`Convert columns in Table`: Added conversion path between datetime and float. * :ref:`Select columns in ADAF with structure Table` now works as expected when *Remove selected* has been checked. * :ref:`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 :ref:`Interpolate ADAF(s) ` * :ref:`Report Apply nodes ` output datasources to created files * Improved :ref:`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 (:ref:`Map `, :ref:`Lambda` and :ref:`Apply`) * Improvements to :ref:`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 :ref:`Slice data Table`, :ref:`Select columns in ADAF(s) with structure Table(s)`, :ref:`Interpolate ADAF(s) `, and :ref:`Rename columns nodes ` * Many nodes are better at handling missing or incomplete input data: :ref:`Filter Rows in Table`, :ref:`Replace values in Tables`, :ref:`Detrend ADAF(s) `, :ref:`ADAF(s) to Table(s) `, :ref:`Select Report Pages`, :ref:`Scatter nodes `. * Added 'calculation' attribute on all output columns from :ref:`Calculator List` node * :ref:`Export Tables` and :ref:`Archive files` create missing folders * Fixed :ref:`Export Texts` Other improvements ^^^^^^^^^^^^^^^^^^ * Added :ref:`default workflow environment variables ` ``SY_FLOW_FILEPATH``, ``SY_FLOW_DIR`` and ``SY_FLOW_AUTHOR``. All flows have these and they can't be set or deleted. * Subflows can define :ref:`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 :meth:`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 :ref:`env_vars`. * Added support for profiling, with the ability to produce graphs if Graphviz is available. See :ref:`profiling`. * Added support for debugging single nodes with data available from Sympathy using spyder. See :ref:`spyder_debug`. * Added new Node Wizard for generating new nodes. See :ref:`node_wizard`. * Added support for configuring subflows by aggregating selected node configurations. See :ref:`subflow_config`. * 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 :ref:`create_type`. * 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 :ref:`start_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 :ref:`nodewriting`. In the Standard Library this package is called sylib * Removed ``has_parameter_view`` from node interface. See :ref:`custom_gui`. * Changed default unit for time series to empty string instead of ``'unknown'``. * Added ``has_column`` method in sytable and added corresponding method in ``table.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 :ref:`node_errors`. * 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