def test_cpp_implementation(self): strike3_ssrcalcwindow = 0.3 ssrcalcvalues = self.ssrcalcvalues_four_example N = [len(v) for v in ssrcalcvalues] cpp_result = c_getnonuis.calculate_eUIS(N, ssrcalcvalues, strike3_ssrcalcwindow) python_result = thisthirdstrike(N, ssrcalcvalues, strike3_ssrcalcwindow) cpp_result_compare = {} for c in cpp_result: cpp_result_compare[ tuple(c)] = 0 self.assertEqual(cpp_result_compare, python_result) #print "second cpp impl" strike3_ssrcalcwindow = 1.0 cpp_result = c_getnonuis.calculate_eUIS(N, ssrcalcvalues, strike3_ssrcalcwindow) python_result = thisthirdstrike(N, ssrcalcvalues, strike3_ssrcalcwindow) cpp_result_compare = {} for c in cpp_result: cpp_result_compare[ tuple(c)] = 0 self.assertEqual(cpp_result_compare, python_result)
# we get the list of ssrcalc-values for each transition ssrcalcvalues = [ [] for t in transitions] for k,v in collisions_per_peptide.iteritems(): #ssrcalc = trgroup_lookup[k] ssrcalc = myprecursors.lookup_by_transition_group(k).ssrcalc for tr in v: ssrcalcvalues[tr].append(ssrcalc) # then sort the ssrcalc values # complexity: nr_tr * k * log(k) for i in range(len(ssrcalcvalues)): ssrcalcvalues[i] = sorted(ssrcalcvalues[i]) # get the list of combinations that are not eUIS N = [len(v) for v in ssrcalcvalues] cont_comb_list = c_getnonuis.calculate_eUIS(N, ssrcalcvalues, strike3_ssrcalcwindow) if False: #compare c++/python code compare = thisthirdstrike(N, ssrcalcvalues, strike3_ssrcalcwindow) cont3 = {} for c in cont_comb_list: cont3[ tuple(c)] = 0 assert compare == cont3 # the list of combinations has to be expanded for a specific order (e.g. # for order 2, a combination of (1,2,3) has to be expanded into # (1,2),(1,3),(2,3) to get all subcombinations. newdic = dict([(i,list(v)) for i,v in enumerate(cont_comb_list)]) non_useable_combinations.update(c_getnonuis.get_non_uis( newdic, myorder))