Skip to content
Snippets Groups Projects
Commit e523d1a3 authored by calrama's avatar calrama
Browse files

Clarify some wording, improve layout a bit.

parent 51556160
No related branches found
No related tags found
No related merge requests found
......@@ -144,7 +144,7 @@ HDF groups, datasets, and attributes may be referred to as /nodes/.
HDF attributes are not considered to be /children/.
The nameless root group present in all HDF files is referred to as (the) /root/.
The nameless top-level group present in all HDF files is referred to as (the) /root/.
The first dimension of a dataset or non-scalar attribute may be referred to as its /length/.
......@@ -152,11 +152,11 @@ The first dimension of a dataset or non-scalar attribute may be referred to as i
/Mandatory/ nodes must always be present as specified.
/Optional/ nodes may be absent, but if a node with matching name is present, it must be as specified.
/Optional/ nodes may be absent, but if a node with matching name is present[fn:5], it must be as specified.
/Additional/ nodes may be present as long as they do not conflict with any requirements described in this document.
UTF-8 encoding[fn:5] is mandatory.
UTF-8 encoding[fn:6] is mandatory.
** Hierarchy
......@@ -222,13 +222,14 @@ An entity must have the following attributes:
Canonical values for /category/ are /organism/, /robot/, and /obstacle/.
An entity in the /organism/ category may have any subset of the following attributes:
|----------------------------------------------+--------------+-------------+---------------------------------------------------------------|
|----------------------------------------------+--------------+-------------+--------------------------------------|
| *name* | *type* | *cardinality* | *description* |
|----------------------------------------------+--------------+-------------+---------------------------------------------------------------|
|----------------------------------------------+--------------+-------------+--------------------------------------|
| species | string | variable | What species the organism belongs to |
| sex | string | variable | What sex the organism belongs to |
| fish\under{}standard\under{}length\under{}cm | 32-bit float | scalar | If the organism is a fish: Its standard length in centimeters |
|----------------------------------------------+--------------+-------------+---------------------------------------------------------------|
| fish\under{}standard\under{}length\under{}cm | 32-bit float | scalar | If the organism is a fish: |
| | | | Its standard length in centimeters |
|----------------------------------------------+--------------+-------------+--------------------------------------|
Canonical values for /sex/ are /female/, /male/, and /intersex/.
......@@ -241,11 +242,11 @@ Missing float samples must be represented by /NaN/ values.
An entity may have a 2-dimensional 32-bit float dataset named /positions/, representing the entity's positions with axes time and coordinate. If the dataset's length is \(1\), the entity is considered /fixed in place/.
An entity with positions may also have a 2-dimensional 32-bit float dataset named /orientations/, representing the entity's orientations with axes time and coordinate. If the dataset's length is \(1\), the entity is considered to have a /fixed orientation/.
An entity with /positions/ may also have a 2-dimensional 32-bit float dataset named /orientations/, representing the entity's orientations with axes time and coordinate. If the dataset's length is \(1\), the entity is considered to have a /fixed orientation/.
If an entity has /positions/ but not /orientations/, it is also considered to have a fixed orientation, specifically \((0,1)\) in \(\mathbb{R}^2\) world space and \((0,1,0)\) in \(\mathbb{R}^3\) world space; in this case no rotation is required to convert between world space and entity space.
If an entity has /positions/ but not /orientations/, coordinate space transformations must instead assume a /substitute fixed orientation/ of \((0,1)\) in \(\mathbb{R}^2\) world space and \((0,1,0)\) in \(\mathbb{R}^3\) world space[fn:7].
An entity with positions may contain a 3-dimensional 32-bit float dataset named /outlines/, representing the entity's outlines with the axes time, point, and coordinate. Any outline with less points than the size of /outlines/' second dimension must pad with trailing /NaN/ coordinates. If the dataset's length is \(1\), the entity is considered to have a /fixed outline/.
An entity with /positions/ may contain a 3-dimensional 32-bit float dataset named /outlines/, representing the entity's outlines with the axes time, point, and coordinate. Any outline with less points than the size of /outlines/' second dimension must pad with trailing /NaN/ coordinates. If the dataset's length is \(1\), the entity is considered to have a /fixed outline/.
/positions/, /orientations/, and /outlines/ must select the same /sampling/.
......@@ -256,8 +257,11 @@ The source code for the RoboFish Track Format and supplementary information can
[[https://git.imp.fu-berlin.de/bioroboticslab/robofish/track_format]].
* Footnotes
[fn:1] In \(\mathbb{R}^2\): A rectangle (with (x,y) = (width,height)). In \(\mathbb{R}^3\): A rectangular cuboid (with (x,y,z) = (width,height,depth))
[fn:2] In \(\mathbb{R}^2\) world space: \((x,y)\). In \(\mathbb{R}^3\) world space: \((x,y,z)\))
[fn:3] In \(\mathbb{R}^2\) world space: \((\hat{x},\hat{y})\). In \(\mathbb{R}^3\) world space: \((\hat{x},\hat{y},\hat{z})\))
[fn:4] See [[https://semver.org/spec/v2.0.0.html][Semantic Versioning 2.0.0]]
[fn:5] See Unicode Standard 13.0
[fn:1] In \(\mathbb{R}^2\): A rectangle (with (x,y) = (width,height)). In \(\mathbb{R}^3\): A rectangular cuboid (with (x,y,z) = (width,height,depth)).
[fn:2] In \(\mathbb{R}^2\) world space: \((x,y)\). In \(\mathbb{R}^3\) world space: \((x,y,z)\)).
[fn:3] In \(\mathbb{R}^2\) world space: \((\hat{x},\hat{y})\). In \(\mathbb{R}^3\) world space: \((\hat{x},\hat{y},\hat{z})\)).
[fn:4] See [[https://semver.org/spec/v2.0.0.html][Semantic Versioning 2.0.0]].
[fn:5] Groups and datasets share a namespace in HDF, attributes lie in a different one.
[fn:6] See Unicode Standard 13.0.
[fn:7] Thus /no rotation/ is required to convert between world space and entity space.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment