code: def test_mstump_nan_self_join_all_dimensions(
      T, m, substitute, substitution_locations
  ):
      excl_zone = int(np.ceil(m / 4))
  
      T_sub = T.copy()
  
      for substitution_location in substitution_locations:
          T_sub[:] = T[:]
          T_sub[:, substitution_location] = substitute
  
          ref_P, ref_I = naive.mstump(T_sub, m, excl_zone)
          comp_P, comp_I = mstump(T_sub, m)
  
          npt.assert_almost_equal(ref_P, comp_P)
          npt.assert_almost_equal(ref_I, comp_I)
  
imports: import functools
  import naive
  import numpy
  import numpy.testing
  import pandas
  import pytest
  from stumpy import config, core, mdl, mstump, subspace
  from stumpy.mstump import _get_first_mstump_profile, _get_multi_QT, _multi_mass, multi_distance_profile
label_desc: Use image node_id 23 for calling a global function with example usage: test_mstump_nan_self_join_all_dimensions(T, m, substitute, substitution_locations) without return types