MorphoNet Dataset and Properties formats

Format Specification

Morphological datasets must be uploaded to MorphoNet under the form of surface meshes. More specifically, we employ the most common format to represent meshes, i.e., the obj format

Each .obj file contains a list of elementary objects present at a given time point, of its vertices and of its faces.

In order to fully exploit the interdisciplinary networking structure of our morphological browser, we created a generic format for morphological property specification.

To this end, we profit from the object-based structure of morphological datasets by introducing morphodynamic property categories which can be projected on elementary blocks. Each of these objects can be uniquely identified by an object tuple (OTP) given by his context. For example, when both temporal property and several visualisation channels are present in a dataset, at any given time point and for any given visualisation channel one is left with a collection of objects. Therefore, OTPs in such datasets correspond to three integer numbers separated by commas: t, id, ch, specifying the time point (t), the visualisation channel (ch) and the id of the specific object given in the obj file (id).

On the other hand, if only one time point and one channel is provided in the dataset, OTPs can be simplified to just the simple id specified in obj files.

Mesh format:

Meshes must be given in .obj format. Each .obj can contain several elementary objects, specified by their vertices and of their faces. For optimal interaction with MorphoNet, please limit the total size of meshes for each dataset to 500 MB. Also, please limit the total number of elementary objects to 1 million and the total number of .obj files in each dataset to 1 thousand.

Each elementary object is identified by the time index at which it exists and its specific id at each given time (for instance g 4 cell_7, meaning object 7 at time 4), followed by the list of coordinates of its vertices and the list of faces composed of three vertices (each vertex being numbered starting from 1, with a global numbering running over all vertices of all objects at any given time point).

This leaves dataset owners the freedom to choose the level of detail of their morphological unit, which will then be interpreted by MorphoNet as the elementary object with which users can interact.

Each elementary brick should be reference in the obj file by a “g” (standard in the obj format) followed by its OTP.

In this example, the object with id 6 at time 4 is composed of 4 vertices and 2 faces, while object with id 7 at time 4 is composed of 5 vertices and 3 faces.

Example

#Definition the cell 6 at time point 4
g 4,6
v 370.85 403.43 427.36
v 349.11 422.76 425.44
v 396.17 384.46 447.22
v 317.25 438.32 460.64
f 1 3 4
f 1 2 3

#Definition the cell 7 at time point 4
g 4,7
v 349.11 422.76 425.44
v 317.25 438.32 460.64
v 370.85 403.43 427.36
f 5 6 8
f 5 7 8
f 7 8 9

Property types and format

Thanks to flexible OTPs, users can upload property to be visualised on the dataset. The general structure of property is a property associated to a specific object. The unique MorphoNet property format consists of a list of entries of the form OTP : property.

### OTP examples:

  • dataset without temporal property and having one visualisation channel only: id, id being the object identity in the corresponding .obj file. For instance, 3 is the OTP of object 3 in the dataset.
  • dataset with temporal property and having one visualisation channel only: t, id, t being the corresponding timepoint. For instance, 1, 3 is the OTP of object 3 at timepoint 1 in the dataset.

  • dataset with temporal property and having more than one visualisation channel: t, id, ch, ch being index of corresponding visualisation channel. For instance, 1, 3, 0 is the OTP of object 3 at timepoint 1 and in channel 0.

Property can in turn represent several different kinds of morphological property, each identified by a specific property type. The type of property must be mentioned at the beginning of the list as “type : property type”.

Additional, human-readable property which will not be taken into account by MorhpoNet can be given in lines beginning with #

Each property must be given a name in order to uniquely identify it in the database.

Available property types are:

Temporal property

  • property type: time
  • property format: OTP1 : OTP2

Provides property on temporal relations between two objects OTP1 and OTP2 at different time points: OTP2 originates from OTP1 at a previous time point. This format can be used to identify the same object at two different time points and to characterise object divisions (for instance, if OTP1 divides and creates OTP2 and OTP3, the list will have both entries OTP1 : OTP2 and OTP1 : OTP3) or objects fusion (if OTP1 and OTP2 fuse to produce OTP3, the list will have both entries OTP1 : OTP3 and OTP2 : OTP3).

Example

