code: def test_3d_resampling_properties(self):
      data_param = {
          "mr": {
              "path_to_search": IMAGE_PATH_3D,
              "filename_contains": "Lesion",
              "pixdim": (4, 3, 4),
              "axcodes": "RAS",
          }
      }
      reader = ImageReader().initialise(data_param)
      self.assertDictEqual(reader.spatial_ranks, {"mr": 3})
      self.assertEqual(
          reader.output_list[0]["mr"].output_pixdim, ((4.0, 3.0, 4.0),)
      )
      self.assertEqual(
          reader.output_list[0]["mr"].output_axcodes, (("R", "A", "S"),)
      )
      idx, data, interp = reader()
  
      # test output
      self.assertTrue("mr" in data)
      self.assertTrue(idx in range(len(reader.output_list)))
      self.assertDictEqual(interp, {"mr": (1,)})
      # allows rounding error spatially
      self.assertAllClose(data["mr"].shape[:3], (62, 83, 62), atol=1)
      self.assertAllClose(data["mr"].shape[3:], (1, 1))
  
imports: from __future__ import absolute_import, print_function
  import os
  from PIL import Image
  import nibabel
  import numpy
  import tensorflow
  from niftynet.io.image_reader import ImageReader
  from tests.niftynet_testcase import NiftyNetTestCase
label_desc: Use image node_id 1 for calling the Read3DTest obj's underlying member method code with example usage: obj.test_3d_resampling_properties() without return types