Skip to content
Snippets Groups Projects
Commit a31bbd39 authored by Tiago de Freitas Pereira's avatar Tiago de Freitas Pereira
Browse files

Make a sampleset work transparently with list of DelayedSamples

parent 7bf65c2b
No related branches found
No related tags found
1 merge request!31Make a sampleset work transparently with list of DelayedSamples
Pipeline #39886 passed
......@@ -99,19 +99,29 @@ class SampleSet(MutableSequence, _ReprMixin):
_copy_attributes(self, parent.__dict__)
_copy_attributes(self, kwargs)
def _load(self):
if isinstance(self.samples, DelayedSample):
self.samples = self.samples.data
def __len__(self):
self._load()
return len(self.samples)
def __getitem__(self, item):
self._load()
return self.samples.__getitem__(item)
def __setitem__(self, key, item):
self._load()
return self.samples.__setitem__(key, item)
def __delitem__(self, item):
self._load()
return self.samples.__delitem__(item)
def insert(self, index, item):
self._load()
# if not item in self.samples:
self.samples.insert(index, item)
......
......@@ -2,7 +2,10 @@ import bob.pipelines as mario
import numpy
import copy
import pickle
import tempfile
import functools
import os
def test_sampleset_collection():
......@@ -28,3 +31,19 @@ def test_sampleset_collection():
# Testing iterator
for i in sampleset:
assert isinstance(i, mario.Sample)
def _load(path):
return pickle.loads(open(path, "rb").read())
# Testing delayed sample in the sampleset
with tempfile.TemporaryDirectory() as dir_name:
samples = [mario.Sample(data, key=str(i)) for i, data in enumerate(X)]
filename = os.path.join(dir_name, "samples.pkl")
with open(filename, "wb") as f:
f.write(pickle.dumps(samples))
sampleset = mario.SampleSet(mario.DelayedSample(functools.partial(_load, filename)), key=1)
assert len(sampleset)==n_samples
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment