def filter_trf_gff_by_exact_copy_number(input_gff, output_gff, filtered_out_gff, min_copy_number, perfect_tandem=False): if perfect_tandem: def filtering_expression(gff_description_dict): if (gff_description_dict["Pattern"] * min_copy_number) in gff_description_dict["seq"]: return True return False else: def filtering_expression(gff_description_dict): if gff_description_dict["seq"].count( gff_description_dict["Pattern"]) >= min_copy_number: return True return False AnnotationsRoutines.filter_gff_by_description(input_gff, output_gff, filtered_out_gff, filtering_expression)
def filter_trf_gff(self, input_gff, output_gff, filtered_out_gff, min_period=None, max_period=None, min_copy_number=None, max_copy_number=None, pattern=None, min_percentage_of_matches=None, max_percentage_of_indels=None, min_entropy=None, max_entropy=None): def filtering_expression(gff_description_dict): return self.gff_filtering_expression( gff_description_dict, min_period=min_period, max_period=max_period, min_copy_number=min_copy_number, max_copy_number=max_copy_number, pattern=pattern, min_percentage_of_matches=min_percentage_of_matches, max_percentage_of_indels=max_percentage_of_indels, min_entropy=min_entropy, max_entropy=max_entropy) AnnotationsRoutines.filter_gff_by_description(input_gff, output_gff, filtered_out_gff, filtering_expression)