diff --git a/README.md b/README.md index 4c42527266921bb5615a38c4365012a9596e71c8..f574a8c4652da33fe4e2012dd93383f32ba8974a 100644 --- a/README.md +++ b/README.md @@ -194,13 +194,14 @@ Time series of behavior tags are stored in *json* files as in the following exam The `metadata`->`id` element gives a text identifier for the run/assay. Appart from this `id` element, none of the above-mentioned elements in object `metadata` is standard. -The `data` array lists the different moving objects (larvae) with their `id` (as a string) and time series of timestamps (float array `t`) and associated label specifications (object `labels`). +The `data` array lists the different moving objects (larvae) with their `id` (as a string) and time series of timestamps (float array `t`) and associated label specifications (array `labels`). -The top-level `labels` element can an object, with label names listed in child element `names`, or an array that lists names just like `names` does in the above example. +The top-level `labels` element can be an object, with the different label names listed in child element `names`. Alternatively, the top-level `labels` element can be an array that lists label names just like `labels`->`names` does in the above example. +The simpler array form is preferred for element `labels` when no additional information (such as `colors`) needs to be stored. -The `labels` elements in `data` are arrays with as many elements as in sibling `t`. Each element in `labels` can be a name (string), a list of names (possibly empty array of strings) or encoded as an index (integer) or indices (array of integers) in the top-level `labels` or `labels`->`names` array. +The `labels` elements in `data` are arrays with as many elements as in sibling `t`. Each element in `labels` can be a name (string) or a list of names (possibly empty array of strings). -Encoded labels start from index `1`. In the above example, `1` refers to `"run"`, `2` to `"bend"`, etc. +Alternatively, labels can be integer-encoded so that each element in `labels` is either an index (integer) or indices (possibly empty array of integers). Indices point to array elements in the top-level `labels` or `labels`->`names` array. Encoded labels start from index `1`. In the above example, `1` refers to `"run"`, `2` to `"bend"`, etc. This format is inspired by the [WCON](https://github.com/openworm/tracker-commons/blob/master/discuss/Formats.md#json-as-a-candidate-format=) proposal. Such a file can be made WCON-compliant prefixing occurences of `labels`, `secondarylabels` and `dependencies` by `@`. In addition, `x` and `y` should be added to `units` (with associated text units) and to every objects in `data` (with associated numeric data).