# Temporal property Example
type:time
1,1:2,1 #The cell 1 at time point 1 is linked to the cell 1 at time point 2
1,1:2;2  #The cell 1 at time point 1 is linked to the cell 2 at time point 2
1,2:2,5  #The cell 2 at time point 1 is linked to the cell 5 at time point 2
...

Spatial property

  • property type: space
  • property format: OTP1 : OTP2

Provides property on spatial relations between two objects OTP1 and OTP2. It can be used to provide objects adjacency property or any other kind of connection existing between objects at the same time point. For instance, if one wants to provide the list of physical neighbours of object OTP1, the list will contain several entries OTP1 : OTP2, OTP1 : OTP3, etc...

Example

# Spatial property Example
type:space
1,1:1,6
1,1:1,7
1,2:1,3
...

Group property

  • property type: group
  • property format: OTP : group1 (: subgroup2 : ...)

Provides group property on object OTP, used to identify several objects belonging to the same class (for instance, cells belonging to the same tissue). This property is given as text corresponding to the name of each group. Users can additionally provide subgroups property: their names must be given in a hierarchical order, from the largest to the smallest (i.e., subgroup2 is a part of group1 and so forth). For instance, if OTP belongs to the group “Epidermis” and to subgroup “Head Epidermis”, the corresponding list entry will be OTP : Epidermis : Head Epidermis.

Example

# Group property Example
type:group
1,1:Epidermis:Head Epidermis
1,3:Mesoderm
1,2:Organelles:Golgi Apparatus
...

Quantitative property

  • property type: float
  • property format: OTP : number (float)

Provides quantitative property associated to object OTP. This property is a number, representing a certain property of OTP, such as for instance its volume. Such property will be displayed on MorphoNet as a heat map.

Example

# Quantitative property Example
type:float
1,1:123.4
1,3:12.9
1,2:-15
...

Label property

  • property type: label
  • property format: OTP : number (integer)

Associates object OTP to standard MorphoNet label, identified by an integer between 1 and 255 and corresponding to the label number in the Objects menu of MorphoNet. Object OTP will then be color-labeled correspondingly.

Example

# Label property Example
type:label
1,1:1
1,3:5
1,2:16
...

Color property

  • property type: color
  • property format: OTP : r,g,b

Colors OTP according to given RGB values (floats in the range 0,255).

Example

# Color property Example
type:color
1,1:32,200,12
1,3:250,1,4
1,2:4,6,100
...

Qualitative property

  • property type: string
  • property format: OTP : text

Provides qualitative property associated to object OTP. This property is under the form of text, representing a certain characteristics of OTP, such as for instance its name. Such property will be displayed on MorphoNet as text overimposed to OTP as the mouse pointer passes over it.

Example

# Qualitative property Example
type:string
1,1:epidermal cell
1,3:clone shaped cell
1,2:unknown structure
...

Genetic property

# Genetic property Example # Gene : OTX type:genetic 1,1:1 1,3:0 1,2:0.4 ... ### Dictionary property - property type: dict - property format: `OTP1 : OTP2 : number (float)` Links object OTP1 to object OTP2 with a quantitative property on this link. Such a quantitative property is represented as heat map on the dataset. For instance, object OTP1 is associated to its direct physical neighbours, with additional quantitative property on their contact areas. #### Example
# Dictionary property Example
type:dict
1,1:1,2:14.5
1,3:1,4:-23.1
...
### Sphere property - property type: sphere - property format: `OTP : x,y,z,r` Visualises a sphere on the dataset, having the same color label as object OTP, centered at coordinates x,y,z and with radius r. #### Example
# Sphere property Example
type:sphere
1,1:12,0.3,10,11.5
...
### Vector property - property type: vector - property format: `OTP : x1,y1,z1,s1 : x2,y2,z2,s2` Visualises a line segment on the dataset, having the same color label as OTP, starting at coordinates x1,y1,z1 with size s1 and ending at coordinates x2,y2,z2 with size s2. #### Example
# Vector property Example
type:vector
1,1:10,11.3,130,2:14,9.1,220,43,6
...
### Curation property - Store curation applied to a specific object for an info - Curation format : `object time,object id,object channel:curation value:user:day-month-year-hour-minute-seconds` The cuation is applied to object defined by a time, and id and a channel, it holds a value to apply for this object on this property, created by an user at a specific date and time.
# Curation example
type:curation
33,17:The value:user.login:2020-01-01-13-18-54
...