Format Specifications

Specifying File Modules

Managed file modules are specified via Python dictionaries (which may be serialized to JSON).

Group Specification

The group specification must contain the following keys/values:

  • datasets : Dictionary of dataset specifications (see below) describing the datasets contained in the group. Note, these are datasets that are managed directly by this managed group. Datasets with a dedicated manager type as part of the file format are specified via the managed_objects key.
  • groups : Dictionary of group specification describing the groups contained in this group. Note, these are groups that are managed directly by this managed group. Groups with a dedicated manager type as part of the file format API are specified via the managed_objects key.
  • managed_objects : List of managed object specification describing additional managed datasets or groups contained in this group.
  • attributes : List of attribute specifications. These are attributes associated with the group object directly.
  • group : The name of the group. May be None in case the group does not have a fixed name but multiple instances of the managed group object may exist, in which case the prefix key should be set. In general, only one of group or prefix should be set but not both.
  • prefix : String indicating the prefix to be used for the group name. The prefix is used in case that multiple instances of this managed object are allowed.
  • optional : Boolean indicating whether the group is optional or mandatory.
  • description : String describing the purpose of this managed object type. Stored in the brainformat_description attribute used to help new users with the interpretation of the format.

Example:

{'datasets': {'ecog_data': {'dataset': 'raw_data',             # dataset key is mandatory may be None
                            'prefix': None,        # prefix key is mandatory may be None
                            'optional': False,     # optional key is mandatory
                            # dimensions key is optional. If specified we assume that the number of
                            # dimensions is fixed and that a scale is defined for all dimensions,
                            # even if it is empty
                            # NOTE: if multiple scales are defined for the same axis, then the name
                            #       for those axis must be the same, while the unit key may differ
                            #       between scales for the same dimension
                            'dimensions': [{'name': 'space',     # Mandatory
                                            'unit': 'id',        # Mandatory
                                            'optional': False,   # Mandatory
                                            'dataset': 'electrode_id',  # Mandatory
                                            'axis': 0},  # Mandatory
                                           {'name': 'time',
                                            'unit': 'ns',
                                            'optional': False,
                                            'dataset': 'time_axis',
                                            'axis': 1}],  # use {} for no dimension scale
                            'description': 'Dataset with the ECoG recordings data',  # Mandatory
                            'attributes': [{'attribute': 'unit',   # Mandatory but may be empty
                                            'value': 'Volt', # Mandatory may be None to indicate user defined
                                            'prefix': None,        # Mandatory
                                            'opional': False}]},   # Mandatory
              'sampling_rate': {'dataset': 'sampling_rate',
                                'prefix': None,
                                'optional': False,
                                'attributes': [{'attribute': 'unit',
                                                'value': 'KHz',
                                                'prefix': None,
                                                'optional': False}],
                                'description': 'Sampling rate in KHz'},
              'layout': {'dataset': 'layout',
                         'prefix': None,
                         'optional': True,
                         'dimensions': [],
                         'attributes': [],
                         'description': 'The physical layout of the electrodes.'}},
 'groups': {},           # Mandatory
 'managed_objects': [],  # e.g., {'format_type': 'BrainDataECoG', 'optional': True}
 'attributes': [],  # e.g, [{'attribute': 'unit', 'value': KHz, 'prefix': None, 'optional': False}]
 'group': None,          # Mandatory (use 'dataset' in case of a managed dataset
 'prefix': "ecog_data_",
 'optional': False,
 'description': 'Managed group for storage of raw ECoG recordings.'}

File Specification

