docs: def single_column(num_lev=30, water_depth=1., lev=None, **kwargs):
      """Creates domains for a single column of atmosphere overlying a slab of water.
  
      Can also pass a pressure array or pressure level axis object specified in ``lev``.
  
      If argument ``lev`` is not ``None`` then function tries to build a level axis
      and ``num_lev`` is ignored.
  
      **Function-call argument** \n
  
      :param int num_lev:         number of pressure levels
                                  (evenly spaced from surface to TOA) [default: 30]
      :param float water_depth:   depth of the ocean slab [default: 1.]
      :param lev:                 specification for height axis (optional)
      :type lev:                  :class:`~climlab.domain.axis.Axis` or pressure array
      :raises: :exc:`ValueError`  if `lev` is given but neither Axis
                                  nor pressure array.
      :returns:                   a list of 2 Domain objects (slab ocean, atmosphere)
      :rtype:                     :py:class:`list` of :class:`SlabOcean`, :class:`SlabAtmosphere`
  
      :Example:
  
          ::
  
              >>> from climlab import domain
  
              >>> sfc, atm = domain.single_column(num_lev=2, water_depth=10.)
  
              >>> print sfc
              climlab Domain object with domain_type=ocean and shape=(1,)
  
              >>> print atm
              climlab Domain object with domain_type=atm and shape=(2,)
  
      """
      if lev is None:
          levax = Axis(axis_type='lev', num_points=num_lev)
      elif isinstance(lev, Axis):
          levax = lev
      else:
          try:
              levax = Axis(axis_type='lev', points=lev)
          except:
              raise ValueError('lev must be Axis object or pressure array')
      depthax = Axis(axis_type='depth', bounds=[water_depth, 0.])
      slab = SlabOcean(axes=depthax, **kwargs)
      atm = Atmosphere(axes=levax, **kwargs)
      return slab, atm