code: def linear_sym(target, X, A1='', A2=''):
      r
      A = _parse_args(target=target, key=A1, default=1.0)
      B = _parse_args(target=target, key=A2, default=0.0)
      X = target[X]
      # Symbols used in symbolic function
      a, b, x = _syp.symbols('a,b,x')
      # Equation
      y = a*x + b
      # Callable functions
      r, s1, s2 = _build_func(eq=y, a=a, b=b,  x=x)
      # Values
      r_val = r(A, B, X)
      s1_val = s1(A, B, X)
      s2_val = s2(A, B, X)
      values = {'S1': s1_val, 'S2': s2_val, 'rate': r_val}
      return values
docs: r"""
      Calculates the rate, as well as slope and intercept of the following
      function at the given value of *x*:
  
          .. math::
              r = A_{1}   x  +  A_{2}
  
      Parameters
      ----------
      A1 -> A2 : string
          The dictionary keys on the target object containing the coefficients
          values to be used in the source term model
  
      X : string
          The dictionary key on the target object containing the the quantity
          of interest
  
      Returns
      -------
      A dictionary containing the following three items:
  
          **'rate'** - The value of the source term function at the given X.
  
          **'S1'** - The slope of the source term function at the given X.
  
          **'S2'** - The intercept of the source term function at the given X.
  
      The slope and intercept provide a linearized source term equation about the
      current value of X as follow:
  
          .. math::
              rate = S_{1}   X  +  S_{2}