Skip to content

Commit

Permalink
poc
Browse files Browse the repository at this point in the history
  • Loading branch information
mavaylon1 committed Aug 21, 2024
1 parent a1ad5b1 commit 8f9777e
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 8 deletions.
3 changes: 2 additions & 1 deletion src/hdmf/backends/hdf5/h5_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,11 @@ def shape(self):

def append(self, arg):
# Get Builder
builder = self.io.manager.build(arg)
builder = self.io.manager.builders[arg.object_id]

# Get HDF5 Reference
ref = self.io._create_ref(builder)
breakpoint()
append_data(self.dataset, ref)


Expand Down
5 changes: 3 additions & 2 deletions src/hdmf/backends/hdf5/h5tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -1513,7 +1513,9 @@ def __get_ref(self, **kwargs):
else:
self.logger.debug("Getting reference for %s '%s'" % (container.__class__.__name__, container.name))
builder = self.manager.build(container)
breakpoint()
path = self.__get_path(builder)

self.logger.debug("Getting reference at path '%s'" % path)
if isinstance(container, RegionBuilder):
region = container.region
Expand All @@ -1531,8 +1533,7 @@ def __get_ref(self, **kwargs):
'default': None},
returns='the reference', rtype=Reference)
def _create_ref(self, **kwargs):
self.__get_ref(**kwargs)

return self.__get_ref(**kwargs)

def __is_ref(self, dtype):
if isinstance(dtype, DtypeSpec):
Expand Down
8 changes: 6 additions & 2 deletions src/hdmf/build/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ def __init__(self, type_map):
self.__type_map = type_map
self.__ref_queue = deque() # a queue of the ReferenceBuilders that need to be added

@property
def builders(self):
return self.__builders

@property
def namespace_catalog(self):
return self.__type_map.namespace_catalog
Expand Down Expand Up @@ -198,7 +202,7 @@ def prebuilt(self, **kwargs):
''' Save the Builder for a given AbstractContainer for future use '''
container, builder = getargs('container', 'builder', kwargs)
container_id = self.__conthash__(container)
self.__builders[container_id] = builder
self.__builders[container.object_id] = builder
builder_id = self.__bldrhash__(builder)
self.__containers[builder_id] = container

Expand Down Expand Up @@ -263,7 +267,7 @@ def get_builder(self, **kwargs):
"""Return the prebuilt builder for the given container or None if it does not exist."""
container = getargs('container', kwargs)
container_id = self.__conthash__(container)
result = self.__builders.get(container_id)
result = self.__builders.get(container.object_id)
return result

@docval({'name': 'builder', 'type': (DatasetBuilder, GroupBuilder),
Expand Down
10 changes: 7 additions & 3 deletions tests/unit/test_io_hdf5_h5tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -2961,7 +2961,7 @@ def test_append_data(self):
def test_append_dataset_of_references(self):
"""Test that exporting a written container with a dataset of references works."""
bazs = []
num_bazs = 10
num_bazs = 1
for i in range(num_bazs):
bazs.append(Baz(name='baz%d' % i))
array_bazs=np.array(bazs)
Expand All @@ -2976,15 +2976,19 @@ def test_append_dataset_of_references(self):
read_bucket1 = read_io.read()
new_baz = Baz(name='new')
read_bucket1.add_baz(new_baz)
read_io.write(read_bucket1)

with HDF5IO(self.paths[0], manager=get_baz_buildmanager(), mode='a') as read_io:
read_bucket1 = read_io.read()
breakpoint()
DoR = read_bucket1.baz_data.data
DoR.append(new_baz)
read_io.write(read_bucket1)

with HDF5IO(self.paths[0], manager=get_baz_buildmanager(), mode='r') as read_io:
read_bucket1 = read_io.read()
self.assertEqual(len(read_bucket1.baz_data.data), 11)
self.assertIs(read_bucket1.baz_data.data[10], read_bucket1.bazs["new"])
self.assertEqual(len(read_bucket1.baz_data.data), 2)
self.assertIs(read_bucket1.baz_data.data[1], read_bucket1.bazs["new"])

def test_append_external_link_data(self):
"""Test that exporting a written container after adding a link with link_data=True creates external links."""
Expand Down

0 comments on commit 8f9777e

Please sign in to comment.