def find_clashes_small(self, mycollider, cursor, par, pepids): swath_mode = False mycollider.allpeps = {} mycollider.non_unique_count = 0 mycollider.total_count = 0 MAX_UIS = 5 for kk, pep in enumerate(pepids): precursor = Precursor(parent_id=pep['parent_id'], q1=pep['q1'], ssrcalc=pep['ssrcalc'], modified_sequence = pep['mod_sequence'], transition_group = pep['transition_group']) q3_low, q3_high = par.get_q3range_transitions() transitions = precursor.calculate_transitions(q3_low, q3_high) nr_transitions = len(transitions) ### if use_db and not swath_mode: precursors = mycollider._get_all_precursors(par, precursor, cursor) collisions_per_peptide = collider.get_coll_per_peptide_from_precursors(mycollider, transitions, precursors, par, precursor, forceNonCpp=False) collisions_per_peptide_python = collider.get_coll_per_peptide_from_precursors_obj_wrapper(mycollider, transitions, precursors, par, precursor, forceNonCpp=True) self.assertEqual(collisions_per_peptide, collisions_per_peptide_python) non_uis_list = collider.get_nonuis_list(collisions_per_peptide, MAX_UIS) # # here we count how many are locally clean, e.g. look at UIS of order 1 mycollider.allpeps[precursor.parent_id] = 1.0 - len(non_uis_list[1]) * 1.0 / nr_transitions mycollider.non_unique_count += len(non_uis_list[1]) mycollider.total_count += nr_transitions
def test_runuis_nonswath(self): self.assertEqual(len(self.precursors_to_evaluate), 905) par = self.par cursor = self.db.cursor() prepare = [] for precursor in self.precursors_to_evaluate: q3_low, q3_high = par.get_q3range_transitions() transitions = precursor.calculate_transitions(q3_low, q3_high) nr_transitions = len(transitions) precursors_obj = self.acollider._get_all_precursors(par, precursor, cursor) collisions_per_peptide = collider.get_coll_per_peptide_from_precursors(self.acollider, transitions, precursors_obj, par, precursor) non_uis_list = collider.get_nonuis_list(collisions_per_peptide, par.max_uis) for order in range(1,min(par.max_uis+1, nr_transitions+1)): prepare.append( (len(non_uis_list[order]), collider.choose(nr_transitions, order), precursor.parent_id , order, -1) ) self.assertEqual(len(prepare), 905*par.max_uis) self.assertEqual(prepare[0], (0, 17.0, 1, 1, -1)) final_report = self.get_final_report(par, prepare) self.check_final_report_nonswath(final_report)
def test_runuis_swath(self): self.assertEqual(len(self.precursors_to_evaluate), 905) swath_mode = False par = self.par R = self.R cursor = self.db.cursor() prepare = [] self.min_q1 = 500 self.max_q1 = 525 # Get the precursors (now for 500-525 instead of the full range) ########################################################################### myprecursors = Precursors() cursor = self.db.cursor() myprecursors.getFromDB(par, cursor, self.min_q1 - par.q1_window, self.max_q1 + par.q1_window) rtree = myprecursors.build_rangetree() self.precursors_to_evaluate = myprecursors.getPrecursorsToEvaluate(self.min_q1, self.max_q1) self.assertEqual(len(self.precursors_to_evaluate), 39) isotope_correction = par.isotopes_up_to * R.mass_diffC13 / min(par.parent_charges) temp_precursors = Precursors() temp_precursors.getFromDB(par, self.db.cursor(), self.min_q1 - isotope_correction, self.max_q1) all_swath_precursors = [] for p in temp_precursors.precursors: if(p.included_in_isotopic_range(self.min_q1, self.max_q1, par) ): all_swath_precursors.append(p) for precursor in self.precursors_to_evaluate: q3_low, q3_high = par.get_q3range_transitions() transitions = precursor.calculate_transitions(q3_low, q3_high) nr_transitions = len(transitions) if par.ssrcalc_window > 1000: precursors_obj = [p for p in all_swath_precursors if p.transition_group != precursor.transition_group] else: ssrcalc_low = precursor.ssrcalc - par.ssrcalc_window ssrcalc_high = precursor.ssrcalc + par.ssrcalc_window precursors_obj = [p for p in all_swath_precursors if p.transition_group != precursor.transition_group and p.ssrcalc > ssrcalc_low and p.ssrcalc < ssrcalc_high ] collisions_per_peptide = collider.get_coll_per_peptide_from_precursors(self.acollider, transitions, precursors_obj, par, precursor) non_uis_list = collider.get_nonuis_list(collisions_per_peptide, par.max_uis) for order in range(1,min(par.max_uis+1, nr_transitions+1)): prepare.append( (len(non_uis_list[order]), collider.choose(nr_transitions, order), precursor.parent_id , order, -1) ) self.assertEqual(len(prepare), 39*par.max_uis) self.assertEqual(prepare[0], (5, 8.0, 69, 1, -1) ) final_report = self.get_final_report(par, prepare) self.check_final_report_swath(final_report)
def test_collisions_per_peptide(self): """ Test to calculate the collisions per peptide. """ q3_low, q3_high = self.real_parameters.get_q3range_transitions() precursor = self.precursor transitions = precursor.calculate_transitions(q3_low, q3_high) collisions_per_peptide = collider.get_coll_per_peptide_from_precursors(self.acollider, transitions, self.interfering_precursors, self.real_parameters, None, False, False) self.assertEqual(collisions_per_peptide, {665: [4], 618: [0, 2]})
def test_min_needed_transitions(self): q3_low, q3_high = self.real_parameters.get_q3range_transitions() precursor = self.precursor transitions = precursor.calculate_transitions(q3_low, q3_high) collisions_per_peptide = collider.get_coll_per_peptide_from_precursors(self.acollider, transitions, self.interfering_precursors, self.real_parameters, None, False, False) # We need at least 2 transitions to see this peptide because the first transition is interfered with self.real_parameters.max_uis = 10 min_needed = self.acollider._sub_getMinNeededTransitions(self.real_parameters, transitions, collisions_per_peptide) self.assertEqual(min_needed, 2) # Now delete the 2nd element, now we need at least three transtitions because transitions 1 and 2 are interfered with transitions = list(transitions) del transitions[1] min_needed = self.acollider._sub_getMinNeededTransitions(self.real_parameters, tuple(transitions), collisions_per_peptide) self.assertEqual(min_needed, 3)
def test_collisions_per_peptide_forced_fragment_check(self): """ Test to calculate the collisions per peptide when enforcing fragment charge checks. Now the y11++ fragment is not allowed any more because a fragment of NGTDGGLQVAIDAMR cannot hold 2 charges. Thus we test against 618: [0] without the "2". """ q3_low, q3_high = self.real_parameters.get_q3range_transitions() precursor = self.precursor transitions = precursor.calculate_transitions(q3_low, q3_high) collisions_per_peptide = collider.get_coll_per_peptide_from_precursors_obj_wrapper(self.acollider, transitions, self.interfering_precursors, self.real_parameters, precursor, forceNonCpp=True, forceFragmentChargeCheck=True) self.assertEqual(collisions_per_peptide, {665: [4], 618: [0]}) collisions_per_peptide = collider.get_coll_per_peptide_from_precursors(self.acollider, transitions, self.interfering_precursors, self.real_parameters, precursor, forceNonCpp=False, forceFragmentChargeCheck=True) ### TODO, forceFragment check will reduce this self.assertEqual(collisions_per_peptide, {665: [4]})
def find_clashes_small(self, mycollider, cursor, par, pepids): swath_mode = False mycollider.allpeps = {} mycollider.non_unique_count = 0 mycollider.total_count = 0 MAX_UIS = 5 for kk, pep in enumerate(pepids): precursor = Precursor(parent_id=pep['parent_id'], q1=pep['q1'], ssrcalc=pep['ssrcalc'], modified_sequence=pep['mod_sequence'], transition_group=pep['transition_group']) q3_low, q3_high = par.get_q3range_transitions() transitions = precursor.calculate_transitions(q3_low, q3_high) nr_transitions = len(transitions) ### if use_db and not swath_mode: precursors = mycollider._get_all_precursors(par, precursor, cursor) collisions_per_peptide = collider.get_coll_per_peptide_from_precursors( mycollider, transitions, precursors, par, precursor, forceNonCpp=False) collisions_per_peptide_python = collider.get_coll_per_peptide_from_precursors_obj_wrapper( mycollider, transitions, precursors, par, precursor, forceNonCpp=True) self.assertEqual(collisions_per_peptide, collisions_per_peptide_python) non_uis_list = collider.get_nonuis_list(collisions_per_peptide, MAX_UIS) # # here we count how many are locally clean, e.g. look at UIS of order 1 mycollider.allpeps[precursor.parent_id] = 1.0 - len( non_uis_list[1]) * 1.0 / nr_transitions mycollider.non_unique_count += len(non_uis_list[1]) mycollider.total_count += nr_transitions
all_swath_precursors.append(p) allintertr = [] MAX_UIS = par.max_uis progressm = progress.ProgressMeter(total=len(precursors_to_evaluate), unit='peptides') prepare = [] print "analyzing %s peptides" % len(precursors_to_evaluate) for precursor in precursors_to_evaluate: transitions = precursor.calculate_transitions_from_param(par) nr_transitions = len(transitions) if use_db and not swath_mode: # Case 1: regular SRMCollider, get transitions from the DB precursors_obj = mycollider._get_all_precursors(par, precursor, cursor) collisions_per_peptide = collider.get_coll_per_peptide_from_precursors(mycollider, transitions, precursors_obj, par, precursor) elif use_db and swath_mode: # Case 2: SRMCollider in SWATH mode, get transitions from the DB (e.g. the memory in this case) if par.ssrcalc_window > 1000: precursors_obj = [p for p in all_swath_precursors if p.transition_group != precursor.transition_group] else: ssrcalc_low = precursor.ssrcalc - par.ssrcalc_window ssrcalc_high = precursor.ssrcalc + par.ssrcalc_window precursors_obj = [p for p in all_swath_precursors if p.transition_group != precursor.transition_group and p.ssrcalc > ssrcalc_low and p.ssrcalc < ssrcalc_high ] collisions_per_peptide = collider.get_coll_per_peptide_from_precursors(mycollider, transitions, precursors_obj, par, precursor) elif not use_db: if swath_mode: # Case 3: SRMCollider in SWATH mode, get transitions from the rangetree collisions_per_peptide = myprecursors.get_collisions_per_peptide_from_rangetree(