code: def get_knots(start, end, n_bases=10, spline_order=3):
      
      x_range = end - start
      start = start - x_range * 0.001
      end = end + x_range * 0.001
  
      # mgcv annotation
      m = spline_order - 1
      nk = n_bases - m            # number of interior knots
  
      dknots = (end - start) / (nk - 1)
      knots = np.linspace(start=start - dknots * (m + 1),
                          stop=end + dknots * (m + 1),
                          num=nk + 2 * m + 2)
      return knots.astype(np.float32)
docs: Arguments:
          x; np.array of dim 1