def name_filter(sum_dict, align_dict, name_list): """Accepts a list of names. Returns a new Summary block and Alignment block which contain the info only for those names passed.""" new_sum_dict = FSSP.FSSPSumDict() new_align_dict = copy.deepcopy(align_dict) for cur_pdb_name in name_list: for prot_num in sum_dict: if sum_dict[prot_num].pdb2 + sum_dict[prot_num].chain2 == cur_pdb_name: new_sum_dict[prot_num] = sum_dict[prot_num] prot_numbers = sorted(new_sum_dict) for pos_num in new_align_dict.abs_res_dict: new_align_dict.abs(pos_num).pos_align_dict = {} for prot_num in prot_numbers: new_align_dict.abs(pos_num).pos_align_dict[prot_num] = \ align_dict.abs(pos_num).pos_align_dict[prot_num] return new_sum_dict, new_align_dict
def filter(sum_dict, align_dict, filter_attribute, low_bound, high_bound): """Filter a passed summary section and alignment section. Filter according to a numeric attribute in the summary section. Return new summary and alignment sections. """ new_sum_dict = FSSP.FSSPSumDict() new_align_dict = copy.deepcopy(align_dict) for prot_num in sum_dict: attr_value = getattr(sum_dict[prot_num], filter_attribute) if attr_value >= low_bound and attr_value <= high_bound: new_sum_dict[prot_num] = sum_dict[prot_num] prot_numbers = sorted(new_sum_dict) for pos_num in new_align_dict.abs_res_dict: new_align_dict.abs(pos_num).pos_align_dict = {} for prot_num in prot_numbers: new_align_dict.abs(pos_num).pos_align_dict[ prot_num] = align_dict.abs(pos_num).pos_align_dict[prot_num] return new_sum_dict, new_align_dict
def filter(sum_dict, align_dict, filter_attribute, low_bound, high_bound): """filters a passed summary section and alignment section according to a numeric attribute in the summary section. Returns new summary and alignment sections""" new_sum_dict = FSSP.FSSPSumDict() new_align_dict = copy.deepcopy(align_dict) # for i in align_dict: # new_align_dict[i] = copy.copy(align_dict[i]) # new_align_dict = copy.copy(align_dict) for prot_num in sum_dict: attr_value = getattr(sum_dict[prot_num], filter_attribute) if attr_value >= low_bound and attr_value <= high_bound: new_sum_dict[prot_num] = sum_dict[prot_num] prot_numbers = new_sum_dict.keys() prot_numbers.sort() for pos_num in new_align_dict.abs_res_dict: new_align_dict.abs(pos_num).pos_align_dict = {} for prot_num in prot_numbers: new_align_dict.abs(pos_num).pos_align_dict[prot_num] = \ align_dict.abs(pos_num).pos_align_dict[prot_num] return new_sum_dict, new_align_dict