The specification of managed files is very similar to the specification of group objects with the following key differences:

  • file_prefix : Required additional entry describing the name prefix for filenames. May be set to None indicating that arbitrary filenames may be used.
  • file_extension : Required file extension. May be set to None to indicate that arbitrary file may be used extensions.
  • group, prefix : The behavior of these keys is identical to groups only that they are used to determine the name of external links to the files root group. In contrast to group specification, both group and prefix are allowed to be simultaneously set to None, indicating that no external links should be generated to the file. This is, e.g,the for brain.dataformat.base.ManagedObjectFile which is a pure container object with the intend that we should only link to specific object within the container but not the container file itself.
{'datasets': {},
 'groups': {},
 'managed_objects': [{'format_type': 'BrainDataData', 'optional': False},
                     {'format_type': 'BrainDataDescriptors', 'optional': False}],
 'attributes': [],
 'group': None,
 'prefix': "entry_",
 'file_prefix': None,
 'file_extension': '.h5',
 'optional': False,
 'description': 'Managed BRAIN file.'}

Managed Objects Specification

The specification of managed objects consists of the following keys/values:

  • format_type : String indicating the type of the managed object, e.g., BrainDataECoG. Use ManagedObject as format type, to indicate that any type of managed object may be part of the current group or file.
  • optional: Boolean indicating whether the managed object optional or mandatory. This overwrites the optional key of the format specification of the specification of the managed object.

Example managed object specification:

{'format_type': 'BrainDataECoG', 'optional': True}

Attribute Specification

The specification of attributes consists of the following keys/values:

  • attribute : Fixed name for the attribute. May be None in case that a prefix is specified allowing multiple instances of the attribute for the same object.
  • value : Value of the attribute. May be None in case the value for the attribute is not fixed by user-defined.
  • prefix : Prefix for the attribute. The prefix is automatically appended by a number so that multiple instances of the attribute are possible.
  • optional: Boolean indicating whether the managed object is optional or mandatory.

Example attribute specification:

{'attribute': 'unit',    # Mandatory but may be None is 'prefix' is set
 'value': 'Volt',        # Mandatory may be None to indicate that the value user defined (rather then being fixed)
 'prefix': None,         # Mandatory may be None if 'attribute' is set
 'optional': False}   # Mandatory boolean.

Dataset Specification

The specification of datasets consists of the following keys/values:

  • dataset : Fixed name for the dataset. May be None in case that prefix is specified to indicate that multiple numbered instances of the dataset type are allowed.
  • prefix : String indicating the prefix to be used for the datset name. The prefix is used in case that multiple instances of this dataset object are allowed.
  • dimensions : List of dimension scale specification. The dimensions key is optional. If specified we assume that the number of dimensions is fixed and that a scale is defined for all dimensions, even if it is empty. NOTE: if multiple scales are defined for the same axis, then the name for those axis must be the same, while the unit key may differ between scales for the same dimension
  • dimensions_fixed Boolean indicating whether the dataset must have exactly the number of dimensions specified by dimensions. If False, then the dataset is allowed to have additional dimensions not specified in dimensions. This parameter is optional. If the parameter is missing and dimensions are specified then it is implicitly assumed to be set to True. If the parameter is missing and dimensions is empty then the parameter is assumed to be implicitly False.
  • description : String describing the purpose of this managed object type. Stored in the brainformat_description attribute used to help new users with the interpretation of the format.
  • attributes : List of attribute specifications. These are attributes associated with the group object directly.
  • optional: Boolean indicating whether the object is optional or mandatory.
  • primary : Boolean indicating whether the dataset is a primary data source for analysis. This attribute is optional and is assumed to be False if missing. Marking primary data sources is useful when using data files as part of a third-party visualization and analysis tools and allows third-party tools to discover which datasets are the primary sources.

Example dataset specification:

{'dataset': 'raw_data',
 'prefix': None,
 'optional': False,
 'primary': True
 'dimensions': [{'name': 'space',
                 'unit': 'id',
                 'optional': False,
                 'dataset': 'electrode_id',
                 'axis': 0},
                {'name': 'time',
                 'unit': 'ns',
                 'optional': False,
                 'dataset': 'time_axis',
                 'axis': 1}],
 'description': 'Dataset with the ECoG recordings data',
 'attributes': [{'attribute': 'unit',
               'value': 'Volt',
               'prefix': None,
               'opional': False}]}

