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 the left, context See rule/GraphInterface for details of how to use these four graph interfaces.

id

(Read-only) The unique instance id among all Rule instances.

Type

int

left

(Read-only) A proxy object representing the left graph of the rule.

Type

LeftGraph

context

(Read-only) A proxy object representing the context graph of the rule.

Type

ContextGraph

right

(Read-only) A proxy object representing the right graph of the rule.

Type

RightGraph

makeInverse()
Returns

a rule representing the inversion of this rule.

Return type

Rule

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 and second. If first and second 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 to first.

  • 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. If first and second are the same, the two file prefixes are equal.

Return type

tuple[str, str]

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

str

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

str

Raises

LogicError when coordinates are requested, but none can be generated.

name

The name of the rule. The default name includes the unique instance id.

Type

str

labelType

(Read-only) The intended label type for this rule, or None if no specific label type is intended.

Type

LabelType

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
  • other (Rule) – the other Rule for comparison.

  • 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 most maxNumMatches.

Return type

int

monomorphism(host, maxNumMatches=1, labelSettings=LabelSettings(LabelType.String, LabelRelation.Isomorphism))
Parameters
  • host (Rule) – the host Rule to check for subgraphs.

  • 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 most maxNumMatches.

Return type

int

isomorphicLeftRight(other, labelSettings=LabelSettings(LabelType.String, LabelRelation.Isomorphism))
Parameters
  • other (Rule) – the other Rule for comparison.

  • 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

bool

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.

Parameters

id (int) – the external id to find the vertex descriptor for.

Returns

the vertex descriptor for the given external id. The descriptor is null if the external id was not used.

Return type

Vertex

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

int

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
  • s (str) – the GML string to load a rule from.

  • f (str or CWDPath) – name of the GML file to be loaded.

  • invert (bool) – whether or not to invert the loaded rule.

  • add (bool) – whether to append the rule to inputRules or not.

Returns

the rule in the GML string, possibly inverted.

Return type

Rule

static Rule.fromDFS(s, invert=False, add=True)

Load a rule from a RuleDFS string.

Parameters
  • s (str) – the RuleDFS string to parse.

  • invert (bool) – whether or not to invert the loaded rule.

  • name (str) – the name of the rule. If none is given the default name is used.

  • add (bool) – whether to append the rule to inputRules or not.

Returns

the loaded rule.

Return type

Rule

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().

mod.inputRules

A list of rules to which explicitly loaded rules as default are appended.

Type

list[Rule]