예제 #1
0
    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)
예제 #2
0
    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)
예제 #4
0
    # 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))
예제 #5
0
        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)