def METHOD_NAME(self, old, new, fields=None):
    """
    Compare data to help changes
    NB
    must be same sweep
    ( same index must be same frequence )
    :param old:
    :param new:
    """
    fields = fields or [
        ("freq", str),
    ]
    def no_compare():
        return {k: "-" for k, _ in fields}
    old_idx = sorted(old.keys())
    # 'odict_keys' object is not subscriptable
    new_idx = sorted(new.keys())
    diff = {}
    i_max = min(len(old_idx), len(new_idx))
    i_tot = max(len(old_idx), len(new_idx))
    if i_max != i_tot:
        logger.warning(
            "resonances changed from %s to %s", len(old_idx), len(new_idx)
        )
    split = 0
    max_delta_f = 1_000_000
    for i, k in enumerate(new_idx):
        if len(old_idx) <= i + split:
            diff[i] = no_compare()
            continue
        logger.info("Resonance %s at %s", i, new[k]["freq"])
        delta_f = new[k]["freq"] - old[old_idx[i + split]]["freq"]
        if abs(delta_f) < max_delta_f:
            logger.debug("can compare")
            diff[i] = {
                desc: fnc(new[k][desc] - old[old_idx[i + split]][desc])
                for desc, fnc in fields
            }
            logger.debug("Deltas %s", diff[i])
            continue
        logger.debug(
            "can't compare, %s is too much ", format_frequency(delta_f)
        )
        if delta_f > 0:
            logger.debug("possible missing band, ")
            if len(old_idx) > (i + split + 1):
                if (
                    abs(
                        new[k]["freq"] - old[old_idx[i + split + 1]]["freq"]
                    )
                    < max_delta_f
                ):
                    logger.debug("new is missing band, compare next ")
                    split += 1
                    # FIXME: manage 2 or more band missing ?!?
                    continue
                logger.debug("new band, non compare ")
                diff[i] = no_compare()
            continue
        logger.debug("new band, non compare ")
        diff[i] = no_compare()
        split -= 1
    for i in range(i_max, i_tot):
        # add missing in old ... if any
        diff[i] = no_compare()
    return diff