rly / ndx-pose

NWB extension to store pose estimation data
BSD 3-Clause "New" or "Revised" License
13 stars 11 forks source link

Example Usage Doesn't have skeletons #20

Open pauladkisson opened 1 year ago

pauladkisson commented 1 year ago

I am trying to use ndx-pose for keypoint data without confidence values. Per #15 I tried installing the latest commits from source but I get an error about missing a 'skeleton'. This isn't documented in the example Usage section, and running that code with the latest commits actually throws an error (Full Traceback below). Notably this error does NOT occur when I checkout the previous commit: f9dd18a8290897e48bdd6ebeedcc0a7095d86265.

Full Traceback:

/Users/pauladkisson/Documents/CatalystNeuro/NWB/DattaConv/debug_ndx_pose.py:58: DeprecationWarning: NumPy will stop allowing conversion of out-of-bound Python integers to integer arrays.  The conversion of 640 to uint8 will fail in the future.
For the old behavior, usually:
    np.array(value).astype(dtype)`
will give the desired result (the cast overflows).
  dimensions=np.array([[640, 480], [1024, 768]], dtype='uint8'),
/Users/pauladkisson/Documents/CatalystNeuro/NWB/DattaConv/debug_ndx_pose.py:58: DeprecationWarning: NumPy will stop allowing conversion of out-of-bound Python integers to integer arrays.  The conversion of 480 to uint8 will fail in the future.
For the old behavior, usually:
    np.array(value).astype(dtype)`
will give the desired result (the cast overflows).
  dimensions=np.array([[640, 480], [1024, 768]], dtype='uint8'),
/Users/pauladkisson/Documents/CatalystNeuro/NWB/DattaConv/debug_ndx_pose.py:58: DeprecationWarning: NumPy will stop allowing conversion of out-of-bound Python integers to integer arrays.  The conversion of 1024 to uint8 will fail in the future.
For the old behavior, usually:
    np.array(value).astype(dtype)`
will give the desired result (the cast overflows).
  dimensions=np.array([[640, 480], [1024, 768]], dtype='uint8'),
/Users/pauladkisson/Documents/CatalystNeuro/NWB/DattaConv/debug_ndx_pose.py:58: DeprecationWarning: NumPy will stop allowing conversion of out-of-bound Python integers to integer arrays.  The conversion of 768 to uint8 will fail in the future.
For the old behavior, usually:
    np.array(value).astype(dtype)`
will give the desired result (the cast overflows).
  dimensions=np.array([[640, 480], [1024, 768]], dtype='uint8'),
Traceback (most recent call last):
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 563, in get_attr_value
    attr_val = getattr(container, attr_name)
AttributeError: 'PoseEstimation' object has no attribute 'skeleton'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/Users/pauladkisson/Documents/CatalystNeuro/NWB/DattaConv/debug_ndx_pose.py", line 75, in <module>
    io.write(nwbfile)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/backends/hdf5/h5tools.py", line 357, in write
    super().write(**kwargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/backends/io.py", line 56, in write
    f_builder = self.__manager.build(container, source=self.__source, root=True)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/manager.py", line 171, in build
    result = self.__type_map.build(container, self, source=source, spec_ext=spec_ext, export=export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/manager.py", line 770, in build
    builder = obj_mapper.build(container, manager, builder=builder, source=source, spec_ext=spec_ext, export=export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 714, in build
    self.__add_groups(builder, self.__spec.groups, container, manager, source, export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 1035, in __add_groups
    self.__add_groups(sub_builder, spec.groups, container, build_manager, source, export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 1048, in __add_groups
    self.__add_containers(builder, spec, attr_value, build_manager, source, container, export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 1106, in __add_containers
    self.__add_containers(builder, spec, container, build_manager, source, parent_container, export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 1068, in __add_containers
    new_builder = build_manager.build(value, source=source, spec_ext=spec, export=export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/manager.py", line 171, in build
    result = self.__type_map.build(container, self, source=source, spec_ext=spec_ext, export=export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/manager.py", line 770, in build
    builder = obj_mapper.build(container, manager, builder=builder, source=source, spec_ext=spec_ext, export=export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 714, in build
    self.__add_groups(builder, self.__spec.groups, container, manager, source, export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 1048, in __add_groups
    self.__add_containers(builder, spec, attr_value, build_manager, source, container, export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 1106, in __add_containers
    self.__add_containers(builder, spec, container, build_manager, source, parent_container, export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 1068, in __add_containers
    new_builder = build_manager.build(value, source=source, spec_ext=spec, export=export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/manager.py", line 171, in build
    result = self.__type_map.build(container, self, source=source, spec_ext=spec_ext, export=export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/manager.py", line 770, in build
    builder = obj_mapper.build(container, manager, builder=builder, source=source, spec_ext=spec_ext, export=export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 715, in build
    self.__add_links(builder, self.__spec.links, container, manager, source, export)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 966, in __add_links
    attr_value = self.get_attr_value(spec, container, build_manager)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/utils.py", line 645, in func_call
    return func(args[0], **pargs)
  File "/opt/anaconda3/envs/datta_env/lib/python3.10/site-packages/hdmf/build/objectmapper.py", line 567, in get_attr_value
    raise ContainerConfigurationError(msg)
hdmf.build.errors.ContainerConfigurationError: PoseEstimation 'PoseEstimation' does not have attribute 'skeleton' for mapping to spec: {'doc': 'Layout of body part locations and connections.', 'target_type': 'Skeleton'}