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))