# Geometry in SBML

NOTE:

This representation is not set in stone - it is a start to kick off discussions on geometry representation(s) in SBML, so comments/suggestions/discussions are welcome!

## Representation of geometry

The following is a proposed UML diagram to represent geometry in an SBML model using additional elements (CompartmentMapping, Geometry, Domains, etc) and additional attributes to existing SBML model elements (e.g., boolean attribute 'spatial' in Species element; Sid attribute 'inside' in the Compartment element for membrane compartments, i.e., compartments with spatial dimension = 2).

### CompartmentMapping

CompartmentMapping maps a compartment to a spatial domain type in the SBML model. This is a many-to-one mapping: many compartments can be mapped to the same domain type. The CompartmentMapping element has a 'compartment' attribute and a 'domainType' attribute that together indicate which compartment is mapped to which domain type; and a 'unitSize' attribute. If there is a one-to-one mapping between the compartment and domain type, the unitSize is 1.0. If there are multiple compartments mapped to one domain type, the unitSize represents the fraction of the domain type mapped to each compartment.

### Geometry

A geometry represents the morphometry of a cell, or a portion of a cell. The defined geometry can be analytic or image-based. Analytic geometries are geometries where regular structures or symmetric cells are represented using analytic geometry expressions. Image-based geometries are geometries of cells/structures that are captured using various imaging techniques (confocal, wide-field, etc). The presented geometry representation (based on Virtual Cell geometry) is volume-based (with implicit surface representation) and is analytical.

The attributes for Geometry element include the type of coordinate system (cartesian, polar, etc), and the geometry type (analytic or image-based).

### CoordinateComponent

This is a representation of the coordinate system of the geometry. For example, for a 2-d geometry in the cartesian coordinate system, there will be 2 coordinate components (e.g., X, Y); for a 3-d geometry, there will be 3 components (X, Y, Z) in the ListOfCoordinateComponents; etc. The attributes for the CoordinateComponent element include type of coordinate component (for example, if the geometry is represented in cartesian coordinate system, the type can be 'X' for x-axis, 'Y' - for y-axis, etc.), the minimum and maximum extents of the coordinate component; and unit of the min and max extent (for example, unit for component 'X' in cartesian coordinate system can be 'um').

### DomainType

DomainType refers to the classification of spatial domains that are anatomically similar and will be assigned to the same mathematical model. The DomainType element contains an attribute 'spatialDimension' that indicates its spatial dimension.

### Domain

Domain refers to the Spatially disjoint 0,1,2,3- dimensional objects with identified adjacency relationships. This forms the spatial domain on which the differential equations for the variables are defined. The Domain element has a 'dimension' attribute that indicates the dimension of the domain (would be the same as the corresponding domainType); a boolean 'implicit' to indicate of the domain is implicit - for the volume-based, analytic geometry considered here, 3-d domains are not implicit, 2-d domains are implicit (3-d or volumes are explicitly defined; 2-d domains or surfaces are implicit when the volumes are defined); and 'domainType' which represents the domain type. If the geometry is analytic, the analytic expression for the domain is represented by a math element contained in the domain element.

### Species

A boolean attribute 'spatial' is added. It is set to true if a spatial geometry is defined in the model. If the attribute is 'true' it indicates that the species will have diffusion/boundary conditions defined. The proposal/discussion will follow soon (any ideas/inputs are welcome!).

### Compartment

For compartments that have a spatial dimension of 2 (representing a membrane in the Virtual Cell), an attribute 'inside' is added in order to keep track of the heirarchy of the compartments, if present, which will be required for geometry domain resolution.

## Prototype Implementation

A local Java version of the libSBML code was implemented and classes for the proposed geometry elements were also implemented. This code generates a spatial geometry in SBML (based on the above design) when a model with spatial geometry in the Virtual Cell is exported to SBML. This spatial SBML model (only geometry) can be re-imported into the Virtual Cell with the geometry specifications intact.

Surface-based ?