code: def test_serialize(self):
      bbox_area = F("bounding_box")[2] * F("bounding_box")[3]
  
      aggregations = [
          fo.Bounds("predictions.detections.confidence"),
          fo.Count(),
          fo.Count("predictions.detections"),
          fo.CountValues("predictions.detections.label"),
          fo.Distinct("predictions.detections.label"),
          fo.FacetAggregations(
              "predictions.detections",
              [fo.CountValues("label"), fo.Bounds("confidence")],
          ),
          fo.HistogramValues(
              "predictions.detections.confidence",
              bins=50,
              range=[0, 1],
          ),
          fo.Mean("predictions.detections[]", expr=bbox_area),
          fo.Schema("predictions.detections"),
          fo.ListSchema("predictions.detections[]"),
          fo.Std("predictions.detections[]", expr=bbox_area),
          fo.Sum("predictions.detections", expr=F().length()),
          fo.Values("id"),
      ]
  
      agg_dicts = [a._serialize() for a in aggregations]
      also_aggregations = [
          fo.Aggregation._from_dict(d) for d in agg_dicts
      ]
  
      self.assertListEqual(aggregations, also_aggregations)
  
imports: from datetime import date, datetime, timedelta
  import math
  from bson import ObjectId
  import numpy
  import unittest
  import fiftyone
  import fiftyone.core.fields
  from fiftyone import ViewField
  from decorators import drop_datasets
label_desc: Use image node_id 20 for calling the DatasetTests obj's underlying member method code with example usage: obj.test_serialize() without return types