Raw File
tb_diameter_stats.py
import sys

sys.path.insert(1, '../')

import temporal_distances as td
import temporal_graph as tg

import time
import argparse

if __name__ == '__main__':

    parser = argparse.ArgumentParser(
        description="Compute FT or ST diameter for all link streams whose paths are in file")
    parser.add_argument("FT_ST", type=str, help="FT for Fastest Time diameter, ST for Shortest Time diameter")
    parser.add_argument("file", type=str, help="file path")
    args = parser.parse_args()

    if args.FT_ST == 'FT':
        dist = td.FastestPathOnePass()
    elif args.FT_ST == 'ST':
        dist = td.ShortestPath()
    else:
        raise Exception('Error on argument FT_ST. Use FT for FT diameter or ST for ST diameter')

    distances = [dist]

    input_path = args.file

    with open(input_path, "r") as f:
        for row in f:
            if not row.strip():  # check if line is blank
                continue
            row = row.split()
            if len(row) > 3:
                raise Exception('In Input file, incorrect line: ' + str(row))
            g_path = row[0]
            dummy_node = None
            is_directed = True
            if len(row) > 1:
                dummy_node = int(row[1])
                if dummy_node < 0:
                    dummy_node = None
            if len(row) > 2:
                is_directed = False

            for dist in distances:
                dist_name = dist.get_name()

                print('DISTANCE: ' + args.FT_ST)

                graph_name = g_path.rsplit('/', 1)[1]
                print(args.FT_ST + ' Graph ' + graph_name, flush=True)
                print(args.FT_ST + ' Graph ' + graph_name + ' Dummy node: ' + str(dummy_node), flush=True)
                print(args.FT_ST + ' Graph ' + graph_name + ' is_directed: ' + str(is_directed), flush=True)

                g = tg.Graph(file_path=g_path, is_directed=is_directed, latest_node=dummy_node)
                start_time = time.time()
                diameter = td.compute_diameter(graph=g, distance=dist)
                end_time = time.time()
                diam_time = end_time - start_time
                print(args.FT_ST + graph_name + ' DIAMETER: ' + str(diameter), flush=True)
                # print(dist_name + graph_name + ' TIME: ' + str(diam_time), flush=True)
                print('\n', flush=True)
back to top