<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def search(df, match, columns=['Proteins','Protein names','Gene names']):
 """ Search for a given string in a set of columns in a processed ``DataFrame``. Returns a filtered ``DataFrame`` where `match` is contained in one of the `columns`. :param df: Pandas ``DataFrame`` :param match: ``str`` to search for in columns :param columns: ``list`` of ``str`` to search for match :return: filtered Pandas ``DataFrame`` """

    df = df.copy()
    dft = df.reset_index()
    
    mask = np.zeros((dft.shape[0],), dtype=bool)
    idx = ['Proteins','Protein names','Gene names']
    for i in idx:
        if i in dft.columns:
            mask = mask | np.array([match in str(l) for l in dft[i].values])

    return df.iloc[mask]