Core
momapy.core
Core dataclasses for maps, models, and layouts.
Modules:
| Name | Description |
|---|---|
elements |
Base element classes for maps. |
fonts |
Font file lookup using uharfbuzz for metadata reading. |
layout |
Layout element hierarchy: all visual element classes. |
map |
Top-level Map class. |
mapping |
Layout-model mapping classes. |
model |
Abstract model base class. |
Classes:
| Name | Description |
|---|---|
Arc |
Base class for arcs. |
Direction |
Cardinal direction a layout element points to. |
DoubleHeadedArc |
Base class for double-headed arcs. |
GroupLayout |
Base class for group layouts. |
HAlignment |
Horizontal alignment of text or content. |
Layout |
Class for layouts. |
LayoutElement |
Abstract base class for layout elements. |
LayoutModelMapping |
Mapping between model elements and layout elements. |
LayoutModelMappingBuilder |
Mutable builder for LayoutModelMapping. |
Map |
Class for maps. |
MapElement |
Base class for map elements. |
Model |
Abstract base class for models. |
ModelElement |
Base class for model elements. |
Node |
Class for nodes. |
Orientation |
Orientation along an axis. |
Shape |
Class for basic shapes. |
SingleHeadedArc |
Base class for single-headed arcs. |
TextLayout |
Class for text layouts. |
VAlignment |
Vertical alignment of text or content. |
Arc
dataclass
Arc(*, id_: str = make_uuid4_as_str(), layout_elements: tuple[LayoutElement, ...] = tuple(), group_fill: NoneValueType | Color | None = None, group_fill_rule: FillRule | None = None, group_filter: NoneValueType | Filter | None = None, group_font_family: str | None = None, group_font_size: float | None = None, group_font_style: FontStyle | None = None, group_font_weight: FontWeight | float | None = None, group_stroke: NoneValueType | Color | None = None, group_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, group_stroke_dashoffset: NoneValueType | float | None = None, group_stroke_width: NoneValueType | float | None = None, group_text_anchor: TextAnchor | None = None, group_transform: NoneValueType | tuple[Transformation, ...] | None = None, end_shorten: float = 0.0, fill: NoneValueType | Color | None = None, filter_: NoneValueType | Filter | None = None, path_fill: NoneValueType | Color | None = None, path_filter: NoneValueType | Filter | None = None, path_stroke: NoneValueType | Color | None = None, path_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, path_stroke_dashoffset: NoneValueType | float | None = None, path_stroke_width: float | None = None, path_transform: NoneValueType | tuple[Transformation, ...] | None = None, stroke: NoneValueType | Color | None = None, stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, stroke_dashoffset: NoneValueType | float | None = None, stroke_width: NoneValueType | float | None = None, segments: tuple[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc, ...] = tuple(), source: LayoutElement | None = None, start_shorten: float = 0.0, target: LayoutElement | None = None, transform: NoneValueType | tuple[Transformation, ...] | None = None)
Bases: GroupLayout
Base class for arcs.
An arc is a group layout drawn as a path connecting a source to a target, with its own path styling.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'ed420953-849b-4088-99c2-97dc67536c68'
|
layout_elements
|
tuple[LayoutElement, ...]
|
The sub-layout elements of the group layout. These are part of the children of the group layout |
<dynamic>
|
group_fill
|
NoneValueType | Color | None
|
The fill color of the group layout |
None
|
group_fill_rule
|
FillRule | None
|
The fill rule of the group layout |
None
|
group_filter
|
NoneValueType | Filter | None
|
The filter of the group layout |
None
|
group_font_family
|
str | None
|
The font family of the group layout |
None
|
group_font_size
|
float | None
|
The font size of the group layout |
None
|
group_font_style
|
FontStyle | None
|
The font style of the group layout |
None
|
group_font_weight
|
FontWeight | float | None
|
The font weight of the group layout |
None
|
group_stroke
|
NoneValueType | Color | None
|
The stroke color of the group layout |
None
|
group_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the group layout |
None
|
group_stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the group layout |
None
|
group_stroke_width
|
NoneValueType | float | None
|
The stroke width of the group layout |
None
|
group_text_anchor
|
TextAnchor | None
|
The text anchor of the group layout |
None
|
group_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the group layout |
None
|
end_shorten
|
float
|
The length the end of the arc will be shorten by |
0.0
|
fill
|
NoneValueType | Color | None
|
The fill color of the arc |
None
|
filter_
|
NoneValueType | Filter | None
|
The filter of the arc |
None
|
path_fill
|
NoneValueType | Color | None
|
The path fill color of the arc |
None
|
path_filter
|
NoneValueType | Filter | None
|
The path filter of the arc |
None
|
path_stroke
|
NoneValueType | Color | None
|
The path stroke color of the arc |
None
|
path_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The path stroke dasharray of the arc |
None
|
path_stroke_dashoffset
|
NoneValueType | float | None
|
The path stroke dashoffset of the arc |
None
|
path_stroke_width
|
float | None
|
The path stroke width of the arc |
None
|
path_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The path transform of the arc |
None
|
stroke
|
NoneValueType | Color | None
|
The stroke color of the arc |
None
|
stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the arc |
None
|
stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the arc |
None
|
stroke_width
|
NoneValueType | float | None
|
The stroke width of the arc |
None
|
segments
|
tuple[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc, ...]
|
The path segments of the arc |
<dynamic>
|
source
|
LayoutElement | None
|
The source of the arc |
None
|
start_shorten
|
float
|
The length the start of the arc will be shorten by |
0.0
|
target
|
LayoutElement | None
|
The target of the arc |
None
|
transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the arc |
None
|
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
bbox |
Compute and return the bounding box of the group layout element. |
childless |
Return a copy of the arc with no children. |
children |
Return the children of the group layout. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the group layout. |
end_point |
Return the ending point of the arc. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
fraction |
Return the position and angle on the arc at a given fraction (of the total arc length). |
length |
Return the total length of the arc path. |
own_bbox |
Compute and return the bounding box of the self drawing element of the group layout. |
own_children |
Return the self children of the arc. |
own_drawing_elements |
Return the self drawing elements of the group layout. |
own_to_geometry |
Return a list of geometry primitives from the self drawing elements. |
points |
Return the points of the arc path. |
start_point |
Return the starting point of the arc. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
anchor_point
anchor_point(anchor_name: str) -> Point
bbox
bbox() -> Bbox
Compute and return the bounding box of the group layout element.
Source code in src/momapy/core/layout.py
childless
children
children() -> list[LayoutElement]
Return the children of the group layout.
These are the self children of the group layout (returned by the own_children method) and the other children of the group layout (given by the layout_elements attribute).
Source code in src/momapy/core/layout.py
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
drawing_elements() -> list[DrawingElement]
Return the drawing elements of the group layout.
The returned drawing elements are a group drawing element formed of the self drawing elements of the group layout and the drawing elements of its children.
Source code in src/momapy/core/layout.py
end_point
end_point() -> Point
Return the ending point of the arc.
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
fraction
fraction(fraction: float) -> tuple[Point, float]
Return the position and angle on the arc at a given fraction (of the total arc length).
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
Source code in src/momapy/core/layout.py
length
own_bbox
own_bbox() -> Bbox
Compute and return the bounding box of the self drawing element of the group layout.
Source code in src/momapy/core/layout.py
own_children
own_children() -> list[LayoutElement]
own_drawing_elements
abstractmethod
own_drawing_elements() -> list[DrawingElement]
own_to_geometry
own_to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the self drawing elements.
Source code in src/momapy/core/layout.py
points
points() -> list[Point]
Return the points of the arc path.
An arc with no segments has no points and returns an empty list.
Source code in src/momapy/core/layout.py
start_point
start_point() -> Point
Return the starting point of the arc.
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
Direction
Bases: Enum
Cardinal direction a layout element points to.
One of the four cardinals (up, right, down, left). For an axis (horizontal
or vertical), see Orientation.
DoubleHeadedArc
dataclass
DoubleHeadedArc(*, id_: str = make_uuid4_as_str(), layout_elements: tuple[LayoutElement, ...] = tuple(), group_fill: NoneValueType | Color | None = None, group_fill_rule: FillRule | None = None, group_filter: NoneValueType | Filter | None = None, group_font_family: str | None = None, group_font_size: float | None = None, group_font_style: FontStyle | None = None, group_font_weight: FontWeight | float | None = None, group_stroke: NoneValueType | Color | None = None, group_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, group_stroke_dashoffset: NoneValueType | float | None = None, group_stroke_width: NoneValueType | float | None = None, group_text_anchor: TextAnchor | None = None, group_transform: NoneValueType | tuple[Transformation, ...] | None = None, end_shorten: float = 0.0, fill: NoneValueType | Color | None = None, filter_: NoneValueType | Filter | None = None, path_fill: NoneValueType | Color | None = None, path_filter: NoneValueType | Filter | None = None, path_stroke: NoneValueType | Color | None = None, path_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, path_stroke_dashoffset: NoneValueType | float | None = None, path_stroke_width: float | None = None, path_transform: NoneValueType | tuple[Transformation, ...] | None = None, stroke: NoneValueType | Color | None = None, stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, stroke_dashoffset: NoneValueType | float | None = None, stroke_width: NoneValueType | float | None = None, segments: tuple[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc, ...] = tuple(), source: LayoutElement | None = None, start_shorten: float = 0.0, target: LayoutElement | None = None, transform: NoneValueType | tuple[Transformation, ...] | None = None, end_arrowhead_fill: NoneValueType | Color | None = None, end_arrowhead_filter: NoneValueType | Filter | None = None, end_arrowhead_stroke: NoneValueType | Color | None = None, end_arrowhead_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, end_arrowhead_stroke_dashoffset: NoneValueType | float | None = None, end_arrowhead_stroke_width: NoneValueType | float | None = None, end_arrowhead_transform: NoneValueType | tuple[Transformation, ...] | None = None, start_arrowhead_fill: NoneValueType | Color | None = None, start_arrowhead_filter: NoneValueType | Filter | None = None, start_arrowhead_stroke: NoneValueType | Color | None = None, start_arrowhead_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, start_arrowhead_stroke_dashoffset: NoneValueType | float | None = None, start_arrowhead_stroke_width: NoneValueType | float | None = None, start_arrowhead_transform: NoneValueType | tuple[Transformation, ...] | None = None)
Bases: Arc
Base class for double-headed arcs.
A double-headed arc is formed of a path and two arrowheads, one at the start of the path and one at its end.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'43533711-e5f3-400d-8e1f-11f0dcd619b9'
|
layout_elements
|
tuple[LayoutElement, ...]
|
The sub-layout elements of the group layout. These are part of the children of the group layout |
<dynamic>
|
group_fill
|
NoneValueType | Color | None
|
The fill color of the group layout |
None
|
group_fill_rule
|
FillRule | None
|
The fill rule of the group layout |
None
|
group_filter
|
NoneValueType | Filter | None
|
The filter of the group layout |
None
|
group_font_family
|
str | None
|
The font family of the group layout |
None
|
group_font_size
|
float | None
|
The font size of the group layout |
None
|
group_font_style
|
FontStyle | None
|
The font style of the group layout |
None
|
group_font_weight
|
FontWeight | float | None
|
The font weight of the group layout |
None
|
group_stroke
|
NoneValueType | Color | None
|
The stroke color of the group layout |
None
|
group_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the group layout |
None
|
group_stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the group layout |
None
|
group_stroke_width
|
NoneValueType | float | None
|
The stroke width of the group layout |
None
|
group_text_anchor
|
TextAnchor | None
|
The text anchor of the group layout |
None
|
group_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the group layout |
None
|
end_shorten
|
float
|
The length the end of the arc will be shorten by |
0.0
|
fill
|
NoneValueType | Color | None
|
The fill color of the arc |
None
|
filter_
|
NoneValueType | Filter | None
|
The filter of the arc |
None
|
path_fill
|
NoneValueType | Color | None
|
The path fill color of the arc |
None
|
path_filter
|
NoneValueType | Filter | None
|
The path filter of the arc |
None
|
path_stroke
|
NoneValueType | Color | None
|
The path stroke color of the arc |
None
|
path_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The path stroke dasharray of the arc |
None
|
path_stroke_dashoffset
|
NoneValueType | float | None
|
The path stroke dashoffset of the arc |
None
|
path_stroke_width
|
float | None
|
The path stroke width of the arc |
None
|
path_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The path transform of the arc |
None
|
stroke
|
NoneValueType | Color | None
|
The stroke color of the arc |
None
|
stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the arc |
None
|
stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the arc |
None
|
stroke_width
|
NoneValueType | float | None
|
The stroke width of the arc |
None
|
segments
|
tuple[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc, ...]
|
The path segments of the arc |
<dynamic>
|
source
|
LayoutElement | None
|
The source of the arc |
None
|
start_shorten
|
float
|
The length the start of the arc will be shorten by |
0.0
|
target
|
LayoutElement | None
|
The target of the arc |
None
|
transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the arc |
None
|
end_arrowhead_fill
|
NoneValueType | Color | None
|
The end arrowhead fill color of the arc |
None
|
end_arrowhead_filter
|
NoneValueType | Filter | None
|
The end arrowhead filter of the arc |
None
|
end_arrowhead_stroke
|
NoneValueType | Color | None
|
The end arrowhead stroke color of the arc |
None
|
end_arrowhead_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The end arrowhead stroke dasharray of the arc |
None
|
end_arrowhead_stroke_dashoffset
|
NoneValueType | float | None
|
The end arrowhead stroke dashoffset of the arc |
None
|
end_arrowhead_stroke_width
|
NoneValueType | float | None
|
The end arrowhead stroke width of the arc |
None
|
end_arrowhead_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The end arrowhead transform of the arc |
None
|
start_arrowhead_fill
|
NoneValueType | Color | None
|
The start arrowhead fill color of the arc |
None
|
start_arrowhead_filter
|
NoneValueType | Filter | None
|
The start arrowhead filter of the arc |
None
|
start_arrowhead_stroke
|
NoneValueType | Color | None
|
The start arrowhead stroke color of the arc |
None
|
start_arrowhead_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The start arrowhead stroke dasharray of the arc |
None
|
start_arrowhead_stroke_dashoffset
|
NoneValueType | float | None
|
The start arrowhead stroke dashoffset of the arc |
None
|
start_arrowhead_stroke_width
|
NoneValueType | float | None
|
The start arrowhead stroke width of the arc |
None
|
start_arrowhead_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The start arrowhead transform of the arc |
None
|
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
bbox |
Compute and return the bounding box of the group layout element. |
childless |
Return a copy of the arc with no children. |
children |
Return the children of the group layout. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the group layout. |
end_arrowhead_base |
Return the base anchor point of the double-headed arc end arrowhead. |
end_arrowhead_bbox |
Return the bounding box of the double-headed arc end arrowhead. |
end_arrowhead_border |
Return the point at the intersection of the drawing elements of the double-headed arc end arrowhead and the line going through the center of these drawing elements and the given point. |
end_arrowhead_drawing_elements |
Return the drawing elements of the double-headed arc end arrowhead. |
end_arrowhead_length |
Return the length of the double-headed arc end arrowhead. |
end_arrowhead_tip |
Return the tip anchor point of the double-headed arc end arrowhead. |
end_point |
Return the ending point of the arc. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
fraction |
Return the position and angle on the arc at a given fraction (of the total arc length). |
length |
Return the total length of the arc path. |
own_bbox |
Compute and return the bounding box of the self drawing element of the group layout. |
own_children |
Return the self children of the arc. |
own_drawing_elements |
Return the self drawing elements of the double-headed arc. These include the drawing elements of the arc path, the start arrowhead, and the end arrowhead. |
own_to_geometry |
Return a list of geometry primitives from the self drawing elements. |
path_drawing_elements |
Return the drawing elements of the double-headed arc path. |
points |
Return the points of the arc path. |
start_arrowhead_base |
Return the base anchor point of the double-headed arc start arrowhead. |
start_arrowhead_bbox |
Return the bounding box of the double-headed arc start arrowhead. |
start_arrowhead_border |
Return the point at the intersection of the drawing elements of the double-headed arc start arrowhead and the line going through the center of these drawing elements and the given point. |
start_arrowhead_drawing_elements |
Return the drawing elements of the double-headed arc start arrowhead. |
start_arrowhead_length |
Return the length of the double-headed arc start arrowhead. |
start_arrowhead_tip |
Return the tip anchor point of the double-headed arc start arrowhead. |
start_point |
Return the starting point of the arc. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
anchor_point
anchor_point(anchor_name: str) -> Point
bbox
bbox() -> Bbox
Compute and return the bounding box of the group layout element.
Source code in src/momapy/core/layout.py
childless
children
children() -> list[LayoutElement]
Return the children of the group layout.
These are the self children of the group layout (returned by the own_children method) and the other children of the group layout (given by the layout_elements attribute).
Source code in src/momapy/core/layout.py
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
drawing_elements() -> list[DrawingElement]
Return the drawing elements of the group layout.
The returned drawing elements are a group drawing element formed of the self drawing elements of the group layout and the drawing elements of its children.
Source code in src/momapy/core/layout.py
end_arrowhead_base
end_arrowhead_base() -> Point
Return the base anchor point of the double-headed arc end arrowhead.
Source code in src/momapy/core/layout.py
end_arrowhead_bbox
end_arrowhead_bbox() -> Bbox
end_arrowhead_border
Return the point at the intersection of the drawing elements of the double-headed arc end arrowhead and the line going through the center of these drawing elements and the given point.
When there are multiple intersection points, the one closest to the given point is returned.
Source code in src/momapy/core/layout.py
end_arrowhead_drawing_elements
end_arrowhead_drawing_elements() -> list[DrawingElement]
Return the drawing elements of the double-headed arc end arrowhead.
Source code in src/momapy/core/layout.py
end_arrowhead_length
Return the length of the double-headed arc end arrowhead.
Source code in src/momapy/core/layout.py
end_arrowhead_tip
end_arrowhead_tip() -> Point
Return the tip anchor point of the double-headed arc end arrowhead.
Source code in src/momapy/core/layout.py
end_point
end_point() -> Point
Return the ending point of the arc.
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
fraction
fraction(fraction: float) -> tuple[Point, float]
Return the position and angle on the arc at a given fraction (of the total arc length).
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
Source code in src/momapy/core/layout.py
length
own_bbox
own_bbox() -> Bbox
Compute and return the bounding box of the self drawing element of the group layout.
Source code in src/momapy/core/layout.py
own_children
own_children() -> list[LayoutElement]
own_drawing_elements
own_drawing_elements() -> list[DrawingElement]
Return the self drawing elements of the double-headed arc. These include the drawing elements of the arc path, the start arrowhead, and the end arrowhead.
Source code in src/momapy/core/layout.py
own_to_geometry
own_to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the self drawing elements.
Source code in src/momapy/core/layout.py
path_drawing_elements
path_drawing_elements() -> list[Path]
Return the drawing elements of the double-headed arc path.
Source code in src/momapy/core/layout.py
points
points() -> list[Point]
Return the points of the arc path.
An arc with no segments has no points and returns an empty list.
Source code in src/momapy/core/layout.py
start_arrowhead_base
start_arrowhead_base() -> Point
Return the base anchor point of the double-headed arc start arrowhead.
Source code in src/momapy/core/layout.py
start_arrowhead_bbox
start_arrowhead_bbox() -> Bbox
Return the bounding box of the double-headed arc start arrowhead.
start_arrowhead_border
Return the point at the intersection of the drawing elements of the double-headed arc start arrowhead and the line going through the center of these drawing elements and the given point.
When there are multiple intersection points, the one closest to the given point is returned.
Source code in src/momapy/core/layout.py
start_arrowhead_drawing_elements
start_arrowhead_drawing_elements() -> list[DrawingElement]
Return the drawing elements of the double-headed arc start arrowhead.
Source code in src/momapy/core/layout.py
start_arrowhead_length
Return the length of the double-headed arc start arrowhead.
Source code in src/momapy/core/layout.py
start_arrowhead_tip
start_arrowhead_tip() -> Point
Return the tip anchor point of the double-headed arc start arrowhead.
Source code in src/momapy/core/layout.py
start_point
start_point() -> Point
Return the starting point of the arc.
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
GroupLayout
dataclass
GroupLayout(*, id_: str = make_uuid4_as_str(), layout_elements: tuple[LayoutElement, ...] = tuple(), group_fill: NoneValueType | Color | None = None, group_fill_rule: FillRule | None = None, group_filter: NoneValueType | Filter | None = None, group_font_family: str | None = None, group_font_size: float | None = None, group_font_style: FontStyle | None = None, group_font_weight: FontWeight | float | None = None, group_stroke: NoneValueType | Color | None = None, group_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, group_stroke_dashoffset: NoneValueType | float | None = None, group_stroke_width: NoneValueType | float | None = None, group_text_anchor: TextAnchor | None = None, group_transform: NoneValueType | tuple[Transformation, ...] | None = None)
Bases: LayoutElement
Base class for group layouts.
A group layout is a layout element grouping other layout elements, with its own drawing elements and children combined into a single group drawing element.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'29a3e580-2115-4caf-ba20-4a9ce7105956'
|
layout_elements
|
tuple[LayoutElement, ...]
|
The sub-layout elements of the group layout. These are part of the children of the group layout |
<dynamic>
|
group_fill
|
NoneValueType | Color | None
|
The fill color of the group layout |
None
|
group_fill_rule
|
FillRule | None
|
The fill rule of the group layout |
None
|
group_filter
|
NoneValueType | Filter | None
|
The filter of the group layout |
None
|
group_font_family
|
str | None
|
The font family of the group layout |
None
|
group_font_size
|
float | None
|
The font size of the group layout |
None
|
group_font_style
|
FontStyle | None
|
The font style of the group layout |
None
|
group_font_weight
|
FontWeight | float | None
|
The font weight of the group layout |
None
|
group_stroke
|
NoneValueType | Color | None
|
The stroke color of the group layout |
None
|
group_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the group layout |
None
|
group_stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the group layout |
None
|
group_stroke_width
|
NoneValueType | float | None
|
The stroke width of the group layout |
None
|
group_text_anchor
|
TextAnchor | None
|
The text anchor of the group layout |
None
|
group_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the group layout |
None
|
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
bbox |
Compute and return the bounding box of the group layout element. |
childless |
Return a copy of the layout element with no children. |
children |
Return the children of the group layout. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the group layout. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
own_bbox |
Compute and return the bounding box of the self drawing element of the group layout. |
own_children |
Return the self children of the group layout. |
own_drawing_elements |
Return the self drawing elements of the group layout. |
own_to_geometry |
Return a list of geometry primitives from the self drawing elements. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
anchor_point
anchor_point(anchor_name: str) -> Point
bbox
bbox() -> Bbox
Compute and return the bounding box of the group layout element.
Source code in src/momapy/core/layout.py
childless
abstractmethod
children
children() -> list[LayoutElement]
Return the children of the group layout.
These are the self children of the group layout (returned by the own_children method) and the other children of the group layout (given by the layout_elements attribute).
Source code in src/momapy/core/layout.py
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
drawing_elements() -> list[DrawingElement]
Return the drawing elements of the group layout.
The returned drawing elements are a group drawing element formed of the self drawing elements of the group layout and the drawing elements of its children.
Source code in src/momapy/core/layout.py
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
own_bbox
own_bbox() -> Bbox
Compute and return the bounding box of the self drawing element of the group layout.
Source code in src/momapy/core/layout.py
own_children
abstractmethod
own_children() -> list[LayoutElement]
own_drawing_elements
abstractmethod
own_drawing_elements() -> list[DrawingElement]
own_to_geometry
own_to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the self drawing elements.
Source code in src/momapy/core/layout.py
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
HAlignment
Bases: Enum
Horizontal alignment of text or content.
Selects how content is positioned along the horizontal axis.
Layout
dataclass
Layout(*, id_: str = make_uuid4_as_str(), layout_elements: tuple[LayoutElement, ...] = tuple(), group_fill: NoneValueType | Color | None = None, group_fill_rule: FillRule | None = None, group_filter: NoneValueType | Filter | None = None, group_font_family: str | None = None, group_font_size: float | None = None, group_font_style: FontStyle | None = None, group_font_weight: FontWeight | float | None = None, group_stroke: NoneValueType | Color | None = None, group_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, group_stroke_dashoffset: NoneValueType | float | None = None, group_stroke_width: NoneValueType | float | None = None, group_text_anchor: TextAnchor | None = None, group_transform: NoneValueType | tuple[Transformation, ...] | None = None, fill: NoneValueType | Color | None = NoneValue, filter_: NoneValueType | Filter | None = None, height: float, label: TextLayout | None = None, position: Point, stroke: NoneValueType | Color | None = None, stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, stroke_dashoffset: NoneValueType | float | None = None, stroke_width: NoneValueType | float | None = None, transform: NoneValueType | tuple[Transformation, ...] | None = None, width: float)
Bases: Node
Class for layouts.
A layout is the root node holding all the visual elements of a map.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'1c93e7de-4215-4b0e-8e2f-9fd69ed7c57b'
|
layout_elements
|
tuple[LayoutElement, ...]
|
The sub-layout elements of the group layout. These are part of the children of the group layout |
<dynamic>
|
group_fill
|
NoneValueType | Color | None
|
The fill color of the group layout |
None
|
group_fill_rule
|
FillRule | None
|
The fill rule of the group layout |
None
|
group_filter
|
NoneValueType | Filter | None
|
The filter of the group layout |
None
|
group_font_family
|
str | None
|
The font family of the group layout |
None
|
group_font_size
|
float | None
|
The font size of the group layout |
None
|
group_font_style
|
FontStyle | None
|
The font style of the group layout |
None
|
group_font_weight
|
FontWeight | float | None
|
The font weight of the group layout |
None
|
group_stroke
|
NoneValueType | Color | None
|
The stroke color of the group layout |
None
|
group_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the group layout |
None
|
group_stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the group layout |
None
|
group_stroke_width
|
NoneValueType | float | None
|
The stroke width of the group layout |
None
|
group_text_anchor
|
TextAnchor | None
|
The text anchor of the group layout |
None
|
group_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the group layout |
None
|
fill
|
NoneValueType | Color | None
|
The fill color of the node |
<momapy.drawing.NoneValueType object at 0x7fb1b7eb96a0>
|
filter_
|
NoneValueType | Filter | None
|
The filter of the node |
None
|
height
|
float
|
The height of the node |
required |
label
|
TextLayout | None
|
The label of the node |
None
|
position
|
Point
|
The position of the node |
required |
stroke
|
NoneValueType | Color | None
|
The stroke color of the node |
None
|
stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the node |
None
|
stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the node |
None
|
stroke_width
|
NoneValueType | float | None
|
The stroke width of the node |
None
|
transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the node |
None
|
width
|
float
|
The width of the node |
required |
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
angle |
Return the point on the border of the node that intersects the drawing elements of the node with the line passing through the center anchor point of the node and at a given angle from the horizontal. |
bbox |
Compute and return the bounding box of the group layout element. |
border |
Return the point on the border of the node that intersects the drawing elements of the node with the line formed of the center anchor point of the node and the given point. |
center |
Return the center anchor of the node. |
childless |
Return a copy of the node with no children. |
children |
Return the children of the group layout. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the group layout. |
east |
Return the east anchor of the node. |
east_north_east |
Return the east north east anchor of the node. |
east_south_east |
Return the east south east anchor of the node. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
is_sublayout |
Return |
label_center |
Return the label center anchor of the node. |
north |
Return the north anchor of the node. |
north_east |
Return the north east anchor of the node. |
north_north_east |
Return the north north east anchor of the node. |
north_north_west |
Return the north north west anchor of the node. |
north_west |
Return the north west anchor of the node. |
own_angle |
Return the point on the border of the node that intersects the self drawing elements of the node with the line passing through the center anchor point of the node and at a given angle from the horizontal. |
own_bbox |
Compute and return the bounding box of the self drawing element of the group layout. |
own_border |
Return the point on the border of the node that intersects the self drawing elements of the node with the line formed of the center anchor point of the node and the given point. |
own_children |
Return the self children of the node. A node has unique child that is its label. |
own_drawing_elements |
Return the node's own drawing elements. |
own_to_geometry |
Return a list of geometry primitives from the self drawing elements. |
size |
Return the size of the node. |
south |
Return the south anchor of the node. |
south_east |
Return the south east anchor of the node. |
south_south_east |
Return the south south east anchor of the node. |
south_south_west |
Return the south south west anchor of the node. |
south_west |
Return the south west anchor of the node. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
west |
Return the west anchor of the node. |
west_north_west |
Return the west north west anchor of the node. |
west_south_west |
Return the west south west anchor of the node. |
Attributes:
| Name | Type | Description |
|---|---|---|
x |
float
|
Return the x coordinate of the node. |
y |
float
|
Return the y coordinate of the node. |
anchor_point
anchor_point(anchor_name: str) -> Point
angle
angle(angle: float, unit: Literal['degrees', 'radians'] = 'degrees') -> Point | None
Return the point on the border of the node that intersects the drawing elements of the node with the line passing through the center anchor point of the node and at a given angle from the horizontal.
Source code in src/momapy/core/layout.py
bbox
bbox() -> Bbox
Compute and return the bounding box of the group layout element.
Source code in src/momapy/core/layout.py
border
Return the point on the border of the node that intersects the drawing elements of the node with the line formed of the center anchor point of the node and the given point.
When there are multiple intersection points, the one closest to the given point is returned.
Source code in src/momapy/core/layout.py
center
center() -> Point
childless
children
children() -> list[LayoutElement]
Return the children of the group layout.
These are the self children of the group layout (returned by the own_children method) and the other children of the group layout (given by the layout_elements attribute).
Source code in src/momapy/core/layout.py
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
drawing_elements() -> list[DrawingElement]
Return the drawing elements of the group layout.
The returned drawing elements are a group drawing element formed of the self drawing elements of the group layout and the drawing elements of its children.
Source code in src/momapy/core/layout.py
east
east() -> Point
east_north_east
east_north_east() -> Point
Return the east north east anchor of the node.
Source code in src/momapy/core/layout.py
east_south_east
east_south_east() -> Point
Return the east south east anchor of the node.
Source code in src/momapy/core/layout.py
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
is_sublayout
is_sublayout(other: Layout, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout is a sublayout of another given layout, False otherwise.
Source code in src/momapy/core/layout.py
label_center
label_center() -> Point
north
north() -> Point
north_east
north_east() -> Point
Return the north east anchor of the node.
Source code in src/momapy/core/layout.py
north_north_east
north_north_east() -> Point
Return the north north east anchor of the node.
Source code in src/momapy/core/layout.py
north_north_west
north_north_west() -> Point
Return the north north west anchor of the node.
Source code in src/momapy/core/layout.py
north_west
north_west() -> Point
Return the north west anchor of the node.
Source code in src/momapy/core/layout.py
own_angle
own_angle(angle: float, unit: Literal['degrees', 'radians'] = 'degrees') -> Point | None
Return the point on the border of the node that intersects the self drawing elements of the node with the line passing through the center anchor point of the node and at a given angle from the horizontal.
Source code in src/momapy/core/layout.py
own_bbox
own_bbox() -> Bbox
Compute and return the bounding box of the self drawing element of the group layout.
Source code in src/momapy/core/layout.py
own_border
Return the point on the border of the node that intersects the self drawing elements of the node with the line formed of the center anchor point of the node and the given point.
When there are multiple intersection points, the one closest to the given point is returned.
Source code in src/momapy/core/layout.py
own_children
own_children() -> list[LayoutElement]
Return the self children of the node. A node has unique child that is its label.
own_drawing_elements
own_drawing_elements() -> list[DrawingElement]
Return the node's own drawing elements.
Source code in src/momapy/core/layout.py
own_to_geometry
own_to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the self drawing elements.
Source code in src/momapy/core/layout.py
size
south
south() -> Point
south_east
south_east() -> Point
Return the south east anchor of the node.
Source code in src/momapy/core/layout.py
south_south_east
south_south_east() -> Point
Return the south south east anchor of the node.
Source code in src/momapy/core/layout.py
south_south_west
south_south_west() -> Point
Return the south south west anchor of the node.
Source code in src/momapy/core/layout.py
south_west
south_west() -> Point
Return the south west anchor of the node.
Source code in src/momapy/core/layout.py
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
west
west() -> Point
west_north_west
west_north_west() -> Point
Return the west north west anchor of the node.
Source code in src/momapy/core/layout.py
west_south_west
west_south_west() -> Point
Return the west south west anchor of the node.
Source code in src/momapy/core/layout.py
LayoutElement
dataclass
Bases: MapElement, ABC
Abstract base class for layout elements.
Common ancestor of every element carrying the visual information of a map.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'd6fe6e30-9d57-4758-b767-a2360053346f'
|
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
bbox |
Compute and return the bounding box of the layout element. |
childless |
Return a copy of the layout element with no children. |
children |
Return the children of the layout element. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the layout element. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
anchor_point
anchor_point(anchor_name: str) -> Point
bbox
abstractmethod
bbox() -> Bbox
childless
abstractmethod
children
abstractmethod
children() -> list[LayoutElement]
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
abstractmethod
drawing_elements() -> list[DrawingElement]
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
LayoutModelMapping
Bases: FrozenIdentitySurjectionDict
Mapping between model elements and layout elements.
A Map can draw the same model element several times, so the relation between layouts and model elements is a many-to-one mapping whose keys are layout elements and whose values are model elements. Two kinds of keys are used:
- Singleton key — a single LayoutElement that represents a model element on its own (a macromolecule glyph, a compartment, a state variable, a modulation arc when no cluster is needed).
- Frozenset key — a
frozensetof several layout elements that jointly represent one model element. Used whenever a model concept is drawn as a cluster of shapes: a process and its participant arcs and target layouts, a logical operator and its input arcs and targets, a modulation arc with its source and target clusters, a tag or terminal with its reference arcs.
When the key is a frozenset, it is useful to designate one of the
layouts as the representative — the element that stands for the cluster
on its own. The representative is typically the "central" layout (the
process glyph for a process, the operator glyph for a logical
operator, the modulation arc for a modulation, the tag glyph for a
tag). Representatives are registered through the representative argument of
add_mapping. Once registered,
get_mapping resolves the representative back to the model element
stored under the frozenset key, and other composite keys can
reference the cluster by its representative rather than by the whole
frozenset.
See the SBGN-PD, SBGN-AF, and CellDesigner module documentation for the per-model-element catalogue of key shapes and representatives.
Initialize the mapping and its frozen representative index.
Methods:
| Name | Description |
|---|---|
__reduce__ |
Pickle hook that preserves |
__setstate__ |
Restore |
get_child_layout_elements |
Return the layout elements representing |
get_mapping |
Return the model element or layout elements mapped to |
is_submapping |
Return |
Attributes:
| Name | Type | Description |
|---|---|---|
inverse |
frozendict
|
Return the value->keys inverse as a |
representative_to_key |
FrozenSurjectionDict
|
Return the read-only table mapping representatives to frozenset keys. |
Source code in src/momapy/core/mapping.py
__reduce__
Pickle hook that preserves _representative_to_key across round-trips.
The inherited frozendict.__reduce__ only serialises the dict
contents, which drops the representative table added by this subclass.
Source code in src/momapy/core/mapping.py
__setstate__
Restore _representative_to_key after __reduce__-driven unpickle.
Source code in src/momapy/core/mapping.py
get_child_layout_elements
get_child_layout_elements(child_model_element: ModelElement, parent_model_element: ModelElement) -> list[LayoutElement]
Return the layout elements representing child_model_element under parent_model_element.
Computes the intersection of two sets:
S1: layouts that belong underparent_model_element— the children of each container layout mapped to the parent, plus the members of each frozenset key mapped to the parent.S2: layouts that representchild_model_element— each singleton layout mapped to the child, plus the representatives of each frozenset key mapped to the child.
The inverse is identity-keyed, so two content-equal but id-distinct model instances are not aliased: layouts under one parent do not cross-pollute the result for the sibling instance.
Source code in src/momapy/core/mapping.py
get_mapping
get_mapping(map_element: MapElement) -> ModelElement | list[LayoutElement | frozenset[LayoutElement]] | None
Return the model element or layout elements mapped to map_element.
Lookup order:
1. Direct key: map_element is a singleton or frozenset key in the
mapping; returns the associated model element directly.
2. Inverse: map_element is a model element; returns the list of
layout elements (or frozenset keys) whose stored model value
is map_element by object identity. Two content-equal
but id-distinct model instances are not aliased.
3. Representative fallback: map_element was registered as the representative of a
frozenset key via the representative argument of add_mapping;
returns the model element stored under that frozenset key.
Returns None when no match is found.
Source code in src/momapy/core/mapping.py
inverse
property
Return the value->keys inverse as a frozendict[K, frozenset].
K is the value (equality variants) or id(value) (identity
variants); each bucket is a frozenset of forward keys. It is
precomputed once at construction and returned in O(1).
Returns:
| Type | Description |
|---|---|
frozendict
|
A |
frozendict
|
|
is_submapping
is_submapping(other: LayoutModelMapping) -> bool
Return True if the mapping is a submapping of another LayoutModelMapping, False otherwise.
LayoutModelMappingBuilder
Bases: IdentitySurjectionDict, Builder
Mutable builder for LayoutModelMapping.
Builds a layout-to-model mapping incrementally, then produces a frozen
LayoutModelMapping via build(). It
keeps the same key conventions as the frozen mapping (singleton layout
keys and frozenset keys, each frozenset with a representative registered in _representative_to_key),
but uses mutable containers so elements can be added or replaced while a
map is being constructed.
Initialize the mapping builder and its representative index.
Methods:
| Name | Description |
|---|---|
__delitem__ |
Delete a key, updating the identity-keyed inverse index. |
__reduce__ |
Pickle hook that preserves |
__setitem__ |
Set a key to a value, updating the identity-keyed inverse index. |
__setstate__ |
Restore |
add_mapping |
Add a layout-element to model-element entry to the mapping. |
build |
Build a frozen |
from_object |
Build a |
get_child_layout_elements |
Return the layout elements representing |
get_mapping |
Return the element(s) mapped to the given map element. |
Attributes:
| Name | Type | Description |
|---|---|---|
inverse |
frozendict
|
Return the value->keys inverse as a |
representative_to_key |
SurjectionDict
|
Return the table mapping representatives to frozenset keys. |
Source code in src/momapy/core/mapping.py
__delitem__
Delete a key, updating the identity-keyed inverse index.
Source code in src/momapy/utils.py
__reduce__
Pickle hook that preserves _representative_to_key across round-trips.
The default dict-subclass pickle emits SETITEMS before BUILD, so
IdentitySurjectionDict.__setitem__ fires before
_identity_inverse exists and crashes. Routing through
__init__ fixes both that and the _representative_to_key loss.
Source code in src/momapy/core/mapping.py
__setitem__
Set a key to a value, updating the identity-keyed inverse index.
Source code in src/momapy/utils.py
__setstate__
Restore _representative_to_key after __reduce__-driven unpickle.
add_mapping
add_mapping(layout_element: LayoutElement, model_element: ModelElement, representative: LayoutElement | None = None) -> None
Add a layout-element to model-element entry to the mapping.
The mapping is many-to-one: several layout elements may map to the same model element, so adding a new entry for a model element that is already mapped simply registers an additional layout key — existing keys are kept.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
layout_element
|
LayoutElement
|
The layout element (or frozenset of layout elements) to use as the key. |
required |
model_element
|
ModelElement
|
The model element to associate with the layout element. |
required |
representative
|
LayoutElement | None
|
When |
None
|
Source code in src/momapy/core/mapping.py
build
build(builder_to_object: dict[int, Any] | None = None) -> LayoutModelMapping
Build a frozen LayoutModelMapping from this builder.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
builder_to_object
|
dict[int, Any] | None
|
Optional cache mapping builder |
None
|
Returns:
| Type | Description |
|---|---|
LayoutModelMapping
|
A frozen |
LayoutModelMapping
|
from their builders. |
Source code in src/momapy/core/mapping.py
from_object
classmethod
from_object(obj: LayoutModelMapping, object_to_builder: dict[int, Builder] | None = None) -> Self
Build a LayoutModelMappingBuilder from a frozen mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
obj
|
LayoutModelMapping
|
The frozen |
required |
object_to_builder
|
dict[int, Builder] | None
|
Optional cache mapping object |
None
|
Returns:
| Type | Description |
|---|---|
Self
|
A |
Source code in src/momapy/core/mapping.py
get_child_layout_elements
get_child_layout_elements(child_model_element: ModelElement, parent_model_element: ModelElement) -> list[LayoutElement]
Return the layout elements representing child_model_element under parent_model_element.
Source code in src/momapy/core/mapping.py
get_mapping
get_mapping(map_element: MapElement) -> ModelElement | list[LayoutElement | frozenset[LayoutElement]] | None
Return the element(s) mapped to the given map element.
If map_element is a key (a layout element or frozenset of layout
elements), returns the model element it maps to. If it is a model
element, returns the list of layout keys mapped to it.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
map_element
|
MapElement
|
The layout or model element to look up. |
required |
Returns:
| Type | Description |
|---|---|
ModelElement | list[LayoutElement | frozenset[LayoutElement]] | None
|
The mapped model element, the list of mapped layout keys, or |
ModelElement | list[LayoutElement | frozenset[LayoutElement]] | None
|
|
Source code in src/momapy/core/mapping.py
inverse
property
Return the value->keys inverse as a frozendict[K, frozenset].
K is the value (equality variants) or id(value) (identity
variants); each bucket is a frozenset of forward keys. This is a
fresh snapshot built on each access from the internally
maintained index, so it is safe to read while the mapping is
mutated.
Returns:
| Type | Description |
|---|---|
frozendict
|
A |
frozendict
|
|
Map
dataclass
Map(*, id_: str = make_uuid4_as_str(), model: Model | None = None, layout: Layout | None = None, layout_model_mapping: LayoutModelMapping | None = None)
Bases: MapElement
Class for maps.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'7dc128a9-ef24-431d-8e14-aaf93ca4b486'
|
model
|
Model | None
|
The model of the map |
None
|
layout
|
Layout | None
|
The layout of the map |
None
|
layout_model_mapping
|
LayoutModelMapping | None
|
The layout model mapping of the map |
None
|
Methods:
| Name | Description |
|---|---|
get_mapping |
Return the model element or layout elements mapped to |
is_submap |
Return |
get_mapping
get_mapping(map_element: MapElement) -> ModelElement | list[LayoutElement | frozenset[LayoutElement]] | None
Return the model element or layout elements mapped to map_element.
The lookup is bidirectional: a layout key (a singleton or frozenset)
resolves to its model element, and a model element resolves to the
list of layout keys mapped to it. Forwards to
layout_model_mapping.get_mapping.
Returns None when the map has no layout_model_mapping (for
example a layout-less map such as one read from SBML).
Source code in src/momapy/core/map.py
is_submap
is_submap(other: Map) -> bool
Return True if the Map is a submap of another given map, False otherwise.
A complete map is never a submap of an incomplete one: if either self
or other has a None model, layout, or layout-model mapping, this
returns False.
Source code in src/momapy/core/map.py
MapElement
dataclass
Base class for map elements.
Common ancestor of every model and layout element making up a map.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'acbe7894-5d8d-4d7d-a01f-121eb258e1b2'
|
Model
dataclass
Bases: MapElement, ABC
Abstract base class for models.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'5ba9f8c3-462d-4ec3-9426-1176753d0cb3'
|
Methods:
| Name | Description |
|---|---|
descendants |
Return every |
is_submodel |
Return whether this model is a submodel of another model. |
descendants
descendants() -> list[ModelElement]
Return every ModelElement reachable from this Model.
This reflectively walks the dataclass field-graph (i.e. reference
reachability) across scalar ModelElement fields and
frozenset/tuple containers of the Model, deduplicating by
object identity. The Model itself is not a ModelElement and is
not included.
This mirrors
ModelElement.descendants
and contrasts with
LayoutElement.descendants,
which walks the explicit children() tree (visual containment)
rather than reference reachability.
Returns:
| Type | Description |
|---|---|
list[ModelElement]
|
The list of reachable |
list[ModelElement]
|
order. |
Source code in src/momapy/core/model.py
is_submodel
abstractmethod
is_submodel(other: Model) -> bool
Return whether this model is a submodel of another model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
other
|
Model
|
The model to test against. |
required |
Returns:
| Type | Description |
|---|---|
bool
|
|
Source code in src/momapy/core/model.py
ModelElement
dataclass
Bases: MapElement
Base class for model elements.
Common ancestor of every element carrying the semantic information of a map.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'ac9ab4ca-b2b9-4a4a-946f-db7ddf30f4c2'
|
Methods:
| Name | Description |
|---|---|
descendants |
Return every |
descendants
descendants() -> list[ModelElement]
Return every ModelElement reachable from self, excluding self.
This reflectively walks the dataclass field-graph (i.e. reference
reachability) across scalar ModelElement fields and
frozenset/tuple containers, deduplicating by object identity. A
model element referenced by several parents therefore appears once.
Note the deliberate contrast with
LayoutElement.descendants,
which instead walks the explicit children() tree (visual
containment): there a layout element contained under two parents is
reached through each, with no identity dedup.
Returns:
| Type | Description |
|---|---|
list[ModelElement]
|
The list of reachable |
list[ModelElement]
|
order, without |
Source code in src/momapy/core/elements.py
Node
dataclass
Node(*, id_: str = make_uuid4_as_str(), layout_elements: tuple[LayoutElement, ...] = tuple(), group_fill: NoneValueType | Color | None = None, group_fill_rule: FillRule | None = None, group_filter: NoneValueType | Filter | None = None, group_font_family: str | None = None, group_font_size: float | None = None, group_font_style: FontStyle | None = None, group_font_weight: FontWeight | float | None = None, group_stroke: NoneValueType | Color | None = None, group_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, group_stroke_dashoffset: NoneValueType | float | None = None, group_stroke_width: NoneValueType | float | None = None, group_text_anchor: TextAnchor | None = None, group_transform: NoneValueType | tuple[Transformation, ...] | None = None, fill: NoneValueType | Color | None = None, filter_: NoneValueType | Filter | None = None, height: float, label: TextLayout | None = None, position: Point, stroke: NoneValueType | Color | None = None, stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, stroke_dashoffset: NoneValueType | float | None = None, stroke_width: NoneValueType | float | None = None, transform: NoneValueType | tuple[Transformation, ...] | None = None, width: float)
Bases: GroupLayout
Class for nodes.
A node is a group layout drawn as a shape with a position, a size, an optional label and its own border styling.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'c1f200ec-dc73-4619-87a5-f103ed893600'
|
layout_elements
|
tuple[LayoutElement, ...]
|
The sub-layout elements of the group layout. These are part of the children of the group layout |
<dynamic>
|
group_fill
|
NoneValueType | Color | None
|
The fill color of the group layout |
None
|
group_fill_rule
|
FillRule | None
|
The fill rule of the group layout |
None
|
group_filter
|
NoneValueType | Filter | None
|
The filter of the group layout |
None
|
group_font_family
|
str | None
|
The font family of the group layout |
None
|
group_font_size
|
float | None
|
The font size of the group layout |
None
|
group_font_style
|
FontStyle | None
|
The font style of the group layout |
None
|
group_font_weight
|
FontWeight | float | None
|
The font weight of the group layout |
None
|
group_stroke
|
NoneValueType | Color | None
|
The stroke color of the group layout |
None
|
group_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the group layout |
None
|
group_stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the group layout |
None
|
group_stroke_width
|
NoneValueType | float | None
|
The stroke width of the group layout |
None
|
group_text_anchor
|
TextAnchor | None
|
The text anchor of the group layout |
None
|
group_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the group layout |
None
|
fill
|
NoneValueType | Color | None
|
The fill color of the node |
None
|
filter_
|
NoneValueType | Filter | None
|
The filter of the node |
None
|
height
|
float
|
The height of the node |
required |
label
|
TextLayout | None
|
The label of the node |
None
|
position
|
Point
|
The position of the node |
required |
stroke
|
NoneValueType | Color | None
|
The stroke color of the node |
None
|
stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the node |
None
|
stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the node |
None
|
stroke_width
|
NoneValueType | float | None
|
The stroke width of the node |
None
|
transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the node |
None
|
width
|
float
|
The width of the node |
required |
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
angle |
Return the point on the border of the node that intersects the drawing elements of the node with the line passing through the center anchor point of the node and at a given angle from the horizontal. |
bbox |
Compute and return the bounding box of the group layout element. |
border |
Return the point on the border of the node that intersects the drawing elements of the node with the line formed of the center anchor point of the node and the given point. |
center |
Return the center anchor of the node. |
childless |
Return a copy of the node with no children. |
children |
Return the children of the group layout. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the group layout. |
east |
Return the east anchor of the node. |
east_north_east |
Return the east north east anchor of the node. |
east_south_east |
Return the east south east anchor of the node. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
label_center |
Return the label center anchor of the node. |
north |
Return the north anchor of the node. |
north_east |
Return the north east anchor of the node. |
north_north_east |
Return the north north east anchor of the node. |
north_north_west |
Return the north north west anchor of the node. |
north_west |
Return the north west anchor of the node. |
own_angle |
Return the point on the border of the node that intersects the self drawing elements of the node with the line passing through the center anchor point of the node and at a given angle from the horizontal. |
own_bbox |
Compute and return the bounding box of the self drawing element of the group layout. |
own_border |
Return the point on the border of the node that intersects the self drawing elements of the node with the line formed of the center anchor point of the node and the given point. |
own_children |
Return the self children of the node. A node has unique child that is its label. |
own_drawing_elements |
Return the node's own drawing elements. |
own_to_geometry |
Return a list of geometry primitives from the self drawing elements. |
size |
Return the size of the node. |
south |
Return the south anchor of the node. |
south_east |
Return the south east anchor of the node. |
south_south_east |
Return the south south east anchor of the node. |
south_south_west |
Return the south south west anchor of the node. |
south_west |
Return the south west anchor of the node. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
west |
Return the west anchor of the node. |
west_north_west |
Return the west north west anchor of the node. |
west_south_west |
Return the west south west anchor of the node. |
Attributes:
| Name | Type | Description |
|---|---|---|
x |
float
|
Return the x coordinate of the node. |
y |
float
|
Return the y coordinate of the node. |
anchor_point
anchor_point(anchor_name: str) -> Point
angle
angle(angle: float, unit: Literal['degrees', 'radians'] = 'degrees') -> Point | None
Return the point on the border of the node that intersects the drawing elements of the node with the line passing through the center anchor point of the node and at a given angle from the horizontal.
Source code in src/momapy/core/layout.py
bbox
bbox() -> Bbox
Compute and return the bounding box of the group layout element.
Source code in src/momapy/core/layout.py
border
Return the point on the border of the node that intersects the drawing elements of the node with the line formed of the center anchor point of the node and the given point.
When there are multiple intersection points, the one closest to the given point is returned.
Source code in src/momapy/core/layout.py
center
center() -> Point
childless
children
children() -> list[LayoutElement]
Return the children of the group layout.
These are the self children of the group layout (returned by the own_children method) and the other children of the group layout (given by the layout_elements attribute).
Source code in src/momapy/core/layout.py
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
drawing_elements() -> list[DrawingElement]
Return the drawing elements of the group layout.
The returned drawing elements are a group drawing element formed of the self drawing elements of the group layout and the drawing elements of its children.
Source code in src/momapy/core/layout.py
east
east() -> Point
east_north_east
east_north_east() -> Point
Return the east north east anchor of the node.
Source code in src/momapy/core/layout.py
east_south_east
east_south_east() -> Point
Return the east south east anchor of the node.
Source code in src/momapy/core/layout.py
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
label_center
label_center() -> Point
north
north() -> Point
north_east
north_east() -> Point
Return the north east anchor of the node.
Source code in src/momapy/core/layout.py
north_north_east
north_north_east() -> Point
Return the north north east anchor of the node.
Source code in src/momapy/core/layout.py
north_north_west
north_north_west() -> Point
Return the north north west anchor of the node.
Source code in src/momapy/core/layout.py
north_west
north_west() -> Point
Return the north west anchor of the node.
Source code in src/momapy/core/layout.py
own_angle
own_angle(angle: float, unit: Literal['degrees', 'radians'] = 'degrees') -> Point | None
Return the point on the border of the node that intersects the self drawing elements of the node with the line passing through the center anchor point of the node and at a given angle from the horizontal.
Source code in src/momapy/core/layout.py
own_bbox
own_bbox() -> Bbox
Compute and return the bounding box of the self drawing element of the group layout.
Source code in src/momapy/core/layout.py
own_border
Return the point on the border of the node that intersects the self drawing elements of the node with the line formed of the center anchor point of the node and the given point.
When there are multiple intersection points, the one closest to the given point is returned.
Source code in src/momapy/core/layout.py
own_children
own_children() -> list[LayoutElement]
Return the self children of the node. A node has unique child that is its label.
own_drawing_elements
own_drawing_elements() -> list[DrawingElement]
Return the node's own drawing elements.
Source code in src/momapy/core/layout.py
own_to_geometry
own_to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the self drawing elements.
Source code in src/momapy/core/layout.py
size
south
south() -> Point
south_east
south_east() -> Point
Return the south east anchor of the node.
Source code in src/momapy/core/layout.py
south_south_east
south_south_east() -> Point
Return the south south east anchor of the node.
Source code in src/momapy/core/layout.py
south_south_west
south_south_west() -> Point
Return the south south west anchor of the node.
Source code in src/momapy/core/layout.py
south_west
south_west() -> Point
Return the south west anchor of the node.
Source code in src/momapy/core/layout.py
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
west
west() -> Point
west_north_west
west_north_west() -> Point
Return the west north west anchor of the node.
Source code in src/momapy/core/layout.py
west_south_west
west_south_west() -> Point
Return the west south west anchor of the node.
Source code in src/momapy/core/layout.py
Orientation
Bases: Enum
Orientation along an axis.
Either horizontal or vertical. For a cardinal direction (up, right, down,
left), see Direction.
Shape
dataclass
Bases: LayoutElement
Class for basic shapes.
A shape is the most simple layout element and has no children.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'220802c6-707c-4844-9648-a72b4f0dc1bf'
|
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
bbox |
Compute and return the bounding box of the shape. |
childless |
Return a copy of the shape with no children. |
children |
Return the children of the shape. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the layout element. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
anchor_point
anchor_point(anchor_name: str) -> Point
childless
Return a copy of the shape with no children.
A shape has no children, so return a copy of the shape.
children
children() -> list[LayoutElement]
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
abstractmethod
drawing_elements() -> list[DrawingElement]
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
SingleHeadedArc
dataclass
SingleHeadedArc(*, id_: str = make_uuid4_as_str(), layout_elements: tuple[LayoutElement, ...] = tuple(), group_fill: NoneValueType | Color | None = None, group_fill_rule: FillRule | None = None, group_filter: NoneValueType | Filter | None = None, group_font_family: str | None = None, group_font_size: float | None = None, group_font_style: FontStyle | None = None, group_font_weight: FontWeight | float | None = None, group_stroke: NoneValueType | Color | None = None, group_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, group_stroke_dashoffset: NoneValueType | float | None = None, group_stroke_width: NoneValueType | float | None = None, group_text_anchor: TextAnchor | None = None, group_transform: NoneValueType | tuple[Transformation, ...] | None = None, end_shorten: float = 0.0, fill: NoneValueType | Color | None = None, filter_: NoneValueType | Filter | None = None, path_fill: NoneValueType | Color | None = None, path_filter: NoneValueType | Filter | None = None, path_stroke: NoneValueType | Color | None = None, path_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, path_stroke_dashoffset: NoneValueType | float | None = None, path_stroke_width: float | None = None, path_transform: NoneValueType | tuple[Transformation, ...] | None = None, stroke: NoneValueType | Color | None = None, stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, stroke_dashoffset: NoneValueType | float | None = None, stroke_width: NoneValueType | float | None = None, segments: tuple[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc, ...] = tuple(), source: LayoutElement | None = None, start_shorten: float = 0.0, target: LayoutElement | None = None, transform: NoneValueType | tuple[Transformation, ...] | None = None, arrowhead_fill: NoneValueType | Color | None = None, arrowhead_filter: NoneValueType | Filter | None = None, arrowhead_stroke: NoneValueType | Color | None = None, arrowhead_stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, arrowhead_stroke_dashoffset: NoneValueType | float | None = None, arrowhead_stroke_width: NoneValueType | float | None = None, arrowhead_transform: NoneValueType | tuple[Transformation, ...] | None = None)
Bases: Arc
Base class for single-headed arcs.
A single-headed arc is formed of a path and a unique arrowhead at its end.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'2db4dead-a8ef-44f5-a885-8d34d1070ab5'
|
layout_elements
|
tuple[LayoutElement, ...]
|
The sub-layout elements of the group layout. These are part of the children of the group layout |
<dynamic>
|
group_fill
|
NoneValueType | Color | None
|
The fill color of the group layout |
None
|
group_fill_rule
|
FillRule | None
|
The fill rule of the group layout |
None
|
group_filter
|
NoneValueType | Filter | None
|
The filter of the group layout |
None
|
group_font_family
|
str | None
|
The font family of the group layout |
None
|
group_font_size
|
float | None
|
The font size of the group layout |
None
|
group_font_style
|
FontStyle | None
|
The font style of the group layout |
None
|
group_font_weight
|
FontWeight | float | None
|
The font weight of the group layout |
None
|
group_stroke
|
NoneValueType | Color | None
|
The stroke color of the group layout |
None
|
group_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the group layout |
None
|
group_stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the group layout |
None
|
group_stroke_width
|
NoneValueType | float | None
|
The stroke width of the group layout |
None
|
group_text_anchor
|
TextAnchor | None
|
The text anchor of the group layout |
None
|
group_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the group layout |
None
|
end_shorten
|
float
|
The length the end of the arc will be shorten by |
0.0
|
fill
|
NoneValueType | Color | None
|
The fill color of the arc |
None
|
filter_
|
NoneValueType | Filter | None
|
The filter of the arc |
None
|
path_fill
|
NoneValueType | Color | None
|
The path fill color of the arc |
None
|
path_filter
|
NoneValueType | Filter | None
|
The path filter of the arc |
None
|
path_stroke
|
NoneValueType | Color | None
|
The path stroke color of the arc |
None
|
path_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The path stroke dasharray of the arc |
None
|
path_stroke_dashoffset
|
NoneValueType | float | None
|
The path stroke dashoffset of the arc |
None
|
path_stroke_width
|
float | None
|
The path stroke width of the arc |
None
|
path_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The path transform of the arc |
None
|
stroke
|
NoneValueType | Color | None
|
The stroke color of the arc |
None
|
stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The stroke dasharray of the arc |
None
|
stroke_dashoffset
|
NoneValueType | float | None
|
The stroke dashoffset of the arc |
None
|
stroke_width
|
NoneValueType | float | None
|
The stroke width of the arc |
None
|
segments
|
tuple[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc, ...]
|
The path segments of the arc |
<dynamic>
|
source
|
LayoutElement | None
|
The source of the arc |
None
|
start_shorten
|
float
|
The length the start of the arc will be shorten by |
0.0
|
target
|
LayoutElement | None
|
The target of the arc |
None
|
transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the arc |
None
|
arrowhead_fill
|
NoneValueType | Color | None
|
The arrowhead fill color of the arc |
None
|
arrowhead_filter
|
NoneValueType | Filter | None
|
The arrowhead filter of the arc |
None
|
arrowhead_stroke
|
NoneValueType | Color | None
|
The arrowhead stroke color of the arc |
None
|
arrowhead_stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The arrowhead stroke dasharray of the arc |
None
|
arrowhead_stroke_dashoffset
|
NoneValueType | float | None
|
The arrowhead stroke dashoffset of the arc |
None
|
arrowhead_stroke_width
|
NoneValueType | float | None
|
The arrowhead stroke width of the arc |
None
|
arrowhead_transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The arrowhead transform of the arc |
None
|
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
arrowhead_base |
Return the arrowhead base anchor point of the single-headed arc. |
arrowhead_bbox |
Return the bounding box of the single-headed arc arrowhead. |
arrowhead_border |
Return the point at the intersection of the drawing elements of the single-headed arc arrowhead and the line going through the center of these drawing elements and the given point. |
arrowhead_drawing_elements |
Return the drawing elements of the single-headed arc arrowhead. |
arrowhead_length |
Return the length of the single-headed arc arrowhead. |
arrowhead_tip |
Return the arrowhead tip anchor point of the single-headed arc. |
bbox |
Compute and return the bounding box of the group layout element. |
childless |
Return a copy of the arc with no children. |
children |
Return the children of the group layout. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the group layout. |
end_point |
Return the ending point of the arc. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
fraction |
Return the position and angle on the arc at a given fraction (of the total arc length). |
length |
Return the total length of the arc path. |
own_bbox |
Compute and return the bounding box of the self drawing element of the group layout. |
own_children |
Return the self children of the arc. |
own_drawing_elements |
Return the self drawing elements of the single-headed arc. |
own_to_geometry |
Return a list of geometry primitives from the self drawing elements. |
path_drawing_elements |
Return the drawing elements of the single-headed arc path. |
points |
Return the points of the arc path. |
start_point |
Return the starting point of the arc. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
anchor_point
anchor_point(anchor_name: str) -> Point
arrowhead_base
arrowhead_base() -> Point
Return the arrowhead base anchor point of the single-headed arc.
Source code in src/momapy/core/layout.py
arrowhead_bbox
arrowhead_bbox() -> Bbox
arrowhead_border
Return the point at the intersection of the drawing elements of the single-headed arc arrowhead and the line going through the center of these drawing elements and the given point.
When there are multiple intersection points, the one closest to the given point is returned.
Source code in src/momapy/core/layout.py
arrowhead_drawing_elements
arrowhead_drawing_elements() -> list[DrawingElement]
Return the drawing elements of the single-headed arc arrowhead.
Source code in src/momapy/core/layout.py
arrowhead_length
Return the length of the single-headed arc arrowhead.
Source code in src/momapy/core/layout.py
arrowhead_tip
arrowhead_tip() -> Point
Return the arrowhead tip anchor point of the single-headed arc.
Source code in src/momapy/core/layout.py
bbox
bbox() -> Bbox
Compute and return the bounding box of the group layout element.
Source code in src/momapy/core/layout.py
childless
children
children() -> list[LayoutElement]
Return the children of the group layout.
These are the self children of the group layout (returned by the own_children method) and the other children of the group layout (given by the layout_elements attribute).
Source code in src/momapy/core/layout.py
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
drawing_elements() -> list[DrawingElement]
Return the drawing elements of the group layout.
The returned drawing elements are a group drawing element formed of the self drawing elements of the group layout and the drawing elements of its children.
Source code in src/momapy/core/layout.py
end_point
end_point() -> Point
Return the ending point of the arc.
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
fraction
fraction(fraction: float) -> tuple[Point, float]
Return the position and angle on the arc at a given fraction (of the total arc length).
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
Source code in src/momapy/core/layout.py
length
own_bbox
own_bbox() -> Bbox
Compute and return the bounding box of the self drawing element of the group layout.
Source code in src/momapy/core/layout.py
own_children
own_children() -> list[LayoutElement]
own_drawing_elements
own_drawing_elements() -> list[DrawingElement]
Return the self drawing elements of the single-headed arc.
Source code in src/momapy/core/layout.py
own_to_geometry
own_to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the self drawing elements.
Source code in src/momapy/core/layout.py
path_drawing_elements
path_drawing_elements() -> list[Path]
Return the drawing elements of the single-headed arc path.
Source code in src/momapy/core/layout.py
points
points() -> list[Point]
Return the points of the arc path.
An arc with no segments has no points and returns an empty list.
Source code in src/momapy/core/layout.py
start_point
start_point() -> Point
Return the starting point of the arc.
Raises:
| Type | Description |
|---|---|
ValueError
|
If the arc has no segments. |
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
TextLayout
dataclass
TextLayout(*, id_: str = make_uuid4_as_str(), text: str, font_family: str = get_initial_value('font_family'), font_size: float = get_initial_value('font_size'), font_style: FontStyle = get_initial_value('font_style'), font_weight: FontWeight | int = get_initial_value('font_weight'), position: Point, width: float | None = None, height: float | None = None, horizontal_alignment: HAlignment = LEFT, vertical_alignment: VAlignment = TOP, justify: bool = False, fill: NoneValueType | Color | None = None, filter_: NoneValueType | Filter | None = None, stroke: NoneValueType | Color | None = None, stroke_dasharray: NoneValueType | tuple[float, ...] | None = None, stroke_dashoffset: NoneValueType | float | None = None, stroke_width: float | None = None, text_anchor: TextAnchor | None = None, transform: NoneValueType | tuple[Transformation, ...] | None = None)
Bases: LayoutElement
Class for text layouts.
A text layout draws a piece of text at a position with its own font and styling.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id_
|
str
|
The id of the map element. This id is purely for the user to keep track of the element, it does not need to be unique and is not part of the identity of the element, i.e., it is not considered when testing for equality between two map elements or when hashing the map element |
'd87e7b10-b371-472e-8cd6-c403fca3578a'
|
text
|
str
|
The text of the text layout |
required |
font_family
|
str
|
The font family of the text layout |
'DejaVu Sans'
|
font_size
|
float
|
The font size of the text layout |
16.0
|
font_style
|
FontStyle
|
The font style of the text layout |
<FontStyle.NORMAL: 0>
|
font_weight
|
FontWeight | int
|
The font weight of the text layout |
<FontWeight.NORMAL: 0>
|
position
|
Point
|
The position of the text layout |
required |
width
|
float | None
|
The width of the text layout |
None
|
height
|
float | None
|
The height of the text layout |
None
|
horizontal_alignment
|
HAlignment
|
The horizontal alignment of the text layout |
<HAlignment.LEFT: 1>
|
vertical_alignment
|
VAlignment
|
The vertical alignment of the text layout |
<VAlignment.TOP: 1>
|
justify
|
bool
|
Whether to justify the text or not |
False
|
fill
|
NoneValueType | Color | None
|
The text fill color of the text layout |
None
|
filter_
|
NoneValueType | Filter | None
|
The filter of the text layout |
None
|
stroke
|
NoneValueType | Color | None
|
The text stroke color of the text layout |
None
|
stroke_dasharray
|
NoneValueType | tuple[float, ...] | None
|
The text stroke dasharray of the text layout |
None
|
stroke_dashoffset
|
NoneValueType | float | None
|
The text stroke dashoffset of the text layout |
None
|
stroke_width
|
float | None
|
The text stroke width of the text layout |
None
|
text_anchor
|
TextAnchor | None
|
The text anchor of the text layout |
None
|
transform
|
NoneValueType | tuple[Transformation, ...] | None
|
The transform of the text layout |
None
|
Methods:
| Name | Description |
|---|---|
anchor_point |
Return an anchor point of the layout element. |
bbox |
Compute and return the bounding box of the layout element. |
childless |
Return a copy of the text layout with no children. |
children |
Return the children of the text layout. |
contains |
Return |
descendants |
Return the descendants of the layout element. |
drawing_elements |
Return the drawing elements of the text layout. |
east |
Return the east anchor of the text layout. |
east_north_east |
Return the east north east anchor of the text layout. |
east_south_east |
Return the east south east anchor of the text layout. |
equals |
Return |
flattened |
Return a list containing copy of the layout element with no children and all its descendants with no children. |
north |
Return the north anchor of the text layout. |
north_east |
Return the north east anchor of the text layout. |
north_north_east |
Return the north north east anchor of the text layout. |
north_north_west |
Return the north north west anchor of the text layout. |
north_west |
Return the north west anchor of the text layout. |
south |
Return the south anchor of the text layout. |
south_east |
Return the south east anchor of the text layout. |
south_south_east |
Return the south south east anchor of the text layout. |
south_south_west |
Return the south south west anchor of the text layout. |
south_west |
Return the south west anchor of the text layout. |
to_geometry |
Return a list of geometry primitives from the drawing elements. |
west |
Return the west anchor of the text layout. |
west_north_west |
Return the west north west anchor of the text layout. |
west_south_west |
Return the west south west anchor of the text layout. |
Attributes:
| Name | Type | Description |
|---|---|---|
x |
float
|
Return the x coordinate of the text layout. |
y |
float
|
Return the y coordinate of the text layout. |
anchor_point
anchor_point(anchor_name: str) -> Point
bbox
bbox() -> Bbox
Compute and return the bounding box of the layout element.
Source code in src/momapy/core/layout.py
childless
Return a copy of the text layout with no children.
The text layout has no children, so return a copy of the text layout.
children
children() -> list[LayoutElement]
Return the children of the text layout.
The text layout has no children, so return an empty list.
contains
contains(other: LayoutElement) -> bool
Return True if another layout element is a descendant of the layout element, False otherwise.
descendants
descendants() -> list[LayoutElement]
Return the descendants of the layout element.
This walks the explicit children() tree (i.e. visual
containment) depth-first, returning every layout element in the
contained subtree (without self).
Note the deliberate contrast with
ModelElement.descendants
and Model.descendants,
which reflectively walk the dataclass field-graph (i.e. reference
reachability) and deduplicate by object identity. A model element
referenced by several parents therefore appears once across the
model graph, whereas layout descendants are strictly the contained
subtree and a layout element contained under two parents is reached
through each.
Returns:
| Type | Description |
|---|---|
list[LayoutElement]
|
The list of descendant layout elements in visit order. |
Source code in src/momapy/core/elements.py
drawing_elements
drawing_elements() -> list[DrawingElement]
Return the drawing elements of the text layout.
Source code in src/momapy/core/layout.py
east
east() -> Point
east_north_east
east_north_east() -> Point
east_south_east
east_south_east() -> Point
equals
equals(other: LayoutElement, flattened: bool = False, unordered: bool = False) -> bool
Return True if the layout element is equal to another layout element, False otherwise.
Source code in src/momapy/core/elements.py
flattened
flattened() -> list[LayoutElement]
Return a list containing copy of the layout element with no children and all its descendants with no children.
Source code in src/momapy/core/elements.py
north
north() -> Point
north_east
north_east() -> Point
north_north_east
north_north_east() -> Point
north_north_west
north_north_west() -> Point
north_west
north_west() -> Point
south
south() -> Point
south_east
south_east() -> Point
south_south_east
south_south_east() -> Point
south_south_west
south_south_west() -> Point
south_west
south_west() -> Point
to_geometry
to_geometry() -> list[Segment | QuadraticBezierCurve | CubicBezierCurve | EllipticalArc]
Return a list of geometry primitives from the drawing elements.
west
west() -> Point
west_north_west
west_north_west() -> Point
west_south_west
west_south_west() -> Point
VAlignment
Bases: Enum
Vertical alignment of text or content.
Selects how content is positioned along the vertical axis.