def test_relative_percent_difference(self): test1_val1 = 1 test1_val2 = 1 expected1 = 0 actual1 = calculation.relative_percent_difference( test1_val1, test1_val2) self.assertAlmostEqual(actual1, expected1) test2_val1 = 3 test2_val2 = 5 expected2 = 0.5 actual2 = calculation.relative_percent_difference( test2_val1, test2_val2) self.assertAlmostEqual(actual2, expected2) test3_val1 = 0 test3_val2 = 1 expected3 = 2 actual3 = calculation.relative_percent_difference( test3_val1, test3_val2) self.assertAlmostEqual(actual3, expected3) test4_val1 = 1 test4_val2 = 0 expected4 = 2 actual4 = calculation.relative_percent_difference( test4_val1, test4_val2) self.assertAlmostEqual(actual4, expected4)
vertex1_weight = segment_counts[vertex1] vertex2_weight = segment_counts[vertex2] # store vertex expected weight v1v2_expected_weight = ( (vertex2_weight / population) * edge_analysis.get_vertex_total_weight(edge_lines, vertex1)) v2v1_expected_weight = ( (vertex1_weight / population) * edge_analysis.get_vertex_total_weight(edge_lines, vertex2)) # store the difference of actual and expected in a matrix vertex1_index = segments.index(vertex1) vertex2_index = segments.index(vertex2) heatmatrix[vertex2_index, vertex1_index] = ( calculation.relative_percent_difference( actual_weight, v1v2_expected_weight)) if vertex1 != vertex2: heatmatrix[vertex1_index, vertex2_index] = ( calculation.relative_percent_difference( actual_weight, v2v1_expected_weight)) if len(segments) > 50: # print out just segment RPDs with themselves segment_self_rpds = dict() for i in range(0, heatmatrix.shape[0]): segment_self_rpds[segments[i]] = heatmatrix[i, i] # sort them sorted_segment_self_rpds = sorted( [(segment, self_rpd) for (segment, self_rpd)
# get container of students students = StudentContainerWrapper( args.swig_module_path, args.student_archive_path) # get the weights of individual segments lines = list(vertex_analysis.get_id_values(args.file)) mapped_to_segments = vertex_analysis.map_to_segments( lines, StudentContainerWrapper.SEGMENTERS[args.field], students) reduced_data = vertex_analysis.reduce_to_in_out( mapped_to_segments, args.in_segment) if unweighted: actual_segments = {key: len(data) for key, data in reduced_data.items()} elif weighted: actual_segments = {key: sum(data) for key, data in reduced_data.items()} print(actual_segments) population_segments = segment.get_segment_counts(students, args.field) print(population_segments[args.in_segment]) population = len(students) total_weight = sum(line[1] for line in lines) if weighted else len(lines) # print actual weight vs. expected weight RPD expected_weight = (population_segments[args.in_segment] / population * total_weight) actual_weight = actual_segments[args.in_segment] print(calculation.relative_percent_difference( actual_weight, expected_weight))
vertex1_weight = segment_counts[vertex1] vertex2_weight = segment_counts[vertex2] # store vertex expected weight v1v2_expected_weight = ( (vertex2_weight / population) * edge_analysis.get_vertex_total_weight(edge_lines, vertex1)) v2v1_expected_weight = ( (vertex1_weight / population) * edge_analysis.get_vertex_total_weight(edge_lines, vertex2)) # store the difference of actual and expected in a matrix vertex1_index = segments.index(vertex1) vertex2_index = segments.index(vertex2) heatmatrix[vertex2_index, vertex1_index] = (calculation.relative_percent_difference( actual_weight, v1v2_expected_weight)) if vertex1 != vertex2: heatmatrix[vertex1_index, vertex2_index] = ( calculation.relative_percent_difference( actual_weight, v2v1_expected_weight)) if len(segments) > 50: # print out just segment RPDs with themselves segment_self_rpds = dict() for i in range(0, heatmatrix.shape[0]): segment_self_rpds[segments[i]] = heatmatrix[i, i] # sort them sorted_segment_self_rpds = sorted( [(segment, self_rpd)