def get_low_high_cells(methylation_df, patient, percentage):
    """
    For the given patient calculate the percentage high and low cells, excluding normal cells.
    :param methylation_df: df containing the average methylation levels for each cell.
    :param patient: The patient to calculate cells for.
    :param percentage: how many percent of cells
    :return: two lists, names of the top and bottom percentage percent of cells
    """
    df = methylation_df.loc[(methylation_df.patient == patient) & (methylation_df.lesion != "NC"), :]
    df = df.sort_values(by=['mean'])
    bottom = min(len(df) - 1, int((len(df) / 100) * percentage))
    top = int((len(df) / 100) * percentage)
    low_perc = list(df.iloc[:bottom].index)
    high_perc = list(df.iloc[::-1][:top].index)
    return high_perc, low_perc