Dimension Scales Specification

Dimension scale specification are an optional part of dataset specifications and are only allowed there. Dimension scales describe the name/type of a particular dimension of dataset. The specification of dimension scales consist of the following keys/values:

  • name : The name of the dimensions scale. NOTE: if multiple dimensions scales are associated with the same axis of a dataset, then their name must be identical while their unit keys may differ. If a dimension is required but does not have a dimension scale, then set the name to None. In this case unit and dataset should be None as well.
  • unit : The units in which the dimension is expressed. May be None in case that only a name for the dimensions should be specified but no actual dimension scale. NOTE: if a dataset is specified then unit must be set as well as this is used to address the dataset.
  • optional: Boolean indicating whether the object is optional or mandatory.
  • dataset : The HDF5 dataset with the values for the dimension scale. May be None, in case that no actual axis scale is specified.
  • axis : Unsigned Integer indicating the axis/dimension the dimension scale is associated with. (Mandatory)
{'name': 'space',
 'unit': 'id',
 'optional': False,
 'dataset': 'electrode_id',
 'axis': 0}

Full Specification for BrainDataFile (JSON)

The current specification for the BrainData file format can be retrieved via:

brain.dataformat.brainformat.braindata import BrainDataFile
import json
import time
format_specification = BrainDataFile.get_format_specification_recursive()
print time.ctime(time.time())
print json.dumps(format_specification)

An example output from the above code-example is given below. Similarly we can compute the specification of any managed sub-object of a file.

Thu Oct 30 23:02:56 2014

