code: def subm(a, b, out=None):
      """
      c = subm(a, b, out={None})
  
      Subtract (with saturation).
  
      This is similar to:
  
      c = a - b
  
      but with saturation instead of underflow.
  
      Examples
      --------
  
      ::
  
          a = np.array([10, 10, 10], np.uint8)
          b = np.array([ 5, 10, 15], np.uint8)
  
          print subm(a,b)
  
      Prints out::
  
          [5, 0, 0]
  
      Parameters
      ----------
      a : ndarray
      b : ndarray
      out : ndarray, optional
          Pass ``a`` as output to subtract in-place.
  
      Returns
      -------
      c : ndarray
          Result of subtraction
      """
      if a.dtype != b.dtype:
          raise ValueError(
              "mahotas.subm: This is only well-defined if both arguments are of the same type"
          )
      out = _get_output(a, out, "subm")
      if out is not a:
          out[:] = a
      return _morph.subm(out, b)
  
imports: from __future__ import division
  import numpy
  from .internal import _get_output, _verify_is_integer_type, _check_2
  from .None import _morph
label_desc: Use image node_id 18 for calling a global function with example usage: subm(a, b, out) and returns: _morph