**Version 2.3.0**

All the functions specific toDiscretePathPLUSis discontinued.DiscretePathPLUSare now available in the free softwareDiscretePath. In the future, onlyDiscretePathwill be maintained and further developed. In 2023, we will focus on introducing machine learning techniques and algorithms to analyze data using graphs as a tool and to take graph analysis to the next level. We recommend theDiscretePathPLUSuser to switch to the free softwareDiscretePath.

**Improvements for DiscretePath**

- Vertices can be organized in groups (improves graph layout, visualization and analysis).
- Vertices can be organized in sub and super categories.
- X,Y-coordinates of the vertices can be imported. For example, this way the vertices that represent locations on a map can be set to their latitude and longitude coordinates.
- Calculation of the ‘maximum clique’ and ‘all cliques’. The maximum clique is used in many applications to identify the most connected and interactive parts in biological, collaboration, interaction, technological, social, ….. networks. The identification of all cliques allows to identify also the smaller interactive parts of a network. For the calculation of ‘all cliques’ a lower limit can be set (minimum number of vertices that the clique must contain). If a graph contains multiple maximum cliques, ‘all cliques’ allows them to be identified.

**Version 2.2.14**

**Bug fixes for DiscretePathPLUS**

The import of x,y coordinates of vertices:File -> Import graph data from clipboard -> x,y coordinates of verticesis no longer sensitive to the thousands and decimal separators set in the 'Operating System Settings'. Previously, only numbers with a space or without a thousands separator and a dot as a decimal separator were accepted.

**Version 2.2.13**

**Improvements**

- The layout of both the traditional and the radial tree has been updated:
- in the previous versions, when the trees contained many vertices, the vertices could become very small. From this version, the vertices keep a minimum size.
- in the previous version, when a branch contained many vertices, the vertices could overlap. From this version, the vertices can be separated using the slider in the Palette window -> Layout tab -> Tree compactness -> slider ‘c’. At startup the default value is ’10’.

- In the previous version, the edges had to have a ‘unique’ name. From this version, the edges can have the same name.

**Bug fixes**

- The name of the edges is adjusted in the graph drawn in the canvas when an adjacency matrix with the name of the edges is imported.

**Version 2.2.11**

**Improvements**

- Optimization of ‘Undo/Redo’.
- Optimization of interactivity of the table in the ‘Info’ tab with the graph in the canvas.

**Bug fixes**

- When data was added to a graph using the ‘Import into the current graph’ menu item and most of the data was identical to the current graph, an exception could occur and if a ‘list of edges’ was imported the identical edges were duplicated. Both points have been resolved.

**Version 2.2.9**

**Improvements**

Calculation of the ‘maximum clique’ and ‘all cliques’. The maximum clique is used in many applications to identify the most connected and interactive parts in biological, collaboration, interaction, technological, social, ….. networks. The identification of all cliques allows to identify also the smaller interactive parts of a network. For the calculation of ‘all cliques’ a lower limit can be set (minimum number of vertices that the clique must contain). If a graph contains multiple maximum cliques, ‘all cliques’ allows them to be identified.*DiscretePathPLUS:*- A menu item is added to the menu bar to reset all edges of a graph to their default color: “Edit” -> “Set all edges to the default color”. This can be useful if, for example, after the calculation of the edge betweenness or the maximum clique, the graph has been saved and the user wants to delete the results afterwards.

**Bug fixes**

In versions 2.2.7 and 2.2.8, when the XY coordinates of the vertices were imported, the graph was not drawn correctly. There was an error in scaling, this has now been corrected.*DiscretePathPLUS:*

**Version 2.2.8**

**Bug fix for the Windows version**

- In previous versions, when DiscretePath was restarted after a crash, the window with the option to reopen the graph that was being edited or analyzed at the time of the crash was hidden behind the main window. In this version, the main window is now minimized so that the ‘options window’ is visible.

**Version 2.2.7**

**Improvements**

- Importing data from the clipboard is 2 to 3 times faster.
- Opening a ‘.gdp’ file is 2 times faster.
- When the vertices are drawn in the layout of the categories to which they belong, the legend of the categories is displayed. The legend can be copied and printed.
- The graph layout algorithms have been modified for faster drawing.

**Bug fixes**

