Exemple #1
0
    def test_reduce_to_vertices(self):
        """Tests reduce_to_vertices."""

        test1 = [('1', '2', 0.1), ('2', '3', 0.2), ('1', '3', 0.3)]
        expected1 = {
            '1': numpy.array([0.1, 0.3]),
            '2': numpy.array([0.1, 0.2]),
            '3': numpy.array([0.2, 0.3]),
        }
        actual1 = edge_analysis.reduce_to_vertices(test1)
        self._test_dict_to_numpy_array_equal(actual1, expected1)

        test2 = []
        expected2 = {}
        actual2 = edge_analysis.reduce_to_vertices(test2)
        self._test_dict_to_numpy_array_equal(actual2, expected2)

        test3 = [('1', '1', 0.1), ('1', '1', 0.2), ('1', '1', 0.3)]
        expected3 = {'1': numpy.array([0.1, 0.2, 0.3])}
        actual3 = edge_analysis.reduce_to_vertices(test3)
        self._test_dict_to_numpy_array_equal(actual3, expected3)
    def test_reduce_to_vertices(self):
        """Tests reduce_to_vertices."""

        test1 = [('1', '2', 0.1), ('2', '3', 0.2), ('1', '3', 0.3)]
        expected1 = {
                '1': numpy.array([0.1, 0.3]),
                '2': numpy.array([0.1, 0.2]),
                '3': numpy.array([0.2, 0.3]),
        }
        actual1 = edge_analysis.reduce_to_vertices(test1)
        self._test_dict_to_numpy_array_equal(actual1, expected1)

        test2 = []
        expected2 = {}
        actual2 = edge_analysis.reduce_to_vertices(test2)
        self._test_dict_to_numpy_array_equal(actual2, expected2)

        test3 = [('1', '1', 0.1), ('1', '1', 0.2), ('1', '1', 0.3)]
        expected3 = {
                '1': numpy.array([0.1, 0.2, 0.3])
        }
        actual3 = edge_analysis.reduce_to_vertices(test3)
        self._test_dict_to_numpy_array_equal(actual3, expected3)
import edge_analysis
import simpson_diversity

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
            description='Calculate simpson diversity index for every vertex in '
            'a network.')
    parser.add_argument(
            'file', nargs='?', type=argparse.FileType('r'),
            default=sys.stdin, help='File to segment (default standard input).')

    args = parser.parse_args()

    edge_lines = edge_analysis.get_vertices_values(args.file)
    edge_values = edge_analysis.reduce_to_vertices(edge_lines)

    for vertex, values in edge_values.items():
        # make every value in values an array because calculation functions
        # expect multiple arrays grouped by segment
        values_sum = numpy.sum(values)
        single_value_arrays = (numpy.array(value) for value in values)

        # We use weighted regardless of the input file because we the value to
        # be taken into account. There is only one value, so looking at the
        # number of values is useless.
        diversity_index = (
                simpson_diversity.calculate_weighted_simpson_diversity_index(
                        single_value_arrays, values_sum))

        print('{}\t{}'.format(vertex, diversity_index))