class documentation

Selects the specified group slice(s) from a grouped collection.

When flat==True, the returned view is a flattened non-grouped view containing the samples from the slice(s) of interest.

When flat=False, the returned view is a grouped collection containing only the slice(s) of interest.

Note

When flat=True, this stage performs a $lookup that pulls the requested slice(s) for each sample in the input collection from the source dataset. As a result, the stage emits unfiltered samples.

Examples:

import fiftyone as fo

dataset = fo.Dataset()
dataset.add_group_field("group", default="ego")

group1 = fo.Group()
group2 = fo.Group()

dataset.add_samples(
    [
        fo.Sample(
            filepath="/path/to/left-image1.jpg",
            group=group1.element("left"),
        ),
        fo.Sample(
            filepath="/path/to/video1.mp4",
            group=group1.element("ego"),
        ),
        fo.Sample(
            filepath="/path/to/right-image1.jpg",
            group=group1.element("right"),
        ),
        fo.Sample(
            filepath="/path/to/left-image2.jpg",
            group=group2.element("left"),
        ),
        fo.Sample(
            filepath="/path/to/video2.mp4",
            group=group2.element("ego"),
        ),
        fo.Sample(
            filepath="/path/to/right-image2.jpg",
            group=group2.element("right"),
        ),
    ]
)

#
# Retrieve the samples from the "ego" group slice
#

stage = fo.SelectGroupSlices("ego")
view = dataset.add_stage(stage)

#
# Retrieve the samples from the "left" or "right" group slices
#

stage = fo.SelectGroupSlices(["left", "right"])
view = dataset.add_stage(stage)

#
# Select only the "left" and "right" group slices
#

stage = fo.SelectGroupSlices(["left", "right"], flat=False)
view = dataset.add_stage(stage)

#
# Retrieve all image samples
#

stage = fo.SelectGroupSlices(media_type="image")
view = dataset.add_stage(stage)
Parameters
slicesa group slice or iterable of group slices to select. If neither argument is provided, a flattened list of all samples is returned
media_typea media type or iterable of media types whose slice(s) to select
flatwhether to return a flattened collection (True) or a grouped collection (False)
Method __init__ Undocumented
Method get_group_media_types Returns the group media types outputted by this stage, if any, when applied to the given collection, if and only if they are different from the input collection.
Method get_media_type Returns the media type outputted by this stage when applied to the given collection, if and only if it is different from the input type.
Method to_mongo Returns the MongoDB aggregation pipeline for the stage.
Method validate Validates that the stage can be applied to the given collection.
Property flat Whether to generate a flattened collection.
Property flattens_groups Whether this stage flattens groups into a non-grouped collection.
Property media_type The media type(s) whose slices to select.
Property slices The group slice(s) to select.
Class Method _params Returns a list of JSON dicts describing the stage's supported parameters.
Method _get_slices Undocumented
Method _kwargs Returns a list of [name, value] lists describing the parameters of this stage instance.
Method _make_pipeline Undocumented
Method _make_root_pipeline Undocumented
Instance Variable _allow_mixed Undocumented
Instance Variable _flat Undocumented
Instance Variable _force_mixed Undocumented
Instance Variable _media_type Undocumented
Instance Variable _slices Undocumented

Inherited from ViewStage:

Method __eq__ Undocumented
Method __repr__ Undocumented
Method __str__ Undocumented
Method get_edited_fields Returns a list of names of fields or embedded fields that may have been edited by the stage, if any.
Method get_excluded_fields Returns a list of fields that have been excluded by the stage, if any.
Method get_filtered_fields Returns a list of names of fields or embedded fields that contain arrays have been filtered by the stage, if any.
Method get_group_expr Returns the dynamic group expression for the given stage, if any.
Method get_selected_fields Returns a list of fields that have been selected by the stage, if any.
Method load_view Loads the fiftyone.core.view.DatasetView containing the output of the stage.
Property has_view Whether this stage's output view should be loaded via load_view rather than appending stages to an aggregation pipeline via to_mongo.
Property outputs_dynamic_groups Whether this stage outputs or flattens dynamic groups.
Class Method _from_dict Creates a ViewStage instance from a serialized JSON dict representation of it.
Method _needs_frames Whether the stage requires frame labels of video samples to be attached.
Method _needs_group_slices Whether the stage requires group slice(s) to be attached.
Method _serialize Returns a JSON dict representation of the ViewStage.
Instance Variable _uuid Undocumented
def __init__(self, slices=None, media_type=None, flat=True, _allow_mixed=False, _force_mixed=False): (source)

Undocumented

def get_group_media_types(self, sample_collection): (source)

Returns the group media types outputted by this stage, if any, when applied to the given collection, if and only if they are different from the input collection.

Parameters
sample_collectionthe fiftyone.core.collections.SampleCollection to which the stage is being applied
Returns
a dict mapping slice names to media types, or None if the stage does not change the types
def get_media_type(self, sample_collection): (source)

Returns the media type outputted by this stage when applied to the given collection, if and only if it is different from the input type.

Parameters
sample_collectionthe fiftyone.core.collections.SampleCollection to which the stage is being applied
Returns
the media type, or None if the stage does not change the type
def to_mongo(self, sample_collection): (source)

Returns the MongoDB aggregation pipeline for the stage.

Only usable if has_view is False.

Parameters
sample_collectionthe fiftyone.core.collections.SampleCollection to which the stage is being applied
Returns
a MongoDB aggregation pipeline (list of dicts)
def validate(self, sample_collection): (source)

Validates that the stage can be applied to the given collection.

Parameters
sample_collectiona fiftyone.core.collections.SampleCollection
Raises
ViewStageErrorif the stage cannot be applied to the collection

Whether to generate a flattened collection.

@property
flattens_groups = (source)

Whether this stage flattens groups into a non-grouped collection.

The possible return values are:

  • True: this stage flattens groups
  • False: this stage does not flatten groups
  • None: this stage does not change group status

The media type(s) whose slices to select.

The group slice(s) to select.

@classmethod
def _params(cls): (source)

Returns a list of JSON dicts describing the stage's supported parameters.

Returns
a list of JSON dicts
def _get_slices(self, sample_collection): (source)

Undocumented

def _kwargs(self): (source)

Returns a list of [name, value] lists describing the parameters of this stage instance.

Returns
a list of [name, value] lists
def _make_pipeline(self, sample_collection): (source)

Undocumented

def _make_root_pipeline(self, sample_collection): (source)

Undocumented

_allow_mixed = (source)

Undocumented

Undocumented

_force_mixed = (source)

Undocumented

_media_type = (source)

Undocumented

Undocumented