def get_interval( self, interval, return_ids=False): #Return all genes that intersect interval #Also counts partial intersections return intersect_with_interval(self.chr_data, interval, return_ids=return_ids)
def compare_intervalfuncs(tree, df, df2, df3): data1 = {"chr1":df} data2 = {"chr1":df2} data3 = {"chr1":df3} count_match_v1 = 0 count_match_v2 = 0 count_match_v3 = 0 count_match_v4 = 0 N_tests = 100 for i in range(0,N_tests): start = random.randint(0,maxPos) l = random.randint(minLen,maxLen*5) # start = 2200 # l = 2550 - 2200 interval = Interval("chr1",start,start+l) res_v1 = intersect_with_interval(data1,interval) res_v2 = intersect_with_interval_v2(data2, interval) if len(res_v2) > 0: ids = np.unique(res_v2.ids.values) res_v2 = df.loc[ids] #print (res_v2) #break res_v3 = intersect_with_interval_v3(data1,interval) res_v4 = intersect_with_interval_v4(data3,interval) res_intTree = np.array([ q.data for q in tree[start:start+l+1] ]) match_v1 = compare_results(res_v1,res_intTree) match_v2 = compare_results(res_v2,res_intTree) match_v3 = compare_results(res_v3,res_intTree) match_v4 = compare_results(res_v4,res_intTree) count_match_v1 += match_v1 count_match_v2 += match_v2 count_match_v3 += match_v3 count_match_v4 += match_v4 if not match_v3: print("---------------") print (interval) print (res_v3) print (res_intTree) print(count_match_v1, " of ", N_tests) print(count_match_v2, " of ", N_tests) print(count_match_v3, " of ", N_tests) print(count_match_v4, " of ", N_tests)