def get_matches_per_spec(mass, param, index, title): spec_dict = index.spec_dict unique_pep = index.unique_pep[0] # search_index = index.search_index x_residue = param['x_residue'] index_list = index.get_candidates(title) spec = spec_dict[title] matches = [] for i in range(len(index_list)): index1 = index_list[i][0] index2 = index_list[i][1] pep1 = unique_pep[index1] pep2 = unique_pep[index2] pep_sorted = sorted([pep1, pep2], key = lambda x : x.seq) pep1 = pep_sorted[0] pep2 = pep_sorted[1] ch = spec_dict[title].ch mz = spec_dict[title].mz it = spec_dict[title].it k_pos1 = [] k_pos2 = [] if param['ntermxlink'] == True: if pep1.is_nterm == True: k_pos1.append(0) if pep2.is_nterm == True: k_pos2.append(0) pep_seq1 = pep1.seq k_pos1.extend(list(zip(*filter(lambda x : x[1] == x_residue, enumerate(pep_seq1[:-1])))[0])) pep_seq2 = pep2.seq k_pos2.extend(list(zip(*filter(lambda x : x[1] == x_residue, enumerate(pep_seq2[:-1])))[0])) for p1 in k_pos1: for p2 in k_pos2: pos = [p1, p2] xl = XLink(pep1, pep2, pos, ch, mass, param) match = Match(spec, xl, mass, param) match.match(mass) matches.append(match.get_match_info(index)) return matches