code: def cshift3D(x, m, d):
      """3D Circular Shift
  
      Parameters
      ----------
      x : 3D ndarray
         N1 by N2 by N3 array
      m : int
         amount of shift
      d : int
         dimension of shift (d = 1,2,3)
  
      Returns
      -------
      y : 3D ndarray
         array x will be shifted by m samples down
         along dimension d
      """
  
      s = x.shape
      idx = (np.array(range(s[d])) + (s[d] - m % s[d])) % s[d]
      idx = np.array(idx, dtype=np.int64)
      if d == 0:
          return x[idx, :, :]
      elif d == 1:
          return x[:, idx, :]
      else:
          return x[:, :, idx]
  
file_path: dipy/dipy/core/wavelet.py
imports: import numpy
  from dipy.denoise import nlmeans_block
label_desc: Use image node_id 1 for calling a global function with example usage: cshift3D(x, m, d) and returns: x, x, x