code: def kelly_kapowski(s, g, w, its=50, r=0.025, m=1.5, **kwargs):
      
      if isinstance(s, iio.ANTsImage):
          s = s.clone('unsigned int')
  
      d = s.dimension
      outimg = g.clone()
      kellargs = {'d': d,
                  's': s,
                  'g': g,
                  'w': w,
                  'c': its,
                  'r': r,
                  'm': m,
                  'o': outimg}
      for k, v in kwargs.items():
          kellargs[k] = v
  
      processed_kellargs = utils._int_antsProcessArguments(kellargs)
  
      libfn = utils.get_lib_fn('KellyKapowski')
      libfn(processed_kellargs)
      return outimg
docs: Compute cortical thickness using the DiReCT algorithm.
  
      Diffeomorphic registration-based cortical thickness based on probabilistic
      segmentation of an image.  This is an optimization algorithm.
  
      
      Arguments
      ---------
      s : ANTsimage
          segmentation image
      
      g : ANTsImage
          gray matter probability image
      
      w : ANTsImage
          white matter probability image
      
      its : integer
          convergence params - controls iterations
      
      r : scalar
          gradient descent update parameter
      
      m : scalar
          gradient field smoothing parameter
      
      kwargs : keyword arguments
          anything else, see KellyKapowski help in ANTs
      
      Returns
      -------
      ANTsImage
  
      Example
      -------
      >>> import ants
      >>> img = ants.image_read( ants.get_ants_data('r16') ,2)
      >>> img = ants.resample_image(img, (64,64),1,0)
      >>> mask = ants.get_mask( img )
      >>> segs = ants.kmeans_segmentation( img, k=3, kmask = mask)
      >>> thick = ants.kelly_kapowski(s=segs['segmentation'], g=segs['probabilityimages'][1],
                                      w=segs['probabilityimages'][2], its=45, 
                                      r=0.5, m=1)