Why does logic in processed_file_names
make InMemoryDataset
forget about processed_paths
?
#8811
-
Consider this minimal (not) working example: # file my_dataset.py
from torch_geometric.data import Data, InMemoryDataset
class MyOwnDataset(InMemoryDataset):
def __init__(
self,
root,
transform=None,
pre_transform=None,
pre_filter=None,
remove_outliers=True,
):
super().__init__(root, transform, pre_transform, pre_filter)
self.remove_outliers = remove_outliers
self.load(self.processed_paths[0])
@property
def raw_file_names(self):
return ["data.txt"]
@property
def processed_file_names(self):
if self.remove_outliers:
return ["data_wo_outliers.pt"]
return ["data.pt"]
def process(self):
data_list = []
# Read data file
data_list.append(Data())
if self.remove_outliers:
# Remove outliers
pass
self.save(data_list, self.processed_paths[0])
if __name__ == "__main__":
dataset = MyOwnDataset(root="data")
print(dataset[0]) Running If I comment out only the if condition in Edit: I can also make it work by keeping the if condition, but swapping the first to lines of |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Thanks for the issue. Python will output this error because there is an error raised when accessing This fixes it: self.remove_outliers = remove_outliers
super().__init__(root, transform, pre_transform, pre_filter)
self.load(self.processed_paths[0]) |
Beta Was this translation helpful? Give feedback.
Thanks for the issue. Python will output this error because there is an error raised when accessing
processed_file_names
. In particular, becauseself.remove_outliers
is not yet defined sinceprocessed_file_names
is called insuper().__init__()
.This fixes it: