Beispiel #1
0
    def test_get_segment_counts(self):
        """Tests get_segment_counts."""

        segmenter_name = "student_container_wrapper.StudentContainerWrapper.SEGMENTERS"

        # test 1 (normal test case)
        with unittest.mock.patch(segmenter_name) as segmenter_mock1:
            segmenter_mock1.__getitem__.return_value = unittest.mock.MagicMock(side_effect=["UENG", "UENG", "ULSA"])

            student_container_mock1 = unittest.mock.MagicMock()
            student_container_mock1.__iter__.return_value = [1, 2, 3]

            expected1 = {"UENG": 2, "ULSA": 1}
            actual1 = segment.get_segment_counts(student_container_mock1, "school")
            self.assertEqual(actual1, expected1)

        # test 2 (empty container)
        with unittest.mock.patch(segmenter_name) as segmenter_mock2:
            segmenter_mock2.__getitem__.return_value = unittest.mock.MagicMock(side_effect=[])

            student_container_mock2 = unittest.mock.MagicMock()
            student_container_mock2.__iter__.return_value = []

            expected2 = {}
            actual2 = segment.get_segment_counts(student_container_mock2, "school")
            self.assertEqual(actual2, expected2)
Beispiel #2
0
    def test_get_segment_counts(self):
        """Tests get_segment_counts."""

        segmenter_name = (
                'student_container_wrapper.StudentContainerWrapper.SEGMENTERS')

        # test 1 (normal test case)
        with unittest.mock.patch(segmenter_name) as segmenter_mock1:
            segmenter_mock1.__getitem__.return_value = unittest.mock.MagicMock(
                    side_effect=['UENG', 'UENG', 'ULSA'])

            student_container_mock1 = unittest.mock.MagicMock()
            student_container_mock1.__iter__.return_value = [1, 2, 3]

            expected1 = {
                    'UENG': 2,
                    'ULSA': 1
                    }
            actual1 = segment.get_segment_counts(
                    student_container_mock1, 'school')
            self.assertEqual(actual1, expected1)

        # test 2 (empty container)
        with unittest.mock.patch(segmenter_name) as segmenter_mock2:
            segmenter_mock2.__getitem__.return_value = unittest.mock.MagicMock(
                    side_effect=[])

            student_container_mock2 = unittest.mock.MagicMock()
            student_container_mock2.__iter__.return_value = []

            expected2 = {}
            actual2 = segment.get_segment_counts(
                    student_container_mock2, 'school')
            self.assertEqual(actual2, expected2)
            '--student-archive-path', dest='student_archive_path',
            help='Path of the student archive file.', required=True)
    parser.add_argument(
            '--swig-module-path', dest='swig_module_path',
            help='Directory containing the swig modules.',
            action=ReadableDirectory, required=True)

    args = parser.parse_args()

    # read edges from file; these correspond to actual interaction values
    edge_lines = list(edge_analysis.get_vertices_values(args.file))

    # get expected interaction values
    students_wrapper = StudentContainerWrapper(
            args.swig_module_path, args.student_archive_path)
    segment_counts = segment.get_segment_counts(students_wrapper, args.field)

    # compare actual edges with expected edges, put into matrix
    segments = sorted(list(segment_counts.keys()))
    population = sum(segment_counts.values())
    heatmatrix = numpy.zeros((len(segments), len(segments)))
    for vertex1, vertex2, actual_weight in edge_lines:
        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) *
    # 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))
Beispiel #5
0
                        required=True)
    parser.add_argument('--swig-module-path',
                        dest='swig_module_path',
                        help='Directory containing the swig modules.',
                        action=ReadableDirectory,
                        required=True)

    args = parser.parse_args()

    # read edges from file; these correspond to actual interaction values
    edge_lines = list(edge_analysis.get_vertices_values(args.file))

    # get expected interaction values
    students_wrapper = StudentContainerWrapper(args.swig_module_path,
                                               args.student_archive_path)
    segment_counts = segment.get_segment_counts(students_wrapper, args.field)

    # compare actual edges with expected edges, put into matrix
    segments = sorted(list(segment_counts.keys()))
    population = sum(segment_counts.values())
    heatmatrix = numpy.zeros((len(segments), len(segments)))
    for vertex1, vertex2, actual_weight in edge_lines:
        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) *