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_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 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