Rectangle
The Rectangle class is a concrete Shape implementation that represents axis‑aligned rectangular shapes used to depict compartments, species, reaction glyphs, or any additional box‑like graphics in an SBMLNetwork diagram.
A Rectangle records its top‑left corner relative to the parent element, its size (width × height), optional corner radius for rounded boxes, and the usual styling attributes (border, fill, etc.) inherited from Shape.
After loading a model and retreiving a model element, you can
Retrieve the first associated Shape with
get_shape().Retrieve all the Shape objects associated with the network element
get_shapes_list()helper.
Example:
import sbmlnetwork as sn
net = sn.load("my_model.xml")
# Shape for a specific species
shape = net.get_species_list()[0].get_shape()
# Check if it's a Rectangle
if shape.get_type() == "rectangle":
print("Species shape is a rectangle.")
Core Methods
Identificaiton
- get_type()
Return the geometry type –
"rectangle"- Return type:
str
- get_element_id()
Return the SBML identifier of the parent network element this Shape belongs to.
- Return type:
str
Styling
- get_border_color()
Current border colour of the Shape as a CSS hex string (
"#rrggbb") or a colour name supported by the renderer.- Return type:
str
- set_border_color(border_color)
Set the border colour. Accepts a CSS hex string or a RGB tuple / list with values in the range 0-255, e.g.
(255, 0, 0)for red.- Parameters:
border_color (str | tuple[int, int, int] | list[int]) – New colour.
- get_border_thickness()
Border line width in pixels.
- Return type:
float
- set_border_thickness(thickness)
Set the border line width.
- Parameters:
thickness (float) – New width in pixels.
- get_fill_color()
Current interior (fill) colour.
- Return type:
str
- set_fill_color(fill_color)
Set the interior colour. Accepts the same value formats as
set_border_color().- Parameters:
fill_color (str | tuple[int, int, int] | list[int]) – New fill colour.
- get_relative_position()
Get the rectangle’s relative position as an
(x, y)tuple, in diagram coordinate units.- Return type:
tuple[float, float]
- set_relative_position(relative_position)
Set the rectangle’s relative position.
- Parameters:
relative_position (tuple[float, float]) – New coordinates as
(x, y).
- get_size()
Get the width and height of the rectangle as a
(width, height)tuple.- Return type:
tuple[float, float]
- set_size(size)
Set the rectangle’s dimensions.
- Parameters:
size (tuple[float, float]) – New dimensions as
(width, height).
- get_corner_radius()
Get the corner radii of the rectangle as an
(rx, ry)tuple.- Return type:
tuple[float, float]
- set_corner_radius(corner_radius)
Set the corner radii of the rectangle.
- Parameters:
corner_radius (tuple[float, float]) – Radii as
(rx, ry).
Information
- property info
Human-readable summary of glyph state for debugging.
- Return type:
str
- get_info()
Generate the info string.
Example workflow
This snippet walks through inspecting and updating both appearance and layout for a Rectangle shape:
import sbmlnetwork as sn
# Load your SBML model
net = sn.load("my_model.xml")
# Access the first species in the network
species = net.get_species_list()[0]
# Set the shape to Rectangle
species.set_shape("rectangle")
# Grab the first Rectangle for a given element
rect = species.get_shape()
# Inspect current style & geometry
print("Position :", rect.get_relative_position()) # (x, y)
print("Size :", rect.get_size()) # (width, height)
print("Corner radius :", rect.get_corner_radius()) # (rx, ry)
print("Border color :", rect.get_border_color())
print("Border thickness:", rect.get_border_thickness())
print("Fill color :", rect.get_fill_color())
# Update styling
rect.set_fill_color("#cc6633")
rect.set_border_color((0, 51, 204)) # RGB tuple for a deep blue
rect.set_border_thickness(5.0)
# Update geometry
rect.set_relative_position((150.0, 75.0))
rect.set_size((120.0, 60.0))
rect.set_corner_radius((8.0, 8.0))
# Re-render and log
net.draw("rectangle_styling_demo.png")
print(rect.get_info())