code: def test_bam_query(self):
      reader = sam_reader.SamReader.from_file(
          reads_path=self.bam, ref_path="", options=self.options
      )
      expected = [
          (ranges.parse_literal("chr20:10,000,000-10,000,100"), 106),
          (ranges.parse_literal("chr20:10,000,000-10,000,000"), 45),
      ]
      with reader:
          for interval, n_expected in expected:
              with reader.query(interval) as iterable:
                  self.assertIsInstance(
                      iterable, clif_postproc.WrappedCppIterable
                  )
                  self.assertEqual(
                      test_utils.iterable_len(iterable), n_expected
                  )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl.testing import absltest
  from absl.testing import parameterized
  from third_party.nucleus.io import clif_postproc
  from third_party.nucleus.io.python import sam_reader
  from third_party.nucleus.protos import reads_pb2
  from third_party.nucleus.protos import reference_pb2
  from third_party.nucleus.testing import test_utils
  from third_party.nucleus.util import ranges
label_desc: Use image node_id 3 for calling the SamReaderTest obj's underlying member method code with example usage: obj.test_bam_query() without return types