9. Changes

9.1. Release 0.7.0 (2018-03-08)

9.1.1. Incompatible Changes

  • Boost >= 1.64 is now required.
  • Two new libraries, GraphCanon and PermGroup, are now required dependencies.
  • Sphinx 1.7.1 is now required for building the documentation.
  • dg::DG::HyperEdge::print()/DGHyperEdge.print now also takes an argument for colouring vertices/edges that are not matched by the rule. The default is now that matched vertices/edges are the default colour, while those that are not matched are grey.
  • Most of the outer interface headers have now been moved to subfolders, and their content has been moved to corresponding namespaces. Several classes has been slightly renamed during the move, and some headers has been split into multiple header files.
  • The previously deprecated class DerivationRef has now been removed along with DG.derivations in the Python interface.
  • The previously deprecated method DG.vertexGraphs in the Python interface has been removed.

9.1.2. New Features

  • Added functions to map external ids of graphs and rules to internal vertices.
  • Added functions to get vertex coordinates for rules.
  • dg::DG::print()/DG.print now returns the name of the PDF-file that will be created in post-processing.
  • Add dg::Printer::setWithInlineGraphs()/DGPrinter.withInlineGraphs to input raw tex files for graphs in nodes instead of compiled PDFs. The generated tex code for the graphs is different to ensure unique Tikz node names.
  • Add inline as a special argument for the graph Latex macros to input the raw tex file, instead of including a compiled PDF.
  • Add graph::Graph::getSmilesWithIds()/Graph.smilesWithIds for getting a string annotated with the internal vertex ids in form of the class labels.
  • The automorphism group of each graph is now available.

9.1.3. Experimental New Features

9.1.4. Bugs Fixed

9.1.5. Other

  • The documentation now has a “Known Issues” section, describing an issue where post-processing may fail if pdflatex has been upgraded after installation

9.2. Release 0.6.0 (2016-12-22)

9.2.1. Incompatible Changes

  • A C++14 compiler is now required (e.g., GCC 5.1 or later).
  • The required Boost version is now either 1.59 or at least 1.61. Version 1.60 do not work due to https://github.com/boostorg/python/issues/56.
  • Make filenames in post-processing more Latex friendly.
  • Rules specified in GML using constrainAdj must now enclose the operator in double quotes.
  • DG: remove most of the interface related to DerivationRef. Use the graph interface instead. E.g.,
    • Deprecate DerivationRef. They now interconvert with dg::DG::HyperEdge/DGHyperEdge.
    • Change DG::getDerivationRef into dg::DG::findEdge()/DG.findEdge.
    • Make DG.derivations return the edges instead in the Python interface. It is removed in the C++ interface. It will be removed from Python in the future.
    • Remove DG::inDerivations and DG::outDerivations.
    • Deprecate DG::vertexGraphs in Python, remove in C++.
  • Move the graph interface for DG and Graph into separate headers: DGGraphInterface.h and GraphGraphInterface.h.
  • Move GraphPrinter into a separate header.
  • Move DGPrinter and DGPrintData into a separate header.
  • All SBML features have been removed from the library.
  • The deprecated DG::printMatrix function has been removed.
  • dg::DG::calc()/DG.calc will no longer print a message when it is done.
  • dg::DG::print()/DG.print by default now only prints the hypergraph rendering. (For now, set Config::DG::printNonHyper to enable printing of the non-hypergraph rendering)
  • graph::Graph::print()/Graph.print and rule::Rule::print()/Rule.print will now emit only one depiction when the two printers are equal.
  • rule::Rule::print()/Rule.print, change the default colours used to indicate changes. Now different colours are used in L, K, R.
  • DGHyperEdge.print, change the default match colour.
  • Add < operator to vertices and edges of Graph, Rule, and DG.

9.2.2. New Features

  • rule::Rule::makeInverse()/Rule.makeInverse.
  • Reimplementation of GML parsing. It is now less strict with respect to ordering.
  • Rule application constraint that checks the shortest path between two given vertices.
  • Interactive mode for the wrapper script (option -i). It will use IPython as interpreter if it is available.
  • The molecule model now includes radicals. The SMILES format has been extended to support radicals as well.
  • Plugin infrastructure to load additional Python modules when using the wrapper script.
  • Graph interface for rules: for a rule \(L \leftarrow K\rightarrow R`\), the three graphs can be accessed. The rule it self acts as the graph that is the pushout of the rule span.
  • Graph loading: the ids used in GML and GraphDFS, as well as the class labels in SMILES can now be converted into vertices for the loaded graphs. If the class labels of a SMILES string are not unique, then none of them are available for querying.
  • Add -v as alias for --version in the wrapper script.
  • Add quite mode, -q, to the wrapper script.
  • Add graph::Printer::setRotation()/GraphPrinter.rotation. Internally computed coordinates will be rotated by the set amount of degrees.

9.2.3. Bugs Fixed

  • operator<< for Derivation: only try to print the rule if there is one.
  • Properly throw an exception when graph GML parsing fails.
  • Don’t throw an exception while throwing an exception when graphs are disconnected.
  • Fix bug in checking of certain constrainAdj during certain types of rule composition.
  • Properly handle empty vertex/hyperedge ranges for DGs. Thanks to Robert Haas for reporting.

9.3. Release 0.5.0 (2016-03-07)

Initial public version.