4.1.12.4. rule/Rule¶
- class mod.Rule¶
This class models a graph transformation rule in the Double Pushout formalism, as the span \(L \leftarrow K \rightarrow R\). The three graphs are referred to as respectively the “left”, “context”, and “right” graphs of the rule. See Graph, Rule, and Molecule Model for more details.
The class implements the
protocols.Graph
protocol, which gives access to a graph view of the rule which has the left, context, and right graphs combined into a single graph, called the core graph. In addition to the combined graph view that this claas offers, there are also three graph views representing theleft
,context
See rule/GraphInterface for details of how to use these four graph interfaces.- context¶
(Read-only) A proxy object representing the context graph of the rule.
- Type
- right¶
(Read-only) A proxy object representing the right graph of the rule.
- Type
- makeInverse()¶
- Returns
a rule representing the inversion of this rule.
- Return type
- Raises
LogicError
if inversion is not possible (due to matching constraints).
- print(printCombined=False)¶
- print(first, second=None, printCombined=False)
Print the rule, using either the default options or the options in
first
andsecond
. Iffirst
andsecond
are the same, only one depiction will be made.- Parameters
first (GraphPrinter) – the printing options used for the first depiction.
second (GraphPrinter) – the printing options used for the second depiction. If it is
None
then it is set tofirst
.printCombined (bool) – whether a depiction of the rule as a single combined graph is printed.
- Returns
a pair of filename prefixes for the PDF-files that will be compiled in post-processing. The actual names can be obtained by appending
_L.pdf
,_K.pdf
, and_R.pdf
for respectively the left side, context, and right side graphs. Iffirst
andsecond
are the same, the two file prefixes are equal.- Return type
- printTermState()¶
Print the term state for the rule.
- getGMLString(withCoords=False)¶
- Returns
the GML representation of the rule, optionally with generated 2D coordinates.
- Return type
- Raises
LogicError
when coordinates are requested, but none can be generated.
- printGML(withCoords=False)¶
Print the rule in GML format, optionally with generated 2D coordinates.
- Returns
the filename of the printed GML file.
- Return type
- Raises
LogicError
when coordinates are requested, but none can be generated.
- labelType¶
(Read-only) The intended label type for this rule, or None if no specific label type is intended.
- Type
- numLeftComponents¶
(Read-only) The number of connected components of the left graph.
- Type
std::size_t
- numRightComponents¶
(Read-only) The number of connected components of the right graph.
- Type
std::size_t
- isomorphism(other, maxNumMatches=1, labelSettings=LabelSettings(LabelType.String, LabelRelation.Isomorphism))¶
- Parameters
maxNumMatches (int) – the maximum number of isomorphisms to search for.
labelSettings (LabelSettings) – the label settings to use during the search.
- Returns
the number of isomorphisms found between
other
and this rule, but at mostmaxNumMatches
.- Return type
- monomorphism(host, maxNumMatches=1, labelSettings=LabelSettings(LabelType.String, LabelRelation.Isomorphism))¶
- Parameters
maxNumMatches (int) – the maximum number of morphisms to search for.
labelSettings (LabelSettings) – the label settings to use during the search.
- Returns
the number of monomorphisms from this rule to subgraphs of
host
, though at mostmaxNumMatches
.- Return type
- isomorphicLeftRight(other, labelSettings=LabelSettings(LabelType.String, LabelRelation.Isomorphism))¶
- Parameters
labelSettings (LabelSettings) – the label settings to use during the search.
- Returns
whether the left-hand sides are isomorphic and the right-hand sides are isomorphic.
- Return type
- getVertexFromExternalId(id)¶
If the rule was not loaded from an external data format, then this function always return a null descriptor.
Note
In general there is no correlation between external and internal ids.
- minExternalId¶
- maxExternalId¶
If the rule was not loaded from an external data format, then these attributes are always return 0. Otherwise, they are the minimum/maximum external id from which non-null vertices can be obtained from
getVertexFromExternalId()
. If no such minimum and maximum exists, then they are 0.- Type
4.1.12.4.1. Loading Functions¶
- static Rule.fromGMLString(s, invert=False, add=True)¶
- static Rule.fromGMLFile(f, invert=False, add=True)¶
Load a rule from a GML string or file, and maybe store it in a global list. The name of the rule is the one specified in the GML string, though when
invert=True
the string “, inverse” is appended to the name.Note
If the GML string/file specifies matching constraints it is currently not possible to invert the rule. There is however a configuration option to ignore matching constraints when inverting rules.
- Parameters
- Returns
the rule in the GML string, possibly inverted.
- Return type
- static Rule.fromDFS(s, invert=False, add=True)¶
Load a rule from a RuleDFS string.
- Parameters
- Returns
the loaded rule.
- Return type
- Raises
InputError
on bad input.
- mod.ruleGMLString(s, invert=False, add=True)¶
Alias of
Rule.fromGMLString()
.
- mod.ruleGML(f, invert=False, add=True)¶
Alias of
Rule.fromGMLFile()
.