Skip to content

Commit 4d61f77

Browse files
committed
wip: implemented len and getitem on iterators
1 parent 04edb30 commit 4d61f77

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

sdk/diffgram/core/diffgram_dataset_iterator.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ def __iter__(self):
2121
self.current_file_index = 0
2222
return self
2323

24+
def __len__(self):
25+
return len(self.diffgram_file_id_list)
26+
27+
def __getitem__(self, idx):
28+
diffgram_file = self.project.file.get_by_id(self.diffgram_file_id_list[idx], with_instances = True)
29+
instance_data = self.get_file_instances(diffgram_file)
30+
return instance_data
31+
2432
def __next__(self):
2533
file_id = self.diffgram_file_id_list[self.current_file_index]
2634
diffgram_file = self.project.file.get_by_id(file_id, with_instances = True)

sdk/diffgram/core/directory.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import logging
44
from diffgram.pytorch_diffgram.diffgram_pytorch_dataset import DiffgramPytorchDataset
55
from diffgram.tensorflow_diffgram.diffgram_tensorflow_dataset import DiffgramTensorflowDataset
6+
from diffgram.core.diffgram_dataset_iterator import DiffgramDatasetIterator
7+
68

79
def get_directory_list(self):
810
"""
@@ -70,14 +72,19 @@ def set_directory_by_name(self, name):
7072
str(names_attempted))
7173

7274

73-
class Directory():
75+
class Directory(DiffgramDatasetIterator):
7476

75-
def __init__(self,
76-
client):
77+
def __init__(self, client, file_id_list_sliced = None):
7778

7879
self.client = client
7980
self.id = None
8081
self.file_list_metadata = {}
82+
83+
if file_id_list_sliced is None:
84+
self.file_id_list = self.all_file_ids()
85+
else:
86+
self.file_id_list = file_id_list_sliced
87+
super(Directory, self).__init__(self.client, self.file_id_list)
8188

8289
def all_files(self):
8390
"""

sdk/diffgram/core/sliced_directory.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ def __init__(self, client, original_directory: Directory, query: str):
1111
self.client = client
1212
# Share the same ID from the original directory as this is just an in-memory construct for better semantics.
1313
self.id = original_directory.id
14+
self.file_id_list = self.all_file_ids()
15+
super(Directory, self).__init__(self.client, self.file_id_list)
1416

1517
def all_file_ids(self):
1618
page_num = 1
@@ -29,10 +31,10 @@ def to_pytorch(self, transform = None):
2931
Transforms the file list inside the dataset into a pytorch dataset.
3032
:return:
3133
"""
32-
file_id_list = self.all_file_ids()
34+
3335
pytorch_dataset = DiffgramPytorchDataset(
3436
project = self.client,
35-
diffgram_file_id_list = file_id_list,
37+
diffgram_file_id_list = self.file_id_list,
3638
transform = transform
3739

3840
)

0 commit comments

Comments
 (0)