code: def afb3D(x, af1, af2=None, af3=None):
      """3D Analysis Filter Bank
  
      Parameters
      ----------
      x : 3D ndarray
          N1 by N2 by N3 array matrix, where
          1) N1, N2, N3 all even
          2) N1 >= 2*len(af1)
          3) N2 >= 2*len(af2)
          4) N3 >= 2*len(af3)
      afi : 2D ndarray
          analysis filters for dimension i
          afi[:, 1] - lowpass filter
          afi[:, 2] - highpass filter
  
      Returns
      -------
      lo : 1D array
          lowpass subband
      hi : 1D array
          highpass subbands, h[d]- d = 1..7
      """
  
      if af2 is None:
          af2 = af1
      if af3 is None:
          af3 = af1
      # filter along dimension 0
      L, H = afb3D_A(x, af1, 0)
      # filter along dimension 1
      LL, LH = afb3D_A(L, af2, 1)
      HL, HH = afb3D_A(H, af2, 1)
      # filter along dimension 3
      LLL, LLH = afb3D_A(LL, af3, 2)
      LHL, LHH = afb3D_A(LH, af3, 2)
      HLL, HLH = afb3D_A(HL, af3, 2)
      HHL, HHH = afb3D_A(HH, af3, 2)
      return LLL, [LLH, LHL, LHH, HLL, HLH, HHL, HHH]
  
file_path: dipy/dipy/core/wavelet.py
imports: import numpy
  from dipy.denoise import nlmeans_block
label_desc: Use image node_id 6 for calling a global function with example usage: afb3D(x, af1, af2, af3) and returns: LLL,  list