def test_edgelist_to_distance_matrix2():
    edgelist = utils.read_edgelist_file(test_files + 'edgelist-pentax-pce.txt')

    matrix, names = utils.edgelist_to_distance_matrix(edgelist)
    expected = ['Pentax_OptioA40_0_30521.JPG', 'Pentax_OptioA40_0_30522.JPG',
                'Pentax_OptioA40_0_30523.JPG', 'Pentax_OptioA40_0_30524.JPG',
                'Pentax_OptioA40_0_30525.JPG']
    assert all([n == e for n,e in zip(names,expected)])
    assert matrix.shape == (5,5)
    expected = [0.0, 704.17228119005165, 433.30115575430841, 154.4174623739334, 658.55780052635578]
    assert all([n == e for n,e in zip(matrix[0,:],expected)])
    expected = [704.17228119005165, 0.0, 476.46750462930402, 244.28991913458535, 585.63345061046823]
    assert all([n == e for n,e in zip(matrix[1,:],expected)])
def test_edgelist_to_distance_matrix2():
    edgelist = utils.read_edgelist_file(test_files + 'edgelist-pentax-pce.txt')

    matrix, names = utils.edgelist_to_distance_matrix(edgelist)
    expected = [
        'Pentax_OptioA40_0_30521.JPG', 'Pentax_OptioA40_0_30522.JPG',
        'Pentax_OptioA40_0_30523.JPG', 'Pentax_OptioA40_0_30524.JPG',
        'Pentax_OptioA40_0_30525.JPG'
    ]
    assert all([n == e for n, e in zip(names, expected)])
    assert matrix.shape == (5, 5)
    expected = [
        0.0, 704.17228119005165, 433.30115575430841, 154.4174623739334,
        658.55780052635578
    ]
    assert all([n == e for n, e in zip(matrix[0, :], expected)])
    expected = [
        704.17228119005165, 0.0, 476.46750462930402, 244.28991913458535,
        585.63345061046823
    ]
    assert all([n == e for n, e in zip(matrix[1, :], expected)])
    parser = argparse.ArgumentParser()
    mode = parser.add_mutually_exclusive_group(required=True)
    mode.add_argument("-e", "--edgelist", help="name of the edgelist file", metavar='edgelist')
    mode.add_argument("-m", "--matrix", help="name of distance matrix file", metavar='matrix')
    parser.add_argument("-n", "--names", help="filename storing a list of names for the items to be clustered, in case distance matrix is used", metavar='names')
    parser.add_argument("-c", "--convert", help="convert similarity to distance with specified a cut-off value", metavar='convert')
    parser.add_argument("clustering_algorithm", help="name of the clustering algorithm to use", choices=["hierarchical", "dbscan", "spectral", "agglomerative"], metavar='clustering_algorithm')
    return parser.parse_args()

if __name__ == "__main__":
    args = parse_arguments()

    edgelist = None
    if args.edgelist:
        print("edgelist filename=" + args.edgelist)
        edgelist = utils.read_edgelist_file(args.edgelist)

    matrix = None
    if args.matrix:
        print("matrix filename=" + args.matrix)
        matrix = utils.read_distance_matrix_file(args.matrix)

    if args.convert:
        print("convert=" + args.convert)
        if args.edgelist:
            edgelist['d'] = utils.similarity_to_distance(edgelist['d'], float(args.convert))
        if args.matrix:
            matrix = utils.similarity_to_distance(matrix, float(args.convert))

    if args.names:
        print("names filenname=" + args.names)
def test_read_edgelist_file():
    output = utils.read_edgelist_file(test_files + 'edgelist.txt')
    assert output.size == 3
    assert output['n1'][0] == 'node002'
    assert output['n2'][0] == 'node001'
    assert output['d'][0] == 5.7
                        help="name of the clustering algorithm to use",
                        choices=[
                            "hierarchical", "dbscan", "hdbscan", "spectral",
                            "affinity", "largevis"
                        ],
                        metavar='clustering_algorithm')
    return parser.parse_args()


if __name__ == "__main__":
    args = parse_arguments()

    edgelist = None
    if args.edgelist:
        print("edgelist filename=" + args.edgelist)
        edgelist = utils.read_edgelist_file(args.edgelist)

    matrix = None
    if args.matrix:
        print("matrix filename=" + args.matrix)
        matrix = utils.read_distance_matrix_file(args.matrix)

    if args.convert:
        print("convert=" + args.convert)
        if args.edgelist:
            edgelist['d'] = utils.similarity_to_distance(
                edgelist['d'], float(args.convert))
        if args.matrix:
            matrix = utils.similarity_to_distance(matrix, float(args.convert))

    if args.names:
def test_read_edgelist_file():
    output = utils.read_edgelist_file(test_files + 'edgelist.txt')
    assert output.size == 3
    assert output['n1'][0] == 'node002'
    assert output['n2'][0] == 'node001'
    assert output['d'][0] == 5.7