def filter_nuc_variants(nuc_variants):
    """
    Transforms nucleotide variants of type SUB longer than 1 in multiple variants of length 1.
    Ignore insertions or substitutions of alternative sequence 'n'.
    Removes duplicated variant impacts.
    """
    new_nuc_variants = []
    for n in nuc_variants:
        seq_original = n['sequence_original']
        seq_alternative = n['sequence_alternative']
        start_original = int(n['start_original'])
        start_alternative = int(n['start_alternative'])
        variant_length = int(n['variant_length'])
        variant_type = n['variant_type']
        impacts = n['annotations']
        impacts_set = set(tuple(values) for values in impacts if not values[0].startswith('GU280'))
        # split substituions into single point mutations + ignore SUBs or INS to 'n'
        if (variant_type == 'SUB' and variant_length > 1) or seq_alternative.lower() == 'n':
            for i in range(variant_length):
                if seq_alternative[i].lower() != 'n':
                    new_nuc_variants.append({
                        'sequence_original': seq_original[i],
                        'sequence_alternative': seq_alternative[i],
                        'start_original': start_original + i,
                        'start_alternative': start_alternative + i,
                        'variant_length': 1,
                        'variant_type': variant_type,
                        'annotations': impacts_set
                    })
        else:
            n['annotations'] = impacts_set
            new_nuc_variants.append(n)
    return new_nuc_variants