def predict(drops):
    """
    predict drop rank and category: Repetitive\ Structural
    :param drops: a Drop object after data generation and
    :return: Drop object, categorized and ranked.
    """
    if drops.drops is None:
        raise Exception("Drops data is not available")
    if drops.X is None:
        raise Exception("Train data for prediction is not available")

    # Predict drop type and drop rank
    drops.update_profiler()
    drops.categorize_drops()
    drops.rank_drops()
    return drops