code: def test_ngram_shuffle_drop_ratio(synthetic_dataset, reader_factory):
      """Test to verify the shuffle drop ratio work as expected."""
      fields = {
          -2: [TestSchema.id, TestSchema.id2, TestSchema.matrix],
          -1: [TestSchema.id, TestSchema.id2, TestSchema.image_png],
          0: [TestSchema.id, TestSchema.id2, TestSchema.decimal],
          1: [TestSchema.id, TestSchema.id2, TestSchema.sensor_name],
          2: [TestSchema.id, TestSchema.id2],
      }
      ngram = NGram(
          fields=fields,
          delta_threshold=10,
          timestamp_field=TestSchema.id,
      )
      with reader_factory(
          synthetic_dataset.url,
          schema_fields=ngram,
          shuffle_row_groups=False,
      ) as reader:
          unshuffled = [row[0].id for row in reader]
      with reader_factory(
          synthetic_dataset.url,
          schema_fields=ngram,
          shuffle_row_groups=True,
          shuffle_row_drop_partitions=6,
      ) as reader:
          shuffled = [row[0].id for row in reader]
      assert len(unshuffled) == len(shuffled)
      assert unshuffled != shuffled
  
imports: from decimal import Decimal
  import numpy
  import pytest
  import tensorflow.compat.v1
  from unittest import mock
  from petastorm import make_reader
  from petastorm.ngram import NGram
  from petastorm.tests.conftest import SyntheticDataset, maybe_cached_dataset
  from petastorm.tests.test_common import create_test_dataset, TestSchema
  from petastorm.tests.test_tf_utils import create_tf_graph
  from petastorm.tf_utils import tf_tensors
label_desc: Use image node_id 28 for calling a global function with example usage: test_ngram_shuffle_drop_ratio(synthetic_dataset, reader_factory) without return types