- Adding data to a graph using the clipboard no longer interferes with the selection of edges in the resulting composite graph.
- Adding data to a graph can now use an adjacency matrix without a row and column header.
- When changing the gray color of the edges, the newly drawn edges will have the set color (in the previous versions, the newly drawn edges were always black).
**DiscretePathPLUS:**Manually drawing an edge to or from a group vertex is not allowed. The edges to or from a group vertex represent edges from or to the vertices that are part of the group vertex to vertices outside the group vertex to which they belong.

**Version 2.2.6**

**Bug fixes**

**For Mac only:**The main window is now located just below the menubar of the Mac computers with Apple silicon that features a notch.- The contents of a cell of the table in the ‘info-tab’ are displayed in the yellow text field of the main window when the mouse pointer enters the cell.

**Version 2.2.5**

**Improvements**

- The import of data from the clipboard is now much faster (up to 40%).
- A graph can be drawn in ‘full layout’ that is based on drawing the cycles and paths that make up the graph or using the ‘barycenter layout’. The ‘barycenter layout’ is based on the ‘barycenter heuristic and the reorderable matrix’ algorithm (see User’s guide). This results in a simple layout that draws quickly and can reveal other information not visible in the full layout.

**Bug fixes**

- If you press the ‘ESC’ key to stop importing data from the clipboard, the application will no longer crash.
- When closing the application with a blank canvas, the error message that sometimes appeared is no longer displayed.

**Version 2.2.3**

**Improvements**

- X,Y-coordinates of the vertices can be imported. For example, this way the vertices that represent locations on a map can be set to their latitude and longitude coordinates
**(DiscretePathPLUS)** - The font size of a vertex name and content is better aligned with the vertex size and for legibility.
- More readable number format in the table of the ‘Info’-tab for the calculated centralities.
- Improved data import (via the clipboard).
- Further optimization of memory management in the calculations and when manipulating the graph properties.

**Bug fixes**

- The total length of the shortest path calculated for a graph containing cycles with negative weight is now displayed to the correct number of decimal places.
- The results of the calculations of the maximum flow through edges and vertices are now displayed in the ‘Info’ tab at the correct number of decimal places.
- When merging vertices in groups, the weight of the merged edges is now to the correct number of decimal places.
- Redrawing the graph immediately after performing a random walk no longer results in a crash.
- Scrolling the Palette window: the mouse wheel and the scrollbar are synchronized.

**Version 2.2.1**

**Bug fix**

- When a random walk is immediately followed by a graph redraw (PaletteWindow -> Layout-tab -> ‘Draw graph’ button) this could result in a crash of the application. This error has been resolved.

**Version 2.2.0**

**Improvements**

- The calculation of the number of crossings in a graph is calculated with a more precise algorithm that is not based on mathematics but on the graphical properties of the graph. This algorithm is especially suitable for smaller graphs. The algorithm used to calculate the number of crossings in a graph is described in: https://www.intrinsic-code.eu/download/the-graph-algorithms-explained/
- The graph properties summary (context menu of the ‘Info’ tab of the Palette window) is more informative.
- Optimization of the calculations of the centralities.
- Optimization of graph redrawing when the properties of a vertex or edge are changed.
- More actions that allow ‘undo/redo’.
- The weight of multiple edges can be set at once in the ‘Layout’ tab of the Palette window.

**Bug fixes**

- Changing the category of one vertex in the ‘Layout’ tab (Palette window) no longer results in a crash.

**Version 2.1.6**

This is an major bug fix for:

- defining the default layout of vertices: Palette window -> tab ‘Layout’ -> section ‘Vertices’ -> section ‘Defined layouts’
- defining the layout of vertices in ‘Preferences’: menu item ‘Preferences’ -> tab ‘Vertices’

The fix avoids crashing the application when both the vertex name and its properties are changed.

**Version 2.1.5**

**Improvements**

- The tool to assign
to vertices and draw the vertices in their category layout has been expanded and further integrated into the software.**categories** - The textfield of the canvas window is more readable and now shows at the mouse pointer the information of the vertices and edges of the canvas or the entire contents of the cell in the table of the ‘Info’ tab of the Palette window.
- The ‘undo/redo’ has been optimized.
- The efficiency of both the drawing and the calculations has been improved.

**Vertices belonging to the same category are similar to each other based on certain conditions as lipids in biochemistry, and age or gender in social networks.**

**Bug fixes**

- When non-existent categories are imported into a graph, these categories are created using the default vertex layout.
- In previous versions, closing the application without opening or drawing a graph resulted in an error message. This error has been resolved.

