code: def test_ray_tracing_output_shape(self, abs_, scat_, expected_shape):
      if isinstance(abs_, float):
          absorption = abs_
      else:
          absorption = torch.rand(abs_, dtype=self.dtype)
      if isinstance(scat_, float):
          scattering = scat_
      else:
          scattering = torch.rand(scat_, dtype=self.dtype)
  
      room_dim = torch.tensor([3, 4, 5], dtype=self.dtype)
      mic_array = torch.tensor([[0, 0, 0], [1, 1, 1]], dtype=self.dtype)
      source = torch.tensor([1, 2, 3], dtype=self.dtype)
      num_rays = 100
  
      hist = F.ray_tracing(
          room=room_dim,
          source=source,
          mic_array=mic_array,
          num_rays=num_rays,
          absorption=absorption,
          scattering=scattering,
      )
      assert hist.shape == expected_shape
  
imports: import torch
  import torchaudio.prototype.functional
  from parameterized import param, parameterized
  from torchaudio_unittest.common_utils import nested_params, TestBaseMixin
  from .dsp_utils import exp_sigmoid, freq_ir, oscillator_bank, sinc_ir
label_desc: Use image node_id 15 for calling the FunctionalTestImpl obj's underlying member method code with example usage: obj.test_ray_tracing_output_shape(abs_, scat_, expected_shape) without return types