nodes: 0, module; 1, function_definition; 2, function_name:log_interpolate_1d; 3, parameters; 4, block; 5, identifier:x; 6, identifier:xp; 7, list_splat_pattern; 8, dictionary_splat_pattern; 9, expression_statement; 10, comment:# Pull out kwargs; 11, expression_statement; 12, expression_statement; 13, comment:# Log x and xp; 14, expression_statement; 15, expression_statement; 16, return_statement; 17, identifier:args; 18, identifier:kwargs; 19, comment:r"""Interpolates data with logarithmic x-scale over a specified axis.
  
      Interpolation on a logarithmic x-scale for interpolation values in pressure coordintates.
  
      Parameters
      ----------
      x : array-like
          1-D array of desired interpolated values.
  
      xp : array-like
          The x-coordinates of the data points.
  
      args : array-like
          The data to be interpolated. Can be multiple arguments, all must be the same shape as
          xp.
  
      axis : int, optional
          The axis to interpolate over. Defaults to 0.
  
      fill_value: float, optional
          Specify handling of interpolation points out of data bounds. If None, will return
          ValueError if points are out of bounds. Defaults to nan.
  
      Returns
      -------
      array-like
          Interpolated values for each point with coordinates sorted in ascending order.
  
      Examples
      --------
       >>> x_log = np.array([1e3, 1e4, 1e5, 1e6])
       >>> y_log = np.log(x_log) * 2 + 3
       >>> x_interp = np.array([5e3, 5e4, 5e5])
       >>> metpy.calc.log_interp(x_interp, x_log, y_log)
       array([20.03438638, 24.63955657, 29.24472675])
  
      Notes
      -----
      xp and args must be the same shape.
  
      """; 20, assignment; 21, assignment; 22, assignment; 23, assignment; 24, call; 25, identifier:fill_value; 26, call; 27, identifier:axis; 28, call; 29, identifier:log_x; 30, call; 31, identifier:log_xp; 32, call; 33, identifier:interpolate_1d; 34, argument_list; 35, attribute; 36, argument_list; 37, attribute; 38, argument_list; 39, attribute; 40, argument_list; 41, attribute; 42, argument_list; 43, identifier:log_x; 44, identifier:log_xp; 45, list_splat; 46, keyword_argument; 47, keyword_argument; 48, identifier:kwargs; 49, identifier:pop; 50, string; 51, attribute; 52, identifier:kwargs; 53, identifier:pop; 54, string; 55, integer:0; 56, identifier:np; 57, identifier:log; 58, identifier:x; 59, identifier:np; 60, identifier:log; 61, identifier:xp; 62, identifier:args; 63, identifier:axis; 64, identifier:axis; 65, identifier:fill_value; 66, identifier:fill_value; 67, string_content:fill_value; 68, identifier:np; 69, identifier:nan; 70, string_content:axis
code: def log_interpolate_1d(x, xp, *args, **kwargs):
      r"""Interpolates data with logarithmic x-scale over a specified axis.
  
      Interpolation on a logarithmic x-scale for interpolation values in pressure coordintates.
  
      Parameters
      ----------
      x : array-like
          1-D array of desired interpolated values.
  
      xp : array-like
          The x-coordinates of the data points.
  
      args : array-like
          The data to be interpolated. Can be multiple arguments, all must be the same shape as
          xp.
  
      axis : int, optional
          The axis to interpolate over. Defaults to 0.
  
      fill_value: float, optional
          Specify handling of interpolation points out of data bounds. If None, will return
          ValueError if points are out of bounds. Defaults to nan.
  
      Returns
      -------
      array-like
          Interpolated values for each point with coordinates sorted in ascending order.
  
      Examples
      --------
       >>> x_log = np.array([1e3, 1e4, 1e5, 1e6])
       >>> y_log = np.log(x_log) * 2 + 3
       >>> x_interp = np.array([5e3, 5e4, 5e5])
       >>> metpy.calc.log_interp(x_interp, x_log, y_log)
       array([20.03438638, 24.63955657, 29.24472675])
  
      Notes
      -----
      xp and args must be the same shape.
  
      """
      # Pull out kwargs
      fill_value = kwargs.pop('fill_value', np.nan)
      axis = kwargs.pop('axis', 0)
  
      # Log x and xp
      log_x = np.log(x)
      log_xp = np.log(xp)
      return interpolate_1d(log_x, log_xp, *args, axis=axis, fill_value=fill_value)