def _train_predict(
    licch, epochs, fullpath=None, save=False, verb=2, compute_uncertainty=False
):
    """Trains models and returns video scores for one criteria

    licch (Licchavi()): licchavi object innitialized with data
    epochs (int): maximum number of training epochs
    fullpath (str): path where to save trained models
    save (bool): wether to save the result of training or not
    verb (int): verbosity level

    Returns :
    - (list of all vIDS , tensor of global video scores)
    - (list of arrays of local vIDs , list of tensors of local video scores)
    (float list list, float list): uncertainty of local scores,
                                    uncertainty of global scores
                                    (None, None) if not computed
    """
    uncertainties = licch.train(
        epochs,
        compute_uncertainty=compute_uncertainty)
    glob, loc = licch.output_scores()
    if save:
        licch.save_models(fullpath)
    return glob, loc, uncertainties