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