[1.17.0] - 2023-02-17#


  • Genetic sequencing of node sequences built on ratio-genetic-py. See genetic and genetic_sequencing for more info.

[1.16.1] - 2022-10-27#


  • A convenient all extra to install all extras at once.

[1.16.0] - 2022-07-27#


[1.15.1] - 2022-06-14#


  • Added an option to the ragraph.analysis.compatibility.CompatibilityAnalysis interface_compatibility that toggles whether interface checking should be a prerequisite for checking compatibility. The default is the current behavior (True), where compatibility is only checked for direct variant interfaces. Any two variants without a direct interface is then assumed to be compatible. Toggling that to False implies that any two variants should be compatible, regardless of the existence of an interface.

[1.15.0] - 2022-06-08#


  • New plot method to ragraph.analysis.compatibility.CompatibilityAnalysis.plot.

  • LabelStyle can now toggle the label shortening behavior with a shorten key that is True` by default. This is the current behavior where each label is shortened by only keeping everything after the last period .. You can provide a boolean toggle for this, or a custom method that takes a label string and returns the shortened label. Also available as Style.labels.shorten.

  • Updated compatibility tests to include new CompatibilityAnalysis plot method.


  • Fixed duplicate UUID field in Metadata.


  • Hotfix to scaling.


  • Added an extra scaling_weight field to the PieMapStyle object that scales the piecharts drawn in a piemap plot component according to a specified edge weight. Note that it stacks with every edge in a bundle between two displayed nodes by means of the product of the available values.



  • Switch from a brute-force to a Binary Decision Diagram implementation as the backbone for the compatibility module.




  • Updated and reorganized all dependencies into a more simplified structure.

    • Now, the only optional dependencies are RaESL (as extra esl) and kaleido (as extra plot).

  • Removed the obsolete API server with Connexion. It’s currently unused and only burdens the package with higher maintenance.

    • If we’d ever need it again, we can look back at it later in the Git history.

    • Connexion’s development is currently changing a lot as well, so we’d probably be better off starting over then.

  • Removed CLI as the only supported command was the API server.


  • Fixup Canopy export schema key for “session” format.


  • Fixup the export of labels in Canopy (de-duplicate, keep order).


  • Fixup the export of weights in Canopy (force floats).


  • Fixup the $schema key in Canopy export.



  • Allow specification of a symmetrize parameter to the different Markov clustering algorithms that adds the transpose of a (potentially asymmetrical) matrix to create a guaranteed symmetrical matrix with respect to the diagonal. This should give more consistent clustering results while maintaining “stronger” connections between nodes that already had bi-directional edges between them. Influences markov, hierarchical_markov, and markov_gamma. The Markov sequencing is not included, as that would not make sense at all.

  • Modified Markov sequencing with a scale toggle that modifies the inflow vector to contain the sum of the corresponding adjacency matrix’s columns. To interpret this in a sequencing context: a node doesn’t have to “split” its output and divide it over it’s successors, but it rather delivers something that each target node should acquire fully. It is therefore the new default option (scale = True). Clustering algorithms have not been adjusted to incorporate this as that would stray too far off the original Markov clustering implementation.

  • Added rudimentary debugging output to analysis. The output is rather verbose and is sent on a logger named “ragraph.analysis”.


  • Tiny bugfix when axis sort should neither sort by width or bus status (only hierarchy).



  • Add inherit option to the PieMapStyle options to display edges between descendants of nodes in the figures using PieMap components such as mdm and friends.


  • Add inherit and loops boolean toggles to any applicable Analysis class and therefore to all methods where applicable.


  • Add an inherit option to the SCC algorithm. By default, it is set to True and makes sure any edges between descendants are taken into account, too.



  • Allow combined color palette overrides, e.g. both a categorical color override for a field as well as a numerical color palette.


  • Add a SCC tearing sequencing algorithm. See SCC tearing for usage.


  • Add leafs argument to ragraph.sequence.utils.branchsort. The nodes given to this argument are treated as leaf nodes and their descendants are therefore exempt from being reordered.


  • Fixup a plotting issue where subplots didn’t receive the plotting style options.


  • Fixup a pre-processing step in branchsort analyses where root lists of length 1 were treated as cases where nothing had to be sorted.


  • Add option to allow CORS.



  • Fixup cyclic import troubles. Getting a color from a palette in the plot Style is now available under the style.palettes.get_categorical_color and style.palettes.get_numerical_color methods.


  • Refactor ragraph.plot.colors into ragraph.colors. This allows it to be used even if the plotting dependencies aren’t present.


  • Initial merge of API v2.


  • Added more DSM datasets.


  • Pipeline and versioning updates.


  • Dependency updates.


  • Addition of the ragraph.generic.PieMapStyle.customhoverkeys attribute. This attribute allows a user to provide a list of keys that indicate which information stored within the ragraph.Edge.annotations] object is to be displayed on hover within a ragraph.plot.PieMap plot.


  • Addition of the ragraph.plot.dmm plot function for visualizing mapping matrices.

  • Addition of the row_col_numbers argument to the ragraph.plot.mdm and ragraph.plot.dsm plot functions for adding row and column numbers to the figures.


  • Several small bug fixes regarding the scaling of figures when adding custom plot components.

  • Added usage docs for ragraph.plot.


  • Added a ragraph.analysis.sequencing.axis sequencing ‘algorithm’ that sorts nodes like we typically want them to on matrix axis as a replacement for the utils floating around. That means, they get sorted by node kind first (and hierarchy) primarily, followed by a sorting of “sibling” nodes where buses and larger clusters (in terms of displayed leaf nodes) are put first.


  • Added UUID generation to the Metadata class. This means that we tag every Node, Edge, or Graph instance with a unique code to track them over time. This is especially useful for the API and future referencing of identical objects.

    • This change affects the .json_dict property of these objects to work with these UUIDs (as strings) instead of the object names to reference them.

  • UUIDs are now generated as an incrementing integer during test runs such that we generate the same identical (and easily identifiable) in each run. Note that they are very much random in “real-life” situations.

  • Removed soon-to-be-deprecated API v1 tests as bringing them up-to-par would be a waste of time.


  • Improved scaling of large MDM plots.


  • Bug fix. ragraph.plot.mdm now supports plotting graphs with more than ten edge labels out of the box.

  • Bug fix. ragraph.plot.mdm legend plotting no longer crashes on empty list of edges.


  • Some convenience fixups to the ragraph.api module.

  • The CLI now supports arguments via environment variables. They are of the form of RAGRAPH_{COMMAND}_{OPTION}.


  • Bug fix of ragraph.plot.components.piemap.PieMap regarding the visualization of matrices that contain one or more busareas.

  • Additon of the sort keyword to ragraph.plot.mdm which defines whether the provided leaf list should be sorted according to the hierarchical node structure and different node domains. Defaults to True.

  • Changed the default value of the keyword show of ragraph.plot.mdm to False.


  • Bug fix. The type of ragraph.plot.generic.Palettes.fields is updated to Dict[str, Union[str, List[str]]]. As such, one can providing a mapping of field names to a hex-colorcodes or to a lists of hex-colorcodes:

    • A single colorcode is to be used when one wants to set the color of an edge label.

    • A list of colorcodes is to be used when one wants to provide a colormap for an edge weight.


  • Added a rudimentary plotting module under ragraph.plot. The only currently built-in plot type is the ragraph.plot.mdm, but groundwork is in place with re-usable plot components under ragraph.plot.components and the color palette management under ragraph.plot.colors. The usage manual should follow soon.


  • Changed internal backend of to raesl.compile.to_graph. This changes calls to from_esl slightly since it now requires positional arguments *paths instead of a list of paths.


  • Fixed an issue where the ruamel.yaml dependency is installed as ruamel_yaml.





  • Added a ragraph.generic.Mapping class that will mainly be featured in future endeavours featuring plotting functionality. Works as a dictionary whose keys are also properties of the object. Moreover, you can include default values and optional validators for certain keys/properties of the object. It’s intended as a base class to derive mappings from for a specific purpose.


  • Simplified the use of the ragraph.analysis._classes.Analysis classes and their corresponding wrappers by moving the latter into the former. The publicly available methods are now the wrapped ones that check the parameter input.


  • Added better analysis descriptions through their repr and str representations. For help regarding an analysis, simply look at its repr or string how to call it.

  • Made branchsort more convenient by allowing supplying Analysis instances, too.


  • Apply new Python project template.

  • Set algorithm specific modules as private modules. Regular usage should refer to the category specific imported ones. This means that from ragraph.analyis.bus import gamma from now on undeniably imports the function and not the submodule (which is now named ragraph.analysis.bus._gamma.)


  • Fix the Climate Control case to correspond to the reference document by Pimmler. Make sure to use it with an edge weight filter set to "adjacency" for algorithms that require nonnegative input.

  • Tests are updated accordingly and an additional test checks whether relevant datasets are actually symmetric.


  • More sophisticated Archimate3.0 export via an archimate dictionary in our Annotations object. You can now set the element type and documentation of each element using Annotations.archimate["type"] and Annotations.archimate["documentation"]. For all possible types, please refer to



  • Fixed loading JSON files with set edge IDs. It now sets the last used edge ID number correctly.


  • Minor bug fix for edge ID generation.


  • Added XML I/O support using the XML Metadata Interchange format (XMI) in


Initial version from preceding projects graph_io, graph_analysis, ratio_datasets, architecture and ratio_backend.