Building API Classes¶
After you have written an extension, you will need a Pythonic way to interact with the data model. To do this, you will need to write some classes that represent the data you defined in your specification extensions.
hdmf.container module defines two base classes that represent the primitive structures supported by
Data represents datasets and
represents groups. See the classes in the :py:mod:hdmf.common package for examples.
The register_class function/decorator¶
When defining a class that represents a data_type (i.e. anything that has a data_type_def)
from your extension, you can tell HDMF which data_type it represents using the function
register_class. This class can be called on its own, or used as a class decorator. The
first argument should be the data_type and the second argument should be the namespace name.
The following example demonstrates how to register a class as the Python class representation of the
data_type “MyContainer” from the namespace “my_ns”. The namespace must be loaded prior to the below code using
from hdmf.common import register_class from hdmf.container import Container class MyContainer(Container): ... register_class(data_type='MyContainer', namespace='my_ns', container_cls=MyContainer)
Alternatively, you can use
register_class as a decorator.
from hdmf.common import register_class from hdmf.container import Container @type_map.register_class('MyContainer', 'my_ns') class MyContainer(Container): ...