def determine_if_pb_should_be_filtered(row, min_junc_after_stop_codon):
    """PB should be filtered if NMD, a truncation, or protein classification
    is not likely protein coding (intergenic, antisense, fusion,...)

    Args:
        row (pandas Series): protein classification row
        min_junc_after_stop_codon (int): mininum number of junctions after stop
        codon a protein can have. used in NMD determination

    Returns:
        int: 1 if should be filtered, 0 if should not be filtered
    """
    # filter out pbs that are artifacts or noncoding
    pclass = str(row['protein_classification'])
    num_junc_after_stop_codon = int(row['num_junc_after_stop_codon'])
    pclass_base_to_keep = ['pFSM','pNIC']
    pclass_base = str(row['protein_classification_base'])
    if pclass_base not in pclass_base_to_keep and num_junc_after_stop_codon > min_junc_after_stop_codon:
        return 1
    elif 'trunc' in pclass: 
        return 1
    elif 'intergenic' in pclass:
        return 1
    elif 'antisense' in pclass:
        return 1
    elif 'fusion' in pclass:
        return 1
    elif 'orphan' in pclass:
        return 1
    elif 'genic' in pclass:
        return 1
    return 0