{
     "prefix": "entry_",
     "datasets": { },
     "group": null,
     "managed_objects": [ ],
     "groups": {
         "descriptors": {
             "prefix": null,
             "datasets": { },
             "group": "descriptors",
             "managed_objects": [ ],
             "groups": {
                 "dynamic": {
                     "prefix": null,
                     "datasets": { },
                     "group": "dynamic",
                     "managed_objects": [ ],
                     "groups": { },
                     "attributes": [
                         {
                             "attribute": "format_type",
                             "prefix": null,
                             "optional": false,
                             "value": "BrainDataDynamicDescriptors"
                         },
                         {
                             "attribute": "format_description",
                             "prefix": null,
                             "optional": false,
                             "value": "Managed group for storage of static descriptors."
                         },
                         {
                             "attribute": "object_id",
                             "prefix": null,
                             "optional": true,
                             "value": null
                         },
                         {
                             "attribute": "format_specification",
                             "prefix": null,
                             "optional": false,
                             "value": null
                         }
                     ],
                     "optional": false,
                     "description": "Managed group for storage of static descriptors."
                 },
                 "static": {
                     "prefix": null,
                     "datasets": { },
                     "group": "static",
                     "managed_objects": [ ],
                     "groups": { },
                     "attributes": [
                         {
                             "attribute": "format_type",
                             "prefix": null,
                             "optional": false,
                             "value": "BrainDataStaticDescriptors"
                         },
                         {
                             "attribute": "format_description",
                             "prefix": null,
                             "optional": false,
                             "value": "Managed group for storage of static descriptors."
                         },
                         {
                             "attribute": "object_id",
                             "prefix": null,
                             "optional": true,
                             "value": null
                         },
                         {
                             "attribute": "format_specification",
                             "prefix": null,
                             "optional": false,
                             "value": null
                         }
                     ],
                     "optional": false,
                     "description": "Managed group for storage of static descriptors."
                 }
             },
             "attributes": [
                 {
                     "attribute": "format_type",
                     "prefix": null,
                     "optional": false,
                     "value": "BrainDataDescriptors"
                 },
                 {
                     "attribute": "format_description",
                     "prefix": null,
                     "optional": false,
                     "value": "Managed group for storage of a collection of brain data descriptors."
                 },
                 {
                     "attribute": "object_id",
                     "prefix": null,
                     "optional": true,
                     "value": null
                 },
                 {
                     "attribute": "format_specification",
                     "prefix": null,
                     "optional": false,
                     "value": null
                 }
             ],
             "optional": false,
             "description": "Managed group for storage of a collection of brain data descriptors."
         },
         "data": {
             "prefix": null,
             "datasets": { },
             "group": "data",
             "managed_objects": [ ],
             "groups": {
                 "internal": {
                     "prefix": null,
                     "datasets": { },
                     "group": "internal",
                     "managed_objects": [ ],
                     "groups": {
                         "ecog_data_": {
                             "prefix": "ecog_data_",
                             "datasets": {
                                 "sampling_rate": {
                                     "attributes": [
                                         {
                                             "attribute": "unit",
                                             "prefix": null,
                                             "optional": false,
                                             "value": "KHz"
                                         }
                                     ],
                                     "prefix": null,
                                     "optional": false,
                                     "description": "Sampling rate in KHz",
                                     "dataset": "sampling_rate"
                                 },
                                 "ecog_data": {
                                     "dimensions_fixed": true,
                                     "description": "Dataset with the ECoG recordings data",
                                     "dataset": "raw_data",
                                     "prefix": null,
                                     "attributes": [
                                         {
                                             "attribute": "unit",
                                             "prefix": null,
                                             "optional": false,
                                             "value": "Volt"
                                         }
                                     ],
                                     "optional": false,
                                     "dimensions": [
                                         {
                                             "axis": 0,
                                             "optional": false,
                                             "name": "space",
                                             "unit": "id",
                                             "dataset": "electrode_id"
                                         },
                                         {
                                             "axis": 1,
                                             "optional": false,
                                             "name": "time",
                                             "unit": "ns",
                                             "dataset": "time_axis"
                                         },
                                         {
                                             "axis": 0,
                                             "optional": true,
                                             "name": "space",
                                             "unit": "region name",
                                             "dataset": "anatomy_name"
                                         },
                                         {
                                             "axis": 0,
                                             "optional": true,
                                             "name": "space",
                                             "unit": "region id",
                                             "dataset": "anatomy_id"
                                         }
                                     ]
                                 },
                                 "layout": {
                                     "description": "The physical layout of the electrodes.",
                                     "dataset": "layout",
                                     "prefix": null,
                                     "attributes": [ ],
                                     "optional": true,
                                     "dimensions": [ ]
                                 }
                             },
                             "group": null,
                             "managed_objects": [ ],
                             "groups": {
                                 "annotations_": {
                                     "prefix": "annotations_",
                                     "datasets": {
                                         "annotation_type_indexes": {
                                             "dimensions_fixed": true,
                                             "description": "Dataset indicating for each selection the index of the annotation type used. The annotation types are given in the annotation types dataset.",
                                             "dataset": "annotation_type_indexes",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "type_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 }
                                             ]
                                         },
                                         "data_object": {
                                             "description": null,
                                             "dataset": "data_object",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [ ]
                                         },
                                         "selections": {
                                             "dimensions_fixed": false,
                                             "description": "Datasets with all selections for the indicated axis. Axis -1 indicates a global selection across all axes. One dataset per axis and one for global selection (-1) is mandatory.",
                                             "dataset": null,
                                             "prefix": "selections_axis_",
                                             "attributes": [
                                                 {
                                                     "attribute": "axis",
                                                     "prefix": null,
                                                     "optional": false,
                                                     "value": null
                                                 }
                                             ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "selection_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 }
                                             ]
                                         },
                                         "annotation_types": {
                                             "dimensions_fixed": true,
                                             "description": "List of all available annotation types",
                                             "dataset": "annotation_types",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "annotation_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 }
                                             ]
                                         },
                                         "descriptions": {
                                             "dimensions_fixed": true,
                                             "description": "Dataset with the annotation descriptions.",
                                             "dataset": "descriptions",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "annotation_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 }
                                             ]
                                         },
                                         "selection_indexes": {
                                             "dimensions_fixed": true,
                                             "description": "Dataset indicating for each axis the index of the selection applied to the given axis. -1 indicates that no selection is applied along that axis. The axis index ranges from -1 to n where -1 indicated global selection and n is the number of axes.",
                                             "dataset": "selection_indexes",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "annotation_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 },
                                                 {
                                                     "axis": 1,
                                                     "optional": false,
                                                     "name": "axis_index",
                                                     "unit": "index",
                                                     "dataset": "axis_index"
                                                 }
                                             ]
                                         }
                                     },
                                     "group": null,
                                     "managed_objects": [ ],
                                     "groups": { },
                                     "attributes": [
                                         {
                                             "attribute": "collection_description",
                                             "prefix": null,
                                             "optional": false,
                                             "value": null
                                         },
                                         {
                                             "attribute": "format_type",
                                             "prefix": null,
                                             "optional": false,
                                             "value": "AnnotationDataGroup"
                                         },
                                         {
                                             "attribute": "format_description",
                                             "prefix": null,
                                             "optional": false,
                                             "value": "Managed group for storage of a collection of annotations. Multiple annotation collections may typically be associated with the same data object."
                                         },
                                         {
                                             "attribute": "object_id",
                                             "prefix": null,
                                             "optional": true,
                                             "value": null
                                         },
                                         {
                                             "attribute": "format_specification",
                                             "prefix": null,
                                             "optional": false,
                                             "value": null
                                         }
                                     ],
                                     "optional": true,
                                     "description": "Managed group for storage of a collection of annotations. Multiple annotation collections may typically be associated with the same data object."
                                 }
                             },
                             "attributes": [
                                 {
                                     "attribute": "format_type",
                                     "prefix": null,
                                     "optional": false,
                                     "value": "BrainDataECoG"
                                 },
                                 {
                                     "attribute": "format_description",
                                     "prefix": null,
                                     "optional": false,
                                     "value": "Managed group for storage of raw ECoG recordings."
                                 },
                                 {
                                     "attribute": "object_id",
                                     "prefix": null,
                                     "optional": true,
                                     "value": null
                                 },
                                 {
                                     "attribute": "format_specification",
                                     "prefix": null,
                                     "optional": false,
                                     "value": null
                                 }
                             ],
                             "optional": true,
                             "description": "Managed group for storage of raw ECoG recordings."
                         },
                         "ecog_data_processed_": {
                             "prefix": "ecog_data_processed_",
                             "datasets": {
                                 "sampling_rate": {
                                     "attributes": [
                                         {
                                             "attribute": "unit",
                                             "prefix": null,
                                             "optional": false,
                                             "value": "KHz"
                                         }
                                     ],
                                     "prefix": null,
                                     "optional": false,
                                     "description": "Sampling rate in KHz",
                                     "dataset": "sampling_rate"
                                 },
                                 "ecog_data": {
                                     "dimensions_fixed": true,
                                     "description": "Dataset with the ECoG recordings data",
                                     "dataset": "processed_data",
                                     "prefix": null,
                                     "attributes": [
                                         {
                                             "attribute": "unit",
                                             "prefix": null,
                                             "optional": false,
                                             "value": null
                                         },
                                         {
                                             "attribute": "original_name",
                                             "prefix": null,
                                             "optional": true,
                                             "value": null
                                         }
                                     ],
                                     "optional": false,
                                     "dimensions": [
                                         {
                                             "axis": 0,
                                             "optional": false,
                                             "name": "space",
                                             "unit": "id",
                                             "dataset": "electrode_id"
                                         },
                                         {
                                             "axis": 1,
                                             "optional": false,
                                             "name": "time",
                                             "unit": "ns",
                                             "dataset": "time_axis"
                                         },
                                         {
                                             "axis": 0,
                                             "optional": true,
                                             "name": "space",
                                             "unit": "region name",
                                             "dataset": "anatomy_name"
                                         },
                                         {
                                             "axis": 0,
                                             "optional": true,
                                             "name": "space",
                                             "unit": "region id",
                                             "dataset": "anatomy_id"
                                         },
                                         {
                                             "axis": 2,
                                             "optional": true,
                                             "name": "frequency bands",
                                             "unit": "KHz",
                                             "dataset": "frequency_bands"
                                         }
                                     ]
                                 },
                                 "layout": {
                                     "description": "The physical layout of the electrodes.",
                                     "dataset": "layout",
                                     "prefix": null,
                                     "attributes": [ ],
                                     "optional": true,
                                     "dimensions": [ ]
                                 }
                             },
                             "group": null,
                             "managed_objects": [ ],
                             "groups": {
                                 "annotations_": {
                                     "prefix": "annotations_",
                                     "datasets": {
                                         "annotation_type_indexes": {
                                             "dimensions_fixed": true,
                                             "description": "Dataset indicating for each selection the index of the annotation type used. The annotation types are given in the annotation types dataset.",
                                             "dataset": "annotation_type_indexes",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "type_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 }
                                             ]
                                         },
                                         "data_object": {
                                             "description": null,
                                             "dataset": "data_object",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [ ]
                                         },
                                         "selections": {
                                             "dimensions_fixed": false,
                                             "description": "Datasets with all selections for the indicated axis. Axis -1 indicates a global selection across all axes. One dataset per axis and one for global selection (-1) is mandatory.",
                                             "dataset": null,
                                             "prefix": "selections_axis_",
                                             "attributes": [
                                                 {
                                                     "attribute": "axis",
                                                     "prefix": null,
                                                     "optional": false,
                                                     "value": null
                                                 }
                                             ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "selection_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 }
                                             ]
                                         },
                                         "annotation_types": {
                                             "dimensions_fixed": true,
                                             "description": "List of all available annotation types",
                                             "dataset": "annotation_types",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "annotation_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 }
                                             ]
                                         },
                                         "descriptions": {
                                             "dimensions_fixed": true,
                                             "description": "Dataset with the annotation descriptions.",
                                             "dataset": "descriptions",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "annotation_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 }
                                             ]
                                         },
                                         "selection_indexes": {
                                             "dimensions_fixed": true,
                                             "description": "Dataset indicating for each axis the index of the selection applied to the given axis. -1 indicates that no selection is applied along that axis. The axis index ranges from -1 to n where -1 indicated global selection and n is the number of axes.",
                                             "dataset": "selection_indexes",
                                             "prefix": null,
                                             "attributes": [ ],
                                             "optional": false,
                                             "dimensions": [
                                                 {
                                                     "axis": 0,
                                                     "optional": false,
                                                     "name": "annotation_index",
                                                     "unit": null,
                                                     "dataset": null
                                                 },
                                                 {
                                                     "axis": 1,
                                                     "optional": false,
                                                     "name": "axis_index",
                                                     "unit": "index",
                                                     "dataset": "axis_index"
                                                 }
                                             ]
                                         }
                                     },
                                     "group": null,
                                     "managed_objects": [ ],
                                     "groups": { },
                                     "attributes": [
                                         {
                                             "attribute": "collection_description",
                                             "prefix": null,
                                             "optional": false,
                                             "value": null
                                         },
                                         {
                                             "attribute": "format_type",
                                             "prefix": null,
                                             "optional": false,
                                             "value": "AnnotationDataGroup"
                                         },
                                         {
                                             "attribute": "format_description",
                                             "prefix": null,
                                             "optional": false,
                                             "value": "Managed group for storage of a collection of annotations. Multiple annotation collections may typically be associated with the same data object."
                                         },
                                         {
                                             "attribute": "object_id",
                                             "prefix": null,
                                             "optional": true,
                                             "value": null
                                         },
                                         {
                                             "attribute": "format_specification",
                                             "prefix": null,
                                             "optional": false,
                                             "value": null
                                         }
                                     ],
                                     "optional": true,
                                     "description": "Managed group for storage of a collection of annotations. Multiple annotation collections may typically be associated with the same data object."
                                 }
                             },
                             "attributes": [
                                 {
                                     "attribute": "format_type",
                                     "prefix": null,
                                     "optional": false,
                                     "value": "BrainDataECoGProcessed"
                                 },
                                 {
                                     "attribute": "format_description",
                                     "prefix": null,
                                     "optional": false,
                                     "value": "Managed group for storage of processed ECoG recordings."
                                 },
                                 {
                                     "attribute": "object_id",
                                     "prefix": null,
                                     "optional": true,
                                     "value": null
                                 },
                                 {
                                     "attribute": "format_specification",
                                     "prefix": null,
                                     "optional": false,
                                     "value": null
                                 }
                             ],
                             "optional": true,
                             "description": "Managed group for storage of processed ECoG recordings."
                         }
                     },
                     "attributes": [
                         {
                             "attribute": "format_type",
                             "prefix": null,
                             "optional": false,
                             "value": "BrainDataInternalData"
                         },
                         {
                             "attribute": "format_description",
                             "prefix": null,
                             "optional": false,
                             "value": "Managed group for storage of a collection of internal brain data."
                         },
                         {
                             "attribute": "object_id",
                             "prefix": null,
                             "optional": true,
                             "value": null
                         },
                         {
                             "attribute": "format_specification",
                             "prefix": null,
                             "optional": false,
                             "value": null
                         }
                     ],
                     "optional": false,
                     "description": "Managed group for storage of a collection of internal brain data."
                 },
                 "external": {
                     "prefix": null,
                     "datasets": { },
                     "group": "external",
                     "managed_objects": [ ],
                     "groups": { },
                     "attributes": [
                         {
                             "attribute": "format_type",
                             "prefix": null,
                             "optional": false,
                             "value": "BrainDataExternalData"
                         },
                         {
                             "attribute": "format_description",
                             "prefix": null,
                             "optional": false,
                             "value": "Managed group for storage of external data related to the internal brain data."
                         },
                         {
                             "attribute": "object_id",
                             "prefix": null,
                             "optional": true,
                             "value": null
                         },
                         {
                             "attribute": "format_specification",
                             "prefix": null,
                             "optional": false,
                             "value": null
                         }
                     ],
                     "optional": false,
                     "description": "Managed group for storage of external data related to the internal brain data."
                 }
             },
             "attributes": [
                 {
                     "attribute": "format_type",
                     "prefix": null,
                     "optional": false,
                     "value": "BrainDataData"
                 },
                 {
                     "attribute": "format_description",
                     "prefix": null,
                     "optional": false,
                     "value": "Managed group for storage of brain data (internal and external)."
                 },
                 {
                     "attribute": "object_id",
                     "prefix": null,
                     "optional": true,
                     "value": null
                 },
                 {
                     "attribute": "format_specification",
                     "prefix": null,
                     "optional": false,
                     "value": null
                 }
             ],
             "optional": false,
             "description": "Managed group for storage of brain data (internal and external)."
         }
     },
     "attributes": [
         {
             "attribute": "format_type",
             "prefix": null,
             "optional": false,
             "value": "BrainDataFile"
         },
         {
             "attribute": "format_description",
             "prefix": null,
             "optional": false,
             "value": "Managed BRAIN file."
         },
         {
             "attribute": "object_id",
             "prefix": null,
             "optional": true,
             "value": null
         },
         {
             "attribute": "format_specification",
             "prefix": null,
             "optional": false,
             "value": null
         }
     ],
     "file_extension": ".h5",
     "optional": false,
     "file_prefix": null,
     "description": "Managed BRAIN file."

 }