**Version 2.1.4**

**Improvements**

- Data can be imported from the clipboard into the graph displayed on the canvas. Until now, only a new graph could be created from data on the clipboard.
- In general, data import is optimized.
- Selecting vertices and edges by mouse dragging is no longer limited by the size of the graph. Selection by mouse dragging was previously only possible on a graph with fewer than 10,000 edges. Although the selection of vertices and edges is no longer limited by the complexity of the graph, selection by mouse dragging shows some delay in large and complex graphs. In general, the selection of multiple vertices and edges in complex graphs is more efficient than in previous versions.
- The code has been optimized and prepared for the next major upgrade (version 2.2.0, release first quarter 2022).

**Version 2.1.2**

**Improvements**

- After clustering, individual vertices can be assigned to another cluster.
- Interaction between the ‘Info’ tab of the Palette window and the canvas has been improved: more options in the ‘contextual menus’ and higher reactivity.
- The ‘self-loops’ (an edge connecting a vertex to itself) of a graph can be selected in the canvas as a group and displayed in the ‘Info’ tab (and removed individually or as a group).
- Drawing in the canvas has been improved: stronger anti-aliasing, no red shine on an edge after deselecting, and an optimized refreshing.

**Bug fixes**

- Isolated vertices and leaf vertices containing a self-loop were not always recognized as isolated or leaf vertices, respectively. Isolated vertices with a self-loop were erroneously recognized as leaf vertices. Now all isolated and leaf vertices are recognized correctly.

**Version 2.0.9**

**Improvements**

- A cluster algorithm based on ‘Random walk’ is added. This clustering algorithm provides an additional tool to identify clusters of vertices in a graph. Palette window -> tab ‘Calculate’ -> Section ‘Graph clustering’
- In the ‘Info’ tab, the vertices and edges can always be selected (even if they are shown as a result of a calculation).
- Drawing a graph and organizing the graph into groups and clusters has been further optimized: in the past some drawing combinations were not possible.
- In a ‘random walk’ without a ‘predefined’ end vertex, the weight of the edges can be included in the calculations.
- The random walk algorithm has been improved (better coverage of the graph).

**Bug fixes**

- Occasionally in a random walk, a vertex could be visited twice in a row or an unconnected vertex could be added to the walk.
- In version 2.0.8 selected vertices in the canvas could not be deselected individually by clicking in the selected vertex.

**Version 2.0.8**

**Improvements**

- The ability to perform a ‘Random walk’ with various options has been added to the graph analysis tools (Palette window -> Calculate tab -> section ‘Paths and flows’).
- When edges are selected in the ‘Info’ tab, only the edges are selected in the graph and not the edges with their connection vertices as before. This allows to remove only the edges and not the connecting vertices.
- Opening files can be stopped by pressing the ‘ESC’ button.
- Better canvas responsiveness when drawing large charts. When the graph contains more than 10,000 edges, mouse drag selection is blocked: the response time is too slow to be useful and slows down the overall responsiveness of the application.
- Improved overall memory management.

**Bug fixes**

- In version 2.0.6, calculating the s-t minimum cut and the global minimum cut of graphs with less than 7 vertices resulted in an application crash.
- In the previous versions, multiple selection of vertices or edges in the ‘Info’ tab could crash the application in specific cases.

**Version 2.06**

**Bug fixes**

- When the graph was undirected and the edge weight was changed in the ‘Layout tab’ of the Palette window, only one of the directions of the edge was changed in previous versions. This bug is fixed and now the weights of both directions of the edge are changed simultaneously: the weight of the other direction is set to the weight of the direction being changed.
- In the previous version, the smallest global minimum cut was not always shown. This error has been fixed.

**Version 2.0.5**

**Improvements**

- The calculation of the ‘s-t minimum cut’ has been optimized and expanded. The possibility is included to select the minimum cut with the fewest edges or the minimum cut that divides the graph into two parts with as equal a number of vertices as possible.
- In the calculation of the global minimum cut, the option is included to omit the leaf vertices, and any newly formed leaf vertices, from the calculation. When the graph contains leaf vertices, the global minimum cut often contains an edge connecting a leaf vertex to the graph. Omitting the leaf vertices from the calculation leads to a a more meaningful result.
- If a larger graph contains edges with negative weight and negative cycles can be formed, the shortest path calculation is still an approximation, but in most cases the shortest path calculated is close to the correct solution.
- If a graph contains edges with negative weight, the longest path calculation is still an approximation, but in most cases the longest path calculated is close to the correct solution.
- The interactions with the ‘palette window’ have been further optimized, such as scrolling and starting calculations.

