class documentation

Selects only the fields with the given names from the samples in the collection. All other fields are excluded.

Note that default sample fields are always selected.

Examples:

import fiftyone as fo

dataset = fo.Dataset()
dataset.add_samples(
    [
        fo.Sample(
            filepath="/path/to/image1.png",
            uniqueness=1.0,
            ground_truth=fo.Detections(
                detections=[
                    fo.Detection(
                        label="cat",
                        bounding_box=[0.1, 0.1, 0.5, 0.5],
                        mood="surly",
                        age=51,
                    ),
                    fo.Detection(
                        label="dog",
                        bounding_box=[0.2, 0.2, 0.3, 0.3],
                        mood="happy",
                        age=52,
                    ),
                ]
            )
        ),
        fo.Sample(
            filepath="/path/to/image2.png",
            uniqueness=0.0,
        ),
        fo.Sample(
            filepath="/path/to/image3.png",
        ),
    ]
)

#
# Include only the default fields on each sample
#

stage = fo.SelectFields()
view = dataset.add_stage(stage)

#
# Include only the `uniqueness` field (and the default fields) on each
# sample
#

stage = fo.SelectFields("uniqueness")
view = dataset.add_stage(stage)

#
# Include only the `mood` attribute (and the default attributes) of
# each `Detection` in the `ground_truth` field
#

stage = fo.SelectFields("ground_truth.detections.mood")
view = dataset.add_stage(stage)
Parameters
field_namesa field name or iterable of field names to select. May contain embedded.field.name as well
meta_filter

a filter that dynamically selects fields in the collection's schema according to the specified rule, which can be matched against the field's name, type, description, and/or info. For example:

  • Use meta_filter="2023" or meta_filter={"any": "2023"} to select fields that have the string "2023" anywhere in their name, type, description, or info
  • Use meta_filter={"type": "StringField"} or meta_filter={"type": "Classification"} to select all string or classification fields, respectively
  • Use meta_filter={"description": "my description"} to select fields whose description contains the string "my description"
  • Use meta_filter={"info": "2023"} to select fields that have the string "2023" anywhere in their info
  • Use meta_filter={"info.key": "value"}} to select fields that have a specific key/value pair in their info
  • Include meta_filter={"include_nested_fields": True, ...} in your meta filter to include all nested fields in the filter
Method __init__ Undocumented
Method get_selected_fields Returns a list of fields that have been selected by the stage, if any.
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 field_names A list of field names to select.
Property meta_filter A filter that dynamically selects fields.
Class Method _params Returns a list of JSON dicts describing the stage's supported parameters.
Method _get_selected_fields Undocumented
Method _get_selected_frame_fields Undocumented
Method _kwargs Returns a list of [name, value] lists describing the parameters of this stage instance.
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.
Instance Variable _allow_missing Undocumented
Instance Variable _field_names Undocumented
Instance Variable _media_types Undocumented
Instance Variable _meta_filter 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_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 load_view Loads the fiftyone.core.view.DatasetView containing the output of the stage.
Property flattens_groups Whether this stage flattens groups into a non-grouped collection.
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 _serialize Returns a JSON dict representation of the ViewStage.
Instance Variable _uuid Undocumented
def __init__(self, field_names=None, meta_filter=None, _allow_missing=False, _media_types=None): (source)

Undocumented

def get_selected_fields(self, sample_collection, frames=False): (source)

Returns a list of fields that have been selected by the stage, if any.

View stages only need to report selected fields if they insist that non-selected fields not appear in the schema of the returned view.

Parameters
sample_collectionthe fiftyone.core.collections.SampleCollection to which the stage is being applied
frames:Falsewhether to return sample-level (False) or frame-level (True) fields
Returns
a list of fields, or None if no fields have been selected
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
@property
field_names = (source)

A list of field names to select.

@property
meta_filter = (source)

A filter that dynamically selects fields.

@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_selected_fields(self, sample_collection, use_db_fields=False): (source)

Undocumented

def _get_selected_frame_fields(self, sample_collection, use_db_fields=False): (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 _needs_frames(self, sample_collection): (source)

Whether the stage requires frame labels of video samples to be attached.

Parameters
sample_collectionthe fiftyone.core.collections.SampleCollection to which the stage is being applied
Returns
True/False
def _needs_group_slices(self, sample_collection): (source)

Whether the stage requires group slice(s) to be attached.

Parameters
sample_collectionthe fiftyone.core.collections.SampleCollection to which the stage is being applied
Returns
None, or a list of group slices
_allow_missing = (source)

Undocumented

_field_names = (source)

Undocumented

_media_types = (source)

Undocumented

_meta_filter = (source)

Undocumented