docstr: Validate output of pymdp's `dirichlet_log_evidence` function 
  against output of `spm_MDP_log_evidence` from DEM in SPM (MATLAB). 
  Test `b` vectorizes the log evidence calculations across a _matrix_ of 
  reduced models, with one reduced model prior per column of the argument `r_dir`
code: def test_BMR_SPM_b(self):
      """
      Validate output of pymdp's `dirichlet_log_evidence` function
      against output of `spm_MDP_log_evidence` from DEM in SPM (MATLAB).
      Test `b` vectorizes the log evidence calculations across a _matrix_ of
      reduced models, with one reduced model prior per column of the argument `r_dir`
      """
      array_path = os.path.join(
          os.getcwd(), DATA_PATH + "bmr_test_b.mat"
      )
      mat_contents = loadmat(file_name=array_path)
      F_valid = mat_contents["F"]
      s_dir_valid = mat_contents["s_dir"]
      q_dir = mat_contents["q_dir"]
      p_dir = mat_contents["p_dir"]
      r_dir = mat_contents["r_dir"]
  
      F_out, s_dir_out = dirichlet_log_evidence(q_dir, p_dir, r_dir)
  
      self.assertTrue(np.allclose(F_valid, F_out))
  
      self.assertTrue(np.allclose(s_dir_valid, s_dir_out))
  
file_path: pymdp/test/test_SPM_validation.py
imports: import os
  import unittest
  import numpy
  from scipy.io import loadmat
  from pymdp.agent import Agent
  from pymdp.utils import to_obj_array, build_xn_vn_array, get_model_dimensions, convert_observation_array
  from pymdp.maths import dirichlet_log_evidence
label_desc: Use image node_id 3 for calling the TestSPM obj's underlying member method code with example usage: obj.test_BMR_SPM_b() without return types