def METHOD_NAME(self, point_array: np.array):
    if self.roi_type == "ENTIRE ANIMAL":
        animal_shape = LineString(point_array.tolist()).buffer(self.offset_px)
    elif self.roi_type == "SINGLE BODY-PART CIRCLE":
        animal_shape = Point(point_array).buffer(self.offset_px)
    elif self.roi_type == "SINGLE BODY-PART SQUARE":
        top_left = Point(
            int(point_array[0] - self.offset_px),
            int(point_array[1] - self.offset_px),
        )
        top_right = Point(
            int(point_array[0] + self.offset_px),
            int(point_array[1] - self.offset_px),
        )
        bottom_left = Point(
            int(point_array[0] - self.offset_px),
            int(point_array[1] + self.offset_px),
        )
        bottom_right = Point(
            int(point_array[0] + self.offset_px),
            int(point_array[1] + self.offset_px),
        )
        animal_shape = Polygon([top_left, top_right, bottom_left, bottom_right])
    if self.force_rectangle:
        animal_shape = Polygon(
            self.minimum_bounding_rectangle(
                points=np.array(animal_shape.exterior.coords)
            )
        )
    animal_shape = shapely.wkt.loads(
        shapely.wkt.dumps(animal_shape, rounding_precision=1)
    ).simplify(0)
    return animal_shape