human
Write me a Python code to find arma approximation to ar process given the following:
Complete the below
def ar2arma(ar_des, p, q, n=20, mse='ar', start=None):

    ''''Find arma approximation to ar process
    This finds the ARMA(p,q) coefficients that minimize the integrated
    squared difference between the impulse_response functions (MA
    representation) of the AR and the ARMA process. This does not  check
    whether the MA lag polynomial of the ARMA process is invertible, neither
    does it check the roots of the AR lag polynomial.
    Parameters
    ar_des : array_like
    coefficients of original AR lag polynomial, including lag zero
    p : int
    length of desired AR lag polynomials
    q : int
    length of desired MA lag polynomials
    n : int
    number of terms of the impulse_response function to include in the
    objective function for the approximation
    mse : string, \'ar\'
    not used yet,
    Returns
    ar_app, ma_app : arrays
    coefficients of the AR and MA lag polynomials of the approximation
    res : tuple
    result of optimize.leastsq
    Notes
    Extension is possible if we want to match autocovariance instead
    of impulse response function.'
    '''
assistant
#Here is Python code to find arma approximation to ar process
.
    def msear_err(arma, ar_des):
        (ar, ma) = (np.r_[(1, arma[:(p - 1)])], np.r_[(1, arma[(p - 1):])])
        ar_approx = arma_impulse_response(ma, ar, n)
        return (ar_des - ar_approx)
    if (start is None):
        arma0 = np.r_[(((-0.9) * np.ones((p - 1))), np.zeros((q - 1)))]
    else:
        arma0 = start
    res = optimize.leastsq(msear_err, arma0, ar_des, maxfev=5000)
    arma_app = np.atleast_1d(res[0])
    ar_app = (np.r_[(1, arma_app[:(p - 1)])],)
    ma_app = np.r_[(1, arma_app[(p - 1):])]
    return (ar_app, ma_app, res)