habitat.core.dataset.Dataset class

Base class for dataset specification.

Class methods

def build_content_scenes_filter(config) -> typing.Callable[[T], bool]
Returns a filter function that takes an episode and returns True if that episode is valid under the content_scenes field of the provided config
def get_scenes_to_load(config: DictConfig) -> typing.List[str]
Returns a list of scene names that would be loaded with this dataset. Useful for determining what scenes to split up among different workers.

Static methods

def scene_from_scene_path(scene_path: str) -> str
Helper method to get the scene name from an episode.

Methods

def filter_episodes(self, filter_fn: typing.Callable[[T], bool]) -> Dataset
Returns a new dataset with only the filtered episodes from the original dataset.
def from_json(self, json_str: str, scenes_dir: typing.Optional[str] = None) -> None
Creates dataset from json_str.
def get_episode_iterator(self, *args: typing.Any, **kwargs: typing.Any) -> typing.Iterator[T]
Gets episode iterator with options. Options are specified in EpisodeIterator documentation.
def get_episodes(self, indexes: typing.List[int]) -> typing.List[T]
Get all episodes from a set of indices.
def get_scene_episodes(self, scene_id: str) -> typing.List[T]
Get all episodes involving a particular scene.
def get_splits(self, num_splits: int, episodes_per_split: typing.Optional[int] = None, remove_unused_episodes: bool = False, collate_scene_ids: bool = True, sort_by_episode_id: bool = False, allow_uneven_splits: bool = False) -> typing.List[Dataset]
Returns a list of new datasets, each with a subset of the original episodes.
def to_json(self) -> str
Serialize the Dataset into JSON formatted string so it can be written to a file.

Properties

num_episodes: int get
number of episodes in the dataset
scene_ids: typing.List[str] get
unique scene ids present in the dataset.

Data

episodes: typing.List[T] = None

Method documentation

def habitat.core.dataset.Dataset.get_scenes_to_load(config: DictConfig) -> typing.List[str] classmethod

Returns a list of scene names that would be loaded with this dataset. Useful for determining what scenes to split up among different workers.

Parameters
config The config for the dataset
Returns A list of scene names that would be loaded with the dataset

def habitat.core.dataset.Dataset.scene_from_scene_path(scene_path: str) -> str staticmethod

Helper method to get the scene name from an episode.

Parameters
scene_path The path to the scene, assumes this is formatted: /path/to/<scene_name>.<ext>
Returns <scene_name> from the path

def habitat.core.dataset.Dataset.filter_episodes(self, filter_fn: typing.Callable[[T], bool]) -> Dataset

Returns a new dataset with only the filtered episodes from the original dataset.

Parameters
filter_fn function used to filter the episodes.
Returns the new dataset.

def habitat.core.dataset.Dataset.from_json(self, json_str: str, scenes_dir: typing.Optional[str] = None) -> None

Creates dataset from json_str.

Parameters
json_str JSON string containing episodes information.
scenes_dir directory containing graphical assets relevant for episodes present in json_str.

Directory containing relevant graphical assets of scenes is passed through scenes_dir.

def habitat.core.dataset.Dataset.get_episode_iterator(self, *args: typing.Any, **kwargs: typing.Any) -> typing.Iterator[T]

Gets episode iterator with options. Options are specified in EpisodeIterator documentation.

Parameters
args positional args for iterator constructor
kwargs keyword args for iterator constructor
Returns episode iterator with specified behavior

To further customize iterator behavior for your Dataset subclass, create a customized iterator class like EpisodeIterator and override this method.

def habitat.core.dataset.Dataset.get_episodes(self, indexes: typing.List[int]) -> typing.List[T]

Get all episodes from a set of indices.

Parameters
indexes episode indices in dataset.
Returns list of episodes corresponding to indexes.

def habitat.core.dataset.Dataset.get_scene_episodes(self, scene_id: str) -> typing.List[T]

Get all episodes involving a particular scene.

Parameters
scene_id id of scene in scene dataset.
Returns list of episodes for the scene_id.

def habitat.core.dataset.Dataset.get_splits(self, num_splits: int, episodes_per_split: typing.Optional[int] = None, remove_unused_episodes: bool = False, collate_scene_ids: bool = True, sort_by_episode_id: bool = False, allow_uneven_splits: bool = False) -> typing.List[Dataset]

Returns a list of new datasets, each with a subset of the original episodes.

Parameters
num_splits the number of splits to create.
episodes_per_split if provided, each split will have up to this many episodes. If it is not provided, each dataset will have len(original_dataset.episodes) // num_splits episodes. If max_episodes_per_split is provided and is larger than this value, it will be capped to this value.
remove_unused_episodes once the splits are created, the extra episodes will be destroyed from the original dataset. This saves memory for large datasets.
collate_scene_ids if true, episodes with the same scene id are next to each other. This saves on overhead of switching between scenes, but means multiple sequential episodes will be related to each other because they will be in the same scene.
sort_by_episode_id if true, sequences are sorted by their episode ID in the returned splits.
allow_uneven_splits if true, the last splits can be shorter than the others. This is especially useful for splitting over validation/test datasets in order to make sure that all episodes are copied but none are duplicated.
Returns a list of new datasets, each with their own subset of episodes.

All splits will have the same number of episodes, but no episodes will be duplicated.