14. Changes¶
14.1. develop¶
14.1.1. Incompatible Changes¶
Doc, several pages have changed URL:
libmod/libmod.htmltolibmod/index.htmlpymod/pymod.htmltopymod/index.htmlpostmod/postmod.htmltopostmod/index.htmlmodWrapper/modWrapper.htmltoexe/index.htmlepim/epim.htmltoepim/index.htmldataDesc/dataDesc.htmltoformats/index.htmldgStrat/dgStrat.htmltodgStrat/index.htmlAs default, a Python package is now installed with
pipwhich enables import ofmodwithout extraPYTHONPATHmanipulation. This may potentially clash with other packages of the same name. Use-DBUILD_PY_MOD_PIP=offfor CMake to disable this (see Compiling from Source).
14.1.2. New Features¶
Doc, a new section, Graph, Rule, and Molecule Model, and restructuring of Data Formats.
The GraphDFS format now supports disconnected graphs through
.-edges, simiilar to SMILES. The graph loading functionsgraph::Graph::fromDFSMulti()andGraph.fromDFSMulti()has been added to load disconnected graphs.Added
rule::Rule::fromDFS()/Rule.fromDFS()for loading rules from a RuleDFS string, a new line notation for rules based on GraphDFS.Added support for MOL and SD formats for loading graphs. The loaded can be done through the functions
PyMØD: add installation of the bindings via
pip. See the setting-DBUILD_PY_MOD_PIP=onin Compiling from Source.
14.1.3. Bugs Fixed¶
Rule GML loading, check for edges dangling due to wrong vertex membership.
dg::Builder::execute()/DGBuilder.execute()anddg::Builder::apply()/DGBuilder.apply(), properly ignore direct derivations with empty right-hand sides, instead of crashing.dg::DG::load()/DG.load()anddg::Builder::load()/DGBuilder.load(), reenable loading of very old dump formats.Fix critical indexing bug in
rule::CompositionMatch/RCMatch.Doc, added missing
cd modstep in Compiling from Source.
14.2. v0.13.0 (2021-07-08)¶
14.2.1. Incompatible Changes¶
The package name has been changed to simply “MØD”.
Use more C++17 features, making some code not compile with GCC 7.
Clang 9 seems to produce wrong code for PyMØD, resultining in segmentation faults during module import.
Require Sphinx 3.5
The return type of
rule::Rule::getLabelType()has changed from usingboost::optionaltostd::optional.Change the GraphCanon submodule from a relative path to the Github repository.
Rename the C++ graph loading functions
graph::Graph::gmlStringtograph::Graph::fromGMLString()graph::Graph::gmltograph::Graph::fromGMLFile()graph::Graph::graphDFStograph::Graph::fromDFS()graph::Graph::smilestograph::Graph::fromSMILES()graph::Graph::makeGraphtograph::Graph::create()
Rename the C++ rule loading functions
rule::Rule::ruleGMLStringtorule::Rule::fromGMLString()rule::Rule::ruleGMLtorule::Rule::fromGMLFile()
Add
warningsparameter tograph::Graph::create().Fix
rcCommonto consistently enumerate common subgraphs that are not necessarily vertex-induced. Useconfig.rc.useBoostCommonSubgraph = Falseto switch to the old behaviour.The
BUILD_DOCoption for building from source now defaults toOFF.The file parameter for
DG.load()andDGBuilder.load()has been changed name fromfiletof.Graph.fromSMILES()has changed order of parameters,addis now the last one.
14.2.2. New Features¶
Added
printCombinedparameter torule::Rule::print()/Rule.print()to optionally print a figure where the rule is depicted as a single combined graph. This was previously always printed, but now it defaults to off.Added <-operator to
graph::Union/UnionGraph,rule::Rule::LeftGraph/Rule.LeftGraph,rule::Rule::ContextGraph/Rule.ContextGraph, andrule::Rule::RightGraph/Rule.RightGraph.Added
dg::Printer::getTikzpictureOption(),dg::Printer::setTikzpictureOption(),DGPrinter.tikzpictureOption.Allow
limit=0for repeat strategies,dg::Strategy::makeRepeat()/DGStrat.makeRepeat().Added overload for
dg::DG::dump()/DG.dump()that takes a target filename as argument.Add the static methods
Graph.fromGMLString()(the same asgraphGMLString())Graph.fromGMLFile()(the same asgraphGML())Graph.fromDFS()(the same asgraphDFS())Graph.fromSMILES()(the same assmiles())Rule.fromGMLString()(the same asruleGMLString())Rule.fromGMLFile()(the same asruleGML())
Allow dot (
.) bonds in SMILES strings.Add the following functions for loading a possibly disconnected graph:
Add
MOD_PYTHONandMOD_IPYTHONto overwrite the interpreter the wrapper script executes.Add
graph::Graph::getLoadingWarnings()/Graph.loadingWarnings.
14.2.3. Bugs Fixed¶
rule::Rule::fromGMLFile()/Rule.fromGMLFile()andrule::Rule::fromGMLString()/Rule.fromGMLString():Fixed typos in a few error messages.
Actually fail loading when errors in constraints are encountered.
Fix v0.12 problem with RPATH handling of
libmod.Doc, fix infinite search.
Fix exception visibility on macOS so they can be caught outside the library.
Tests, set C++ standard in CMake tests.
Added missing
operator<tograph::Union::Vertex.Fix error handling to throw the right exception with better message when the file can not be opened for the functions
graph::Graph::fromGMLFile()/Graph.fromGMLFile(),rule::Rule::fromGMLFile()/Rule.fromGMLFile(),dg::DG::load()/DG.load(),dg::Builder::load()/DGBuilder.load().Fixes to support Boost 1.76.
Fixes to support GCC 11.
Build system, use
add_custom_commandto avoid recompilation of docs and Latex format file on install. Fixes problem with failing to importsphinxwhen runningsudo make install.
14.2.4. Other¶
Test, set C++ standard in CMake tests.
Doc, fix description of
RCExpExpandRCExpComposeCommon.Doc, for libMØD classes, make a synopsis with links to declarations.
Doc, fix documentation for
post::makeUniqueFilePrefix()so it is documented to be in namespacepost.Docker, for building the Ubuntu image, download Boost from the new URL.
Conda, require a newer Graphviz version with rsvg from conda-forge instead of custom version.
Refresh the messages from and the documentation on The Wrapper Script (mod).
Doc, clarify use of
pipmay need--userfor home folder installation.Doc, properly document that a
CWDPathis a valid argument forDoc, clarify conditions on methods in
dg::DG/DGregarding “hasActiveBuilder” and “isLocked”.
14.3. v0.12.0 (2021-01-18)¶
14.3.1. Incompatible Changes¶
Require C++17.
Require Boost 1.73 to avoid CMake issue in 1.72.
Require GraphCanon 0.5.
Require Sphinx 3.4.
Moved compilation instructions from Installation to Compiling from Source.
Renamed
DGStratGraphStatetoDGStrat.GraphState.Swap parameters for
dg::DG::print()to be consistent withDG.print().The function
mod::makeUniqueFilePrefix()has been renamed tomod::post::makeUniqueFilePrefix().Names for the left, context, and right graph of
Rulehas been moved and renamed to be nested types ofRule.Names for graph interface types for
Graph,Rule,Rule.LeftGraph,Rule.ContextGraph, andRule.RightGraphhave been moved and renamed to be nested types of their graph class.Names for graph automorphism types for
Graphhave been moved and renamed to be nested types ofGraph.rule::Composer::eval()/RCEvaluator.eval()now returns a list of results, possibly with duplicates, instead of only a collection of unique rules.
14.3.2. New Features¶
A pre-compiled Conda installation is now available on Linux, see Installation and https://anaconda.org/jakobandersen/mod.
Added new higher-level installation instructions at Installation, with documentation for how to install via Conda and using the Docker image.
Update
bindep.txtand Quick Start guide for Arch.Add
Brewfileto to make installation of dependencies much easier on macOS.Improved verbose output from “add” strategies during
dg::Builder::execute()/DGBuilder.execute().Improved rule application performance when evaluating rule strategies and executing
dg::Builder::apply()/DGBuilder.apply().Added a relaxed mode to
dg::Builder::apply()/DGBuilder.apply()via theonlyProperparameter.Add missing
graphattributes to vertices and edges of the four graph interfaces ofRule.Add new class
graph::Union/UnionGraph.Improve handling of pre-compiled Latex format files used in the post-processor (thanks also to Nikolai Nøjgaard):
Add build option to not install the file during normal installation. See
-DBUILD_POST_MOD_FMTin Installation.Teach the post-processor to dynamically compile the format file if it is not installed.
Add options
mod_post --install-formatandmod_post --install-format-sudofor installing/updating the pre-compiled format file after MØD was installed. This can be used on an installation configured with-DBUILD_POST_MOD_FMT=offor for resolving a known issue.
Make build work on macOS and add installation instructions.
Rule composition: when using
rcCommon, skip duplicate overlaps yielded by the underlying enumeration algorithm.
14.3.3. Bugs Fixed¶
Flush stdout in the end of
dg::ExecuteResult::list()/DGExecuteResult.list().Fix printing/stringification of a null vertices for
graph::Graph/Graph,rule::Rule/Rule,rule::Rule::LeftGraph/Rule.LeftGraph,rule::Rule::ContextGraph/Rule.ContextGraph,rule::Rule::RightGraph/Rule.ContextGraph.Fix conversion of
Graph.Edgetobool.Fix rule printing when hydrogens are collapsed to prevent occasional Latex errors on the form
! Package pgf Error: No shape named `v-coord-<num>' is known..Add missing
operator!=forAtomData.macOS build fixes:
Infinite recursion in doc building, due to missing toctrees.
Disable leak sanitizer when using AppleClang as compiler.
Disable more compiler/link options not in AppleClang.
14.3.4. Other¶
Doc, rearrange and deduplicate documentation for graph interfaces in PyMØD. Introduce the Protocols section which documents common protocols that several classes implement. The documentation of the following classes has been simplified by mostly referring to these protocols:
Doc, improve documentation of the graph interfaces of
Rule.
14.4. v0.11.0 (2020-08-31)¶
14.4.1. Incompatible Changes¶
Bump version requirement of Boost to 1.72.
dg::Printer::pushVertexVisible()/DGPrinter.pushVertexVisible(),dg::Printer::pushVertexLabel()/DGPrinter.pushVertexLabel(), anddg::Printer::pushVertexColour()/DGPrinter.pushVertexColour()now requies a callback taking adg::DG::Vertex/DGVertex, instead of agraph::Graph/Graphanddg::DG/DG. The previous style is removed in libMØD and deprecated in PyMØD.dg::DG::HyperEdge::print()/DGHyperEdge.print()now throws exceptions if either no rules are associated with the hyperedge or if at least one of the associated rules does not lead to a derivation.dg::PrintData/DGPrintData, many interface changes, including proper argument checking.dg::DG::dumpImport()has been renamed todg::DG::load().dgDump()has been renamed toDG.load().dg::DG::load()/DG.load()has additional arguments and pre-conditions.Do not install a pkg-config file. It was broken and there doesn’t seem to be an easy way to fix it.
14.4.2. New Features¶
Added
dg::Builder::apply()/DGBuilder.apply()as a lower-level function for computing proper direct derivations.graph::Graph::fromSMILES()/smiles():Generalize the parser to accept almost arbitrary strings as symbols inside brackets. See SMILES. This is only allowed when passing
allowPartial=Truetosmiles().Generalize the parser to accept ring-bonds and branches in mixed order.
Generalize the parser to accept non-standard charges:
+++,++,---,--, and magnitudes larger than +/-9.
Added the PyMØD submodule EpiM.
Added
SmilesClassPolicy/SmilesClassPolicyargument tograph::Graph::fromSMILES()/smiles().Support using either Open Babel 2 or 3 as dependency.
Make
DGPrinter.graphPrinterwriteable as well.Make
graph::Printer/GraphPrinterequality comparable.Added
dg::Printer::setGraphvizPrefix()/dg::Printer::getGraphvizPrefix()/DGPrinter.graphvizPrefix.Added
makeUniqueFilePrefix/makeUniqueFilePrefix().Improve verbosity level 8 information from
dg::Builder::execute()/DGBuilder.execute()to the universe size.Make
LabelSettings/LabelSettingsequality comparable.Added
rngUniformReal()/rngUniformReal().
14.4.3. Bugs Fixed¶
Fix handling of null pointers:
Derivation/Derivationprinting.Derivations/Derivationsprinting.Static and dynamic “add” strategies,
dg::Strategy::makeAdd()/DGStrat.makeAddStatic()andDGStrat.makeAddDynamic().Sequence strategies,
dg::Strategy::makeSequence()/DGStrat.makeSequence()Rule strategies,
dg::Strategy::makeRule()/DGStrat.makeRule()Parallel strategies,
dg::Strategy::makeParallel()/DGStrat.makeParallel()Filter strategies,
dg::Strategy::makeFilter()Execute strategies,
dg::Strategy::makeExecute()Left/right predicate strategies,
dg::Strategy::makeLeftPredicate()/DGStrat.makeLeftPredicate(),dg::Strategy::makeRightPredicate()/DGStrat.makeRightPredicate()Revive strategies,
dg::Strategy::makeRevive()/DGStrat.makeRevive()Repeat strategies,
dg::Strategy::makeRepeat()/DGStrat.makeRepeat()
Fix handling of empty functions given as callbacks:
graph::Graph::fromSMILES()/smiles():Improve parsing error messages.
Fix missing external ID for bracketed wildcard atoms with class label, e.g.,
[*:42].Fix handling of an atom which contains a ring-closure and ring-opening using the same ID, e.g.,
C1CCCP11NNNN1.When there is a bond mismatch in a ring closure (e.g.,
C-1CCCC=1), throw aInputError/InputErrorinstead of aFatalError/FatalError.
dg::DG::print()/DG.print(), fix missing labels on shortcut edges when using adg::Printer/DGPrinterwith “labels as Latex math” set to false.dg::Builder::addAbstract()/DGBuilder.addAbstract():Improve parsing error messages.
Fix assertion on non-ASCII input.
include(), read files in binary instead of ASCII.PostMØD: scale figures based on height as well to avoid them being clipped. Thanks to Christoph Flamm.
Fix
rule::Rule::getGMLString()/Rule.getGMLString()to not perform coordinate instantiation when not needed.Fix Python export of
Rule.ContextGraph.Vertex.Properly throw exceptions from all
popfunctions indg::Printer/DGPrinterwhen there is nothing to pop.PostMØD: remove extranous escape of a quote in AWK script in
coordsFromGV.Graph printing, fix coordinate overwrite when printing the same graph multiple times, but with different rotation or mirror settings, the layout of the last printing would be used for all of them. Those with non-zero rotation and mirroring now have their own file name.
DG printing: fix bending of head/tail arrows when a tail vertex is also a head vertex so arrows don’t overlap.
#8: remove some linker flags when AppleClang is used.
14.4.4. Other¶
Doc, update theming again to increase readability.
Doc, add more formal API for the embedded strategy language for derivation graphs.
Doc, fix typo resulting in missing documentation of
Doc, various typo fixes.
Doc, clarify that
DGPrinter.pushVertexVisible(),DGPrinter.pushEdgeVisible(),DGPrinter.pushVertexLabel(),DGPrinter.pushEdgeLabel(),DGPrinter.pushVertexColour(),DGPrinter.pushEdgeColour(),DGPrinter.setRotationOverwrite(),DGPrinter.setMirrorOverwrite()accepts a constant as well as a callback.Doc, fix callback type for
DGPrinter.setRotationOverwrite()andDGPrinter.setMirrorOverwrite(). They must take aGraph, not aGraphPrinter.Doc, add return type to
DG.findEdge().Added
bindep.txtandrequirements.txtto make installation of dependencies much easier. The installation instructions are updated with a Quick Start guide and notes on the use of the dependency files.CMake, default
BUILD_EXAMPLES=on.
14.5. v0.10.0 (2020-02-05)¶
14.5.1. Incompatible Changes¶
dg::DG::abstract/dgAbstracthas been removed. Usedg::Builder::addAbstract()/DGBuilder.addAbstract()instead. Added slightly better documentation as well, Abstract Derivation Graphs.dg::DG::derivationshas been removed. Use the repeated calls todg::Builder::addDerivation()instead.dg::DG::ruleCompanddg::DG::calc()has been removed. Use the newdg::Builder::execute()instead.dgRuleCompandDG.calchas been deprecated, and their implementation is now based onDGBuilder.execute(). UseDGBuilder.execute()directly instead.The implementation of
dgDerivationshas changed and the function is now deprecated. Use repeated calls toDGBuilder.addDerivation()instead.dg::Strategy::makeAdd()overloads,DGStrat.makeAddStatic(), andDGStrat.makeAddDynamic()now requires another argument of typeIsomorphismPolicy/IsomorphismPolicy.Add Subset and Add Universe now accepts a new optional keyword argument
graphPolicyof typeIsomorphismPolicy.dg::DG::list/DG.listhas been removed, usedg::ExecuteResult::list()/DGExecuteResult.list()instead.Information from strategies has been updated.
14.5.2. New Features¶
Added new incremental build interface for
DG/dg::DG. It includes:DG.__init__()/dg::DG::make()for constructing a derivation graph with this new interface.DG.build()/dg::DG::build()for obtaining an RAII-style proxy object for controlling the construction (DGBuilder/dg::Builder).
Added
Derivations/Derivationsas an alternative toDerivation/Derivationwhich contains a list of rules instead of at most a single rule. The latter is implicitly convertible to the former.Rulenow has an overloaded operator<.IsomorphismPolicy/IsomorphismPolicyhas been added to help configure various algorithms by users.Added
MOD_NO_DEPRECATEDto make it easier to find usage of deprecated behaviour.Added
Rule.isomorphicLeftRight()/rule::Rule::isomorphicLeftRight().
14.5.3. Bugs Fixed¶
Changed assert to a proper error message at code related to Open Babel. If MØD, or an extension library, is loaded with
dlopenwithout theRTLD_GLOBALflag, there can be multiple copies of Open Babel symbols at the same time, which prevent MØD from accessing Open Babel operations..Document and check precondition on
dg::DG::HyperEdge::getInverse()/DGHyperEdge.inverse, that it is only avilable after the DG is locked.Properly throw an exception if
DGStrat.makeSequence()/dg::Strategy::makeSequence()if given an empty list of strategies.Properly implementing stringification of
LabelType/LabelType,LabelRelation/LabelRelation,LabelSettings/LabelSettings, andIsomorphismPolicy/IsomorphismPolicy.Build: disallow use of experimental Boost CMake support due to a linking problem.
14.5.4. Other¶
Various fixes for documentation formatting including new themeing.
Installation, highlight the more relevant
CMAKE_PREFIX_PATHinstead ofCMAKE_PROGRAM_PATH.Bump recommended lower bound on GCC version to 6.1 in the documentation.
Updated documentation for
mod::Derivation/Derivation.Documentation, added explicit example section.
14.6. v0.9.0 (2019-08-02)¶
14.6.1. Incompatible Changes¶
Change to CMake as build system. See Installation for how to build the package, or used it as a submodule in another CMake project.
Now requires v0.4 of GraphCanon (and PermGroup).
dg::DG::getGraphDatabase()now returns astd::vectorinstead of astd::unordered_set.Hide internal symbols in the library to increase optimization opportunities, and hide symbols in library dependencies. Libraries linking against libmod may stop linking, but configuration options has been added to disable symbol hiding.
14.6.2. New Features¶
dgDump/dg::DG::dumpshould now be much, much faster in parsing the input file and loading the contained derivation graph.dgRuleComp/dg::DG::ruleCompshould now be much faster during calculation.Added
Graph.instantiateStereo()/graph::Graph::instantiateStereo().Added
rngReseed()/rngReseed().
14.6.3. Bugs Fixed¶
Fixed off-by-one error in DG dump loading,
dgDump/dg::DG::dump.Fixed issues with
autoin function signatures which is not yet in the C++ standard.
14.6.4. Other¶
The functions
prefixFilename(),pushFilePrefix(), andpopFilePrefix()used by theinclude()function are now documented. A new classCWDPathhas been added.Use interprocedural/link-time optimization as default. It can be disabled with a configuration option.
14.7. v0.8.0 (2019-04-04)¶
14.7.1. Incompatible Changes¶
Now requires v0.3 of GraphCanon (and PermGroup).
graph::Graph::getMolarMass/Graph.molarMasshas been removed.Python interface: remove auto-generated hash-functions from all classes. Note, most code broken by this was already silemtly broken.
Python interface: consistently disable all custom attributes on all classes.
Removed
dg::Strategy::GraphState::getHyperEdges/DGStratGraphState.hyperEdges. Use the graph interface ofdg::DG/DGinstead.All atoms, including hydrogens, are now present with ids in strings from
graph::Graph::getSmilesWithIds()/Graph.smilesWithIds.dg::DG::print()/DG.printnow returns a pair of strings, instead of just one string. The first entry is the old return value. The second entry is the tex-file to depend on for layout coordinates.SMILES parsing: disallow isotope 0 as it is equivalent to not specifying an isotope.
All classes in the Python interface without a custom hash function has their hash function removed. This is to prevent inconsistencies between hash and equality.
14.7.2. New Features¶
Added support for isotopes (see Molecule Encoding).
Added optional
printInfoparameter todg::DG::calc/DG.calc. to allow disabling of messages to stdout during calculation.The graph interface on
dg::DG/DGcan now be used before and during calculation.Added include of the PGFPlots package in the summary preamble.
Added
AtomId::symbol()/AtomId.symbol.Added an
addparameter tographGMLString,graphGML,graphDFS,smiles,ruleGMLString, andruleGML. It controls whether the graph/rule is appended toinputGraphs/inputRulesor not. It defaults toTrue.Add
graph::Graph::getGraphDFSWithIds()/Graph.graphDFSWithIdsfor getting a string annotated with the internal vertex ids in form of the class labels. This mirrors the previously addedgraph::Graph::getSmilesWithIds()/Graph.smilesWithIds.Improve error messages from GML parsing of lists.
Changed the return type of
dg::DG::getGraphDatabase()from a std::set to a std::unordered_set.dg::DG::HyperEdge::print()/DGHyperEdge.print()now returns a list of file data.The vertices and edges of all graph interfaces now have a conversion to bool:
graph::Graph::Vertex/Graph.Vertex,graph::Graph::Edge/Graph.Edgerule::Rule::LeftGraph::Vertex/Rule.LeftGraph.Vertex,rule::Rule::LeftGraph::Edge/Rule.LeftGraph.Edgerule::Rule::ContextGraph::Vertex/Rule.ContextGraph.Vertex,rule::Rule::ContextGraph::Edge/Rule.ContextGraph.Edgerule::Rule::RightGraph::Vertex/Rule.RightGraph.Vertex,rule::Rule::RightGraph::Edge/Rule.RightGraph.Edge
The vertices of all graph interfaces now have a proper hash support.
Added
dg::Printer::setRotationOverwrite()/DGPrinter.setRotationOverwrite()anddg::Printer::setMirrorOverwrite()/DGPrinter.setMirrorOverwrite().
14.7.3. Bugs Fixed¶
Throw
InputError/InputErrorwhen loading a DG dump when a rule in the dump can not be linked to a rule from the user.Fix molecule decoding of atoms with negative charge and a radical.
Fix dangling reference bug in first-order term handling.
Fix inifiinite loop bug in first-order term handling.
Remove extraneous template parameter lists to make it compile on GCC 8.
Fix the documentation of
Graph.minExternalId,Graph.maxExternalId,Rule.minExternalId, andRule.maxExternalId. It was not being rendered.Fixed documentation of the constructor for
AtomData.Fix dangling references in morphism callbacks.
Make sure Open Babel is not called in some cases where it is not needed.
Find the library file for Boost.Python for Boost >= 1.67.
Fix ambiguity between variadic arguments and function parameter packs, making term morphisms and stereo morphisms slow.
Removed sanity check from GraphDFS loading which dominated the run time.
Document
inputGraphsandinputRules.
14.7.4. Other¶
Now compiles with
-fno-stack-protector(some OS distributions messes with default flags).The Makefile from
mod --get-latexnow cleans.vrb,.snm, and.navfiles as well.
14.8. v0.7.0 (2018-03-08)¶
14.8.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.printnow 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
DerivationRefhas now been removed along withDG.derivationsin the Python interface.The previously deprecated method
DG.vertexGraphsin the Python interface has been removed.
14.8.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.printnow returns the name of the PDF-file that will be created in post-processing.Add
dg::Printer::setWithInlineGraphs()/DGPrinter.withInlineGraphsto 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
inlineas 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.smilesWithIdsfor getting a string annotated with the internal vertex ids in form of the class labels.The automorphism group of each graph is now available.
14.8.3. Experimental New Features¶
Vertex/edge labels in graphs/rules can now be interpreted as first-order terms. Syntactic unification is then performed during morphism finding. See where
LabelSettings/LabelSettingsis being used. Each rule has an optionalLabelType/LabelTypeto signify whether it was designed for use withLabelType::String/LabelType.StringorLabelType::Term/LabelType.Term. Some algorithms will check this property for safety reasons, but the check can be disbled.There is now a prototype-implementation of http://doi.org/10.1007/978-3-319-61470-0_4, for adding stereo-information to graphs/rules. Use
LabelSettings/LabelSettingsobjects to enable it. See the paper for examples on how to use it. The full framework will be implemented and documented in a future version.
14.8.4. Bugs Fixed¶
Multiple rules for the same derivation is now properly recorded.
Fix documentation of
rule::Rule::makeInverse()/Rule.makeInverse, it throwsLogicError/LogicErrornotInputError/InputError.Set the name of a rule from
rule::Rule::makeInverse()/Rule.makeInverseto something more descriptive.Fix graph/rule depiction bug with non-zero rotation.
Fix DG dump loading to also load derivations with no rules.
Don’t crash when trying
dg::DG::findVertex()/DG.findVertexwith a graph not in the derivation graph.Don’t crash when trying to print derivations with multiple rules.
Fix documentation formatting errors.
#2, throw exceptions from
dg::DG::ruleComp/dgRuleCompanddg::DG::calc/DG.calcwhen isomorphic graphs are given.Throw more appropriate exception if
dg::DG::print()/DG.printis called beforedg::DG::calc/DG.calc.Various issues in graph/rule depiction related to positioning of hydrogens, charges, etc.
Build system: give better error messages if a file is given where a path is expected.
The produced SMILES strings are now truely canonical, as the new GraphCanon library is used.
Fix
AtomData/AtomDatato properly print radicals on uncharged atoms.Throw more friendly exceptions when loading graphs/rules that have loop/parallel edges.
14.8.5. Other¶
The documentation now has a “Known Issues” section, describing an issue where post-processing may fail if
pdflatexhas been upgraded after installation
14.9. v0.6.0 (2016-12-22)¶
14.9.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
constrainAdjmust 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 withdg::DG::HyperEdge/DGHyperEdge.Change
DG::getDerivationRefintodg::DG::findEdge()/DG.findEdge.Make
DG.derivationsreturn 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::inDerivationsandDG::outDerivations.Deprecate
DG::vertexGraphsin Python, remove in C++.
Move the graph interface for DG and Graph into separate headers:
DGGraphInterface.handGraphGraphInterface.h.Move
GraphPrinterinto a separate header.Move
DGPrinterandDGPrintDatainto a separate header.All SBML features have been removed from the library.
The deprecated
DG::printMatrixfunction has been removed.dg::DG::calc/DG.calcwill no longer print a message when it is done.dg::DG::print()/DG.printby default now only prints the hypergraph rendering. (For now, setConfig::DG::printNonHyperto enable printing of the non-hypergraph rendering)graph::Graph::print()/Graph.printandrule::Rule::print()/Rule.printwill 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.
14.9.2. New Features¶
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
-vas alias for--versionin 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.
14.9.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
constrainAdjduring certain types of rule composition.Properly handle empty vertex/hyperedge ranges for DGs. Thanks to Robert Haas for reporting.
14.10. v0.5.0 (2016-03-07)¶
Initial public version.