> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encord.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Automated Labeling

The Encord SDK allows you to interact with Encord’s automated labeling features. Our library includes sampling, augmentation, transformation and labeling algorithms.

## Object interpolation

The [encord.project.Project](/sdk-documentation/sdk-references/project#project) object interpolator allows you to run interpolation algorithms on project labels (requires a project ontology).

Interpolation is supported for the following annotation types:

1. Bounding box

2. Rotatable bounding box

3. Polygon

4. Polyline

5. Object primitive

6. Keypoint

Use the [encord.project.Project.object\_interpolation()](/sdk-documentation/sdk-references/project#object-interpolation) method to run object interpolation.

Key frames, between which interpolation is run, can be obtained from label rows containing videos. The objects to interpolate between key frames is a list of `<object_hash>` values obtained from the `label_row["labels"]["<frame_number>"]["objects"]` entry in the label row. An object (identified by its \<object\_hash>) is interpolated between the key frames where it is present.

The interpolation algorithm can be run on multiple objects with different ontological objects at the same time (for example, you can run interpolation on bounding box, polygon, and keypoint, using the same function call) on any number of key frames.

<CodeGroup>
  ```python Sample Code theme={"dark"}
  # Fetch label row
  sample_label = project.get_label_row("sample_label_uid")

  # Prepare interpolation
  key_frames = sample_label["data_units"]["sample_data_hash"]["labels"]
  objects_to_interpolate = ["sample_object_uid"]

  # Run interpolation
  interpolation_result = project.object_interpolation(key_frames, objects_to_interpolate)
  print(interpolation_result)
  ```

  ```Example Output theme={"dark"}
  {
      "frame": {
          "objects": [
              {
                  "objectHash": object_uid,
                  "featureHash": feature_uid (from editor ontology),
                  "polygon": {
                      "0": {
                          "x": x1,
                          "y": y1,
                      },
                      "1": {
                          "x": x2,
                          "y": y2,
                      },
                      "2" {
                          "x": x3,
                          "y": y3,
                      },
                      ...,
                  }
              },
              {
                  ...
              }
          ]
      },
      "frame": {
          ...,
      }
  }
  ```
</CodeGroup>

The interpolation algorithm can also be run from sample frames kept locally, with key\_frames passed in a simple JSON structure (see [doc-strings](/sdk-documentation/sdk-references/project#object-interpolation) for more information).

All that is required is a \<feature\_hash> and object\_hash for each object in your set of key frames.
