def run_mc(targetlist, mc_num, k): target_num = len(targetlist) ; tuplelist = get_tuple_list(targetlist) ; #print "tuple num:", len(tuplelist) ; go_1 = 0.5 # get_random_p(target_num, k) ; #print "p is: ", go_1 ; tuple_dict_true = {} ; flag_dict_true = {} ; flag_dict_false = {} ; for key in tuplelist: tuple_dict_true[key] = 0 ; for i in range(1, 11): temp = int(target_num*i/10.0) ; mytuple = (key, temp) ; flag_dict_true[mytuple] = 0 ; flag_dict_false[mytuple] = 0 ; for t in range(mc_num): #if(t%1000 ==0 ): print "--------mc_num:", t, "-------------" edge_value_dict = assign_edge_value(tuplelist, go_1) ; res_effect_list = effect(targetlist, edge_value_dict) ; for edge in edge_value_dict.keys(): if( edge_value_dict[edge] == True ): tuple_dict_true[edge] += 1 ; for i in range(1, 11): temp = int(target_num*i/10.0) ; mytuple = (edge, temp) ; if( res_effect_list[i-1] == True ): if( edge_value_dict[edge] == True ): flag_dict_true[mytuple] += 1 ; else: flag_dict_false[mytuple] += 1 ; edge_value_dict = assign_edge_value_opposite(edge_value_dict.copy()) ; res_effect_list = effect(targetlist, edge_value_dict) ; for edge in edge_value_dict.keys(): if( edge_value_dict[edge] == True ): tuple_dict_true[edge] += 1 ; for i in range(1, 11): temp = int(target_num*i/10.0) ; mytuple = (edge, temp) ; if( res_effect_list[i-1] == True ): if( edge_value_dict[edge] == True ): flag_dict_true[mytuple] += 1 ; else: flag_dict_false[mytuple] += 1 ; mc_num = mc_num * 2 ; res_dict = {} ; for edge in tuplelist: for i in range(1, 11): temp = int(target_num*i/10.0) ; mytuple = (edge, temp) ; res_dict[mytuple] = flag_dict_true[mytuple]/float(tuple_dict_true[edge]) - flag_dict_false[mytuple]/(mc_num-float(tuple_dict_true[edge])) ; return res_dict ;
def causal_test(pro_file_name, mc_num, k): targetnodelist = get_targets_karate() ; targetlist = readProvenance(filename, targetnodelist) ; res_dict = run_mc(targetlist, mc_num, k) ; return get_mc_result_list(res_dict, targetlist, get_tuple_list(targetlist)) ;
if( edge_value_dict[edge] == True ): tuple_dict_true[edge] += 1 ; for i in range(1, 11): temp = int(target_num*i/10.0) ; mytuple = (edge, temp) ; if( res_effect_list[i-1] == True ): if( edge_value_dict[edge] == True ): flag_dict_true[mytuple] += 1 ; else: flag_dict_false[mytuple] += 1 ; mc_num = mc_num * 2 ; res_dict = {} ; for edge in tuplelist: for i in range(1, 11): temp = int(target_num*i/10.0) ; mytuple = (edge, temp) ; res_dict[mytuple] = flag_dict_true[mytuple]/float(tuple_dict_true[edge]) - flag_dict_false[mytuple]/(mc_num-float(tuple_dict_true[edge])) ; return res_dict ; if __name__ == "__main__": filename = "provenance_dataset/karate_provenance.txt"; targetnodelist = get_targets_karate() ; targetlist = readProvenance(filename, targetnodelist) ; start = timeit.default_timer() ; res_dict = run_mc(targetlist, mc_num=100, k=5) ; stop = timeit.default_timer() ; print stop-start ; lines = get_mc_result_list(res_dict, targetlist, get_tuple_list(targetlist)) ; for line in lines: print line ;
#mc_num = mc_num/2 ; for i in range(mc_num): if(i%1000 ==0 ): print "--------mc_num:", i, "-------------" edge_value_dict = get_random_list(len(tuplelist), go_1=0.9) ; term_dict = run_once(tuplelist, targetlist, edge_value_dict) ; for term in tuplelist: temp = [ x + y for x, y in zip(term_dict[term], sum_term_dict[term]) ] ; sum_term_dict[term] = temp ; ''' one_matrix = np.ones((len(random_list_1),), dtype=np.int) ; random_list_2 = np.subtract( one_matrix, random_list_1) ; term_dict = run_once(tuplelist, targetlist, random_list_2) ; for term in tuplelist: temp = [ x + y for x, y in zip(term_dict[term], sum_term_dict[term]) ] ; sum_term_dict[term] = temp ; ''' return sum_term_dict ; filename = "provenance_dataset/karate_provenance.txt"; targetnodelist = get_targets_karate() ; targetlist = readProvenance(filename, targetnodelist) ; tuplelist = get_tuple_list(targetlist) ; print "tuple num:", len(tuplelist) ; start = timeit.default_timer() ; sum_term_dict = run_mc(tuplelist, targetlist, mc_num=100) ; stop = timeit.default_timer() ; print stop-start ; for term in sum_term_dict.keys(): #print term, " ".join(sum_term_dict[term]) ; print term, str(sum_term_dict[term]).strip('[]')