def write_relationship_types(data, definition, def_args, out_dir): for year in data.all_years: with open(out_dir + '%s.csv' % year, 'wb') as csvfile: out_file = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL) out_file.writerow(['Country1', 'Country2', 'Link type', 'Export/Import ratio']) for (A, B) in countries.country_pairs(data.countries()): link_type = definition(data, year, A, B, def_args) if link_type != NO_LINK: out_file.writerow([A, B, link_type, data.export_import_ratio(A, B, year)])
def generate_network_graph_data(data, year, subset_of_countries, out_file, definition, args): f = open(out_file, 'w') f.write(html_header()) for (c1, c2) in country_pairs(subset_of_countries): link_type = definition(data, year, c1, c2, args) if link_type != NO_LINK: ratio = data.export_import_ratio(c1, c2, year) f.write('{source:"%s", target:"%s", type:"%s",repulsionpercentage:"%f"},\n' % ( c1, c2, link_type, normalize(ratio))) f.write(html_footer(year)) f.close()
def sign_distributions(data, year, definition, def_args): positive_edges_count, negative_edges_count, no_edge_count = 0, 0, 0 for (A, B) in countries.country_pairs(data.countries()): link_type = definition(data, year, A, B, def_args) if link_type == NEGATIVE_LINK: negative_edges_count += 1 elif link_type == POSITIVE_LINK: positive_edges_count += 1 elif link_type == NO_LINK: no_edge_count += 1 edges_count = positive_edges_count + negative_edges_count return edges_count, positive_edges_count, negative_edges_count, no_edge_count
def print_graph_densities_for_different_thresholds(data, thresholds, years): f = open(OUT_DIR.DEFINITION_D + 'combinations.txt', 'w') for T in thresholds: for year in years: positive_edges = 0 negative_edges = 0 for (A, B) in countries.country_pairs(data.countries()): link_sign = definition_D(data, year, A, B, args_for_definition_D(T, log_file=f)) if link_sign == POSITIVE_LINK: positive_edges += 1 if link_sign == NEGATIVE_LINK: negative_edges += 1 N = 203 density = 2.0 * (positive_edges + negative_edges) / (N * (N - 1)) * 100 print "%d,%d,%f,%d,%d,%d" % (T, year, density, positive_edges, negative_edges, N) f.close()
def print_histogram_matlab_code(data, low, high): i = 0 str = "" list = [] for (A, B) in countries.country_pairs(data.countries()): total = data.total_exports_from_C1_to_C2(A, B) if total != 0 and low < total < high: str = "%s %d" % (str, total) list.append(total) i += 1 print "y=[%s];" % str print "hist(y,100000);" print "xlabel('Export quantity');" print "ylabel('Count of country pairs');" print "set(gca, 'Xscale', 'log');" print "saveas(gcf,'definition_C_histogram','png');"
def print_missing_links_db(data, year, T, log_file_name): two_way_args = args_for_definition_D(T) one_way_args = args_for_definition_D(T, mode='one-way') f = open(OUT_DIR.DEFINITION_D + log_file_name + ".%d.txt" % T, 'w') for (A, B) in countries.country_pairs(data.countries()): if definition_D(data, year, A, B, two_way_args) == NO_LINK: one_way = definition_D(data, year, A, B, one_way_args) other_way = definition_D(data, year, B, A, one_way_args) f.write("Y%d,%s,%s,%s,%s\n" % (year, file_safe(A), file_safe(B), one_way, other_way)) if one_way != other_way: for Y in range(1963, 2001): f.write("%d,%s,%s,%.4g,%.4g\n" % ( Y, file_safe(A), file_safe(B), data.export_data_as_percentile(Y, A, B), data.export_data_as_percentile(Y, B, A))) f.close()
def print_densities_for_thresholds(data, definition, T1_thresholds, T2_thresholds, log_file_name): f1 = open(OUT_DIR.DEFINITION_C + log_file_name + '-edges.txt', 'w') f2 = open(OUT_DIR.DEFINITION_C + log_file_name + '-traids.txt', 'w') f3 = open(OUT_DIR.DEFINITION_C + log_file_name + '-nodes.txt', 'w') countries_list = ['USA', 'Iran', 'Iraq', 'Argentina', 'UK', 'China', 'Kuwait', 'France,Monac'] for pruning_T in T1_thresholds: for classifying_T in T2_thresholds: args1 = args_for_definition_C(pruning_T, classifying_T, f1) args2 = args_for_definition_C(pruning_T, classifying_T, f1) for year in range(1969, 2001): (positive_edges, negative_edges) = (0, 0) for (A, B) in countries.country_pairs(countries_list): link_sign = definition(data, year, A, B, args1) if link_sign == POSITIVE_LINK: positive_edges += 1 if link_sign == NEGATIVE_LINK: negative_edges += 1 N = 203 density = 2.0 * (positive_edges + negative_edges) / (N * (N - 1)) * 100 print "%d,%f,%d,%f,%d,%d,%d" % ( pruning_T, classifying_T, year, density, positive_edges, negative_edges, N) for (A, B, C) in combinations(countries_list, 3): linkAtoB = definition(data, year, A, B, args2) linkBtoC = definition(data, year, B, C, args2) linkCtoA = definition(data, year, C, A, args2) triangle = [linkAtoB, linkBtoC, linkCtoA] pcount = triangle.count(POSITIVE_LINK) ncount = triangle.count(NEGATIVE_LINK) mcount = triangle.count(NO_LINK) f2.write("%d,%.2f,%d,%s,%s,%s,%s,%s,%s,T%d%d%d\n" % ( year, pruning_T, classifying_T, A, B, C, linkAtoB, linkBtoC, linkCtoA, pcount, ncount, mcount)) for A in countries_list: f3.write("%d,%s,%d\n" % (year, A, degree_sum(data, year, A, definition, args1))) f1.close() f2.close() f3.close()