**Version 2.0.2**

**Bug fixes: for the Windows version**

- A mouse click in the canvas while drawing or clustering will no longer crash the application.
- Clicking the ‘Calculating centrality’ or ‘Identify clusters’ pushbuttons in the ‘Calculate’ tab of the Palette window will not cause the scrollbar (and consequently the tab panel) to jump to its ‘start position’.

**Version 2.0.0**

**Improvements**

- Categories (classes) can be created and assigned to the vertices.
- The vertices can be drawn according to the categorization and grouped in the graph by category.
- The content and the category of the vertices can be imported from a spreadsheet.
- The ‘Info’ tab contains a search function.

**Bug fixes**

- In the previous version, the ‘Color picker’ on MacOS ‘Big Sur’ was slow and had to be closed to insert the selected color. This item has been fixed and the ‘Color picker’ is now fully functional in the application.
- In previous versions, an error message sometimes appeared after the application was closed. DiscretePath will now close without giving an error.
- When clustering with organizing the graph by clusters and there was only one cluster, an error message was displayed and the canvas was emptied (this could be undone by using the Undo/Redo function). This item has been fixed: no error and canvas not emptied.
- In the ‘Info’ tab, the properties of the graph could not be shown (“Summary of graph properties”) if new vertices or edges have been added and the graph was not drawn or saved. This bug has been fixed and the properties of the graph can be viewed in the ‘Info’-tab while constructing the graph.

**Version 1.8.6**

**Improvements**

- For MacOS: The downloaded application contains the Apple technology called Universal Binary. A Universal Binary application looks the same as a regular application, but contains one version of the application that can run on x86-64 (Intel 64-bit) and another that can run on Apple Silicon.
- The number format used in the application is independent of the number separators as set in System Preferences. Data being imported is converted to the number format used in the application (US English). The number format of the data being exported is as set in System Preferences. In this way, the application works robustly on systems that use different number separators.

**Bug fixes**

- Scientific notation caused problems with some combinations of number separators as set in the System Preferences. This item is resolved by implementing the improvement as explained above.

**Version 1.8.4**

**Improvements**

- The calculation of the maximum flow in a graph taking into account both the capacities of the edges and the vertices has been added.
- The current algorithms for maximum flow, minimum s-t cut, global minimum cut, and minimum spanning tree have been optimized.
- Memory management is optimized for both drawing and analyzing graphs.

**Bug fixes**

- Maximum flow and minimum cut calculations: if the chart contains multiple cycles, it could result in infinite loops in the previous versions. These algorithms have been modified to handle complex multi-cycle graphs.
- Calculation of the global minimum cut: when the graph consists of several subgraphs and the first subgraphs have no global minimum cut, the application crashed in the previous versions. This bug has been fixed.
- The orientation of an edge can be correctly switched using the text fields in the “Edges” box of the “Layout” tab.
- The scaling of the length of the edges in the “Preferences” window is now more accurate.

**Version 1.8.2**

**Improvements**

- The preferences can be reset to the default values and a damaged preferences file can be deleted and replaced with a new preferences file with the default values: “Help” menu -> “Restore preferences …”.
- “.gdp” files can be opened from the “Finder”.
- The number format is standardized throughout the application: “.” is the decimal separator – no thousands separator – exponential notation is used for readability

**Bug fixes**

- When the application is opened in MacOS, the top of the windows (the window with the canvas and the palette window) will be placed below the menu bar (adapted to “Big Sur”)
- The correct total minimum cut and the length of the longest path are displayed.

**Version 1.8.0**

**Improvements**

- The drawing of edges as curves has been optimized (layout and drawing efficiency).
- The direction of an edge can now be indicated by an arrow or a dot (circle). For complex graphs the dot indication is clearer and drawing is more efficient.
- Random graph building has been significantly improved: especially when the graph is saturated with edges (
*versus*the number of vertices). - The value of the sliders can now be set by scrolling the mouse. This makes it easier to set an exact value.
- Under the hood, some major adjustments have been made to make graph drawing better and more efficient.

**Bug fixes**

- When calculations are started, the graph zoom is set to “1” to avoid screen flickering.
- Printing is enabled. This was an item in some of the previous MacOS versions.

**Version 1.7.2**

Major adjustments have been made to change the layout of graph-specific default vertices and edges.

**Improvements**

- In the window to set the preferences (menu “Preferences”), the changes made to the layout of the default edges have been made more visual.
- The changes made to the graph-specific layout of the default vertices and edges (“Layout panel”, sections “Vertices” and “Edges”, button “Show all layouts”) are made more visual.
- The layout of multiple graph-specific default vertices and edges can be changed without the need to close the window to save the layout for each default vertex or edge. In previous versions, only one default vertex or edge could be changed at a time, after which the window had to be closed.

**Bug fixes**

- Setting the graph-specific default layouts of the vertices and edges was not always clear and could lead to misinterpretations and, consequently, unwanted vertex and edge layouts. This is now addressed in the “improvements” outlined above.

**Version 1.7.1**

**Improvements**

- The option is available to display grid lines in the canvas. This is to support the manual drawing of a graph (menu “View”, submenu “Show grid lines”).
- More vertex shapes are available: ovals, rectangles, pentagons, hexagons, heptagons, and stars.
- When changing the width, height, color or shape of a vertex (or a group of vertices), the changes are displayed in real time: in the canvas, in the window to set the default layout of the vertices of the current graph, and in the window to set the preferences.
- The number format is uniform throughout the application.

**Bug fixes**

- If the graph contains only one edge and this edge has been removed, “Undo / Redo” could result in a crash. This item has been fixed.
- In the “Preferences” window, the scale of the slider to set the preferences of drawing cycles versus paths is corrected.
- The drawing of dashed edges is more robust.
- Efficient closing of the application.

**Version 1.6.0**

**Improvements**

- The speed at which the software runs has been greatly increased. Networks are drawn about 15% faster. Calculating and drawing clusters is about 20-25% faster. The calculation of ‘paths and flows’ and ‘centralities’ has been accelerated by 40% to 50%.

**Version 1.5.2**

**Improvements**

- The ‘closeness centrality’ algorithm (a way to detect nodes that are able to spread information very efficiently across a network) has been added.
- The algorithm to separate overlapping vertices in the visualization of a network has been optimized.
- Memory management has been improved.

**Bug fixes**

- A manually drawn graph whose layout was not managed by the software can now be saved (in the previous versions there was an error in the saved file).
- Clicking a radio button in the ‘Paths and flows’ panel when no graph was drawn in the canvas caused the software to crash. This item has been fixed.

**Version 1.5.0**

**Improvements**

- The radial tree layout has been added to visualize a network. A network can now be visualized using a graph, a traditional tree or a radial tree layout.
- The traditional tree layout has been optimized: vertex size and branch distribution.
- The layout algorithms have been adjusted to obtain optimal use of the canvas space. This results in a more open network structure. This is especially relevant for larger networks.

**Bug fixes**

- The undo / redo action now works correctly when drawing a network with different layouts consecutively (graph, traditional tree, radial tree).

**Version 1.4.6**

**Improvements**

- Random graphs can be created (menu ‘Extras’; submenu ‘Create a random graph’)

**Bug fixes**

- When a graph is converted from directed to undirected, the option to save the directed graph before converting it to an undirected graph is active.
- The help window that appears when a control is right-clicked is now always in the foreground (in the previous version, the help window could be partially hidden by a window).
- If graph data is imported (menu ‘File’; submenu ‘Import graph data from the clipboard’) and the weight of an edge is zero, the data will be processed and will not cause a crash.

**Version 1.4.4**

**Improvements**

- Both the s-t minimum cut and the global minimum cut of a graph can be calculated. If the graph consists of multiple subgraphs, the global minimum cut for each subgraph is calculated.
- The layout and help functions (right click on the controls) of the Palette window have been made more consistent.
- The calculation of the shortest path, the longest path, and the minimum spanning tree is more efficient.

**Bug fixes**

- After importing graph data from the clipboard, the resulting graph is always drawn automatically (sometimes an additional click on the “Draw graph” button was needed).
- After calculating the shortest or longest path, direct drawing in the canvas is always possible (in previous versions this could lead to a crash).

The last version can be downloaded at the menu item Software

To explore the features of DiscretePath consult the user guide (User guide)

Go to the Welcome page