import subprocess as SP import sys from datetime import datetime, timedelta import os import shutil import json def setup_logging(loglevel="INFO", file=False): import logging import coloredlogs logfmt = " | ".join( ["[%(delta)s] %(levelname)s", "%(name)s:%(pathname)s:%(lineno)s", "%(message)s"] ) class ColorDeltaTimeFormatter(coloredlogs.ColoredFormatter): def format(self, record): seconds = record.relativeCreated / 1000 duration = timedelta(seconds=seconds) record.delta = str(duration) return super().format(record) class DeltaTimeFormatter(coloredlogs.BasicFormatter): def format(self, record): seconds = record.relativeCreated / 1000 duration = timedelta(seconds=seconds) record.delta = str(duration) return super().format(record) logger = logging.getLogger() if file: open("ed_lrr_test.log", "w").close() fh = logging.FileHandler("ed_lrr_test.log") fh.setLevel(logging.DEBUG) fh.setFormatter(DeltaTimeFormatter(logfmt)) logger.addHandler(fh) coloredlogs.DEFAULT_FIELD_STYLES["delta"] = {"color": "green"} coloredlogs.DEFAULT_FIELD_STYLES["levelname"] = {"color": "yellow"} coloredlogs.ColoredFormatter = ColorDeltaTimeFormatter numeric_level = getattr(logging, loglevel.upper(), None) if not isinstance(numeric_level, int): raise ValueError("Invalid log level: %s" % loglevel) coloredlogs.install(level=numeric_level, fmt=logfmt, logger=logger) return JUMP_RANGE = 48 globals().setdefault("__file__", r"D:\devel\rust\ed_lrr_gui\rust\run_test.py") dirname = os.path.dirname(__file__) or "." os.chdir(dirname) t_start = datetime.now() os.environ["PYO3_PYTHON"] = sys.executable if "--clean" in sys.argv[1:]: SP.check_call(["cargo", "clean"]) if "--build" in sys.argv[1:]: SP.check_call(["cargo", "lcheck"]) SP.check_call([sys.executable, "-m", "pip", "install", "-e", ".."]) print("Build+Install took:", datetime.now() - t_start) sys.path.append("..") setup_logging(file=True) _ed_lrr = __import__("_ed_lrr") def callback(state): print(state) print(_ed_lrr) r = _ed_lrr.PyRouter(callback) r.load("../stars.csv", immediate=False) # r.nb_perf_test(JUMP_RANGE) # exit() # start, end = "Sol", "Colonia" # systems = r.resolve(start, end) # sys_ids = {k: v["id"] for k, v in systems.items()} r.floyd_warshall_test(JUMP_RANGE) # r.bfs_test(JUMP_RANGE) # cfg = {} # cfg["mode"] = "incremental_broadening" # # input("{}>".format(os.getpid())) # # route = r.precompute_neighbors(JUMP_RANGE) # route = r.route([sys_ids[start], sys_ids[end]], JUMP_RANGE, cfg, 0) # print("Optimal route:", len(route)) exit() ships = _ed_lrr.PyShip.from_journal() r = _ed_lrr.PyRouter(callback) r.load("../stars.csv", immediate=False) def func(*args, **kwargs): print(kwargs) return 12 r.precompute_neighbors(JUMP_RANGE) exit() # start, end = "Sol", "Colonia" # # 135 in 22m 36s 664ms 268us 800ns """ {'mode': 'BFS_serial', 'system': 'Nuwo OP-N c23-1', 'from': 'Sol', 'to': 'Beagle Point', 'depth': 492, 'queue_size': 1602, 'd_rem': 2456.31298828125, 'd_total': 65279.3515625, 'prc_done': 96.23722839355469, 'n_seen': 17366296, 'prc_seen': 26.25494384765625} [0:43:19.715858] INFO | _ed_lrr.route:src\route.rs:2402 | Took: 34m 38s 40ms 256us 500ns """ """ {'mode': 'BFS_serial', 'system': 'Syriae Thaa DN-B d13-2', 'from': 'Sol', 'to': 'Beagle Point', 'depth': 521, 'queue_size': 2311, 'd_rem': 492.8757019042969, 'd_total': 65279.3515625, 'prc_done': 99.2449722290039, 'n_seen': 19566797, 'prc_seen': 29.58173179626465} [0:53:28.431326] INFO | _ed_lrr.route:src\route.rs:2402 | Took: 48m 34s 958ms 326us 300ns """ """ [0:36:02.738233] INFO | _ed_lrr.route:src\route.rs:2404 | Took: 27m 6s 216ms 161us 100ns Optimal route: 534 """ """ Sol, Colonia Took: 30m 22s 63ms 818us Allocs: 26622742 Reallocs: 45809664 Deallocs: 26622600 Optimal route: 135 """ """ Sol, Ix Took: 1s 995ms 115us 100ns Allocs: 17058 Reallocs: 32042 Deallocs: 17047 Optimal route: 4 """ # Stats { allocations: 23257531, deallocations: 23257389, reallocations: 42747420, bytes_allocated: 179667997387, bytes_deallocated: 179667853217, bytes_reallocated: 151573742821 } start, end = "Sol", "Colonia" systems = r.resolve(start, end) sys_ids = {k: v["id"] for k, v in systems.items()} cfg = {} cfg["mode"] = "incremental_broadening" # input("{}>".format(os.getpid())) route = r.route([sys_ids[start], sys_ids[end]], JUMP_RANGE, cfg, 0) print("Optimal route:", len(route)) # cfg["mode"] = "beam_stack" # route = r.route([sys_ids[start], sys_ids[end]], JUMP_RANGE, cfg, 0) exit() # bw_l = [ # 1, # 2, # 4, # 8, # 16, # 32, # 64, # 128, # 256, # 512, # 1024, # 2048, # 4096, # 8192, # 16384, # 0.1, # 0.25, # 0.5, # 0.75, # 0.9, # 0.99, # 0, # ] # cfg = { # "mode": "bfs", # "greedyness": 0, # } # bw_l = [0] # for bw in bw_l: # ofn = "../logs/route_log_beam_{}.txt".format(bw) # # if os.path.isfile(ofn): # # continue # print(ofn) # t_start = datetime.today() # try: # if isinstance(bw, int): # cfg["beam_width"] = {"absolute": bw} # else: # cfg["beam_width"] = {"fraction": bw} # route = r.route([sys_ids["Sol"], sys_ids["Beagle Point"]], JUMP_RANGE, cfg, 8) # print(route) # except Exception as e: # print("Error:", e) # route = [] # dt = (datetime.today() - t_start).total_seconds() # shutil.copy("route_log.txt", ofn) # with open(ofn.replace(".txt", ".json"), "w") as of: # json.dump({"route": route, "dt": dt}, of) # g_l = [1.0, 0.99, 0.9, 0.75, 0.5, 0.25] # g_l.clear() # cfg["beam_width"] = 0 # for g in g_l: # ofn = "../logs/route_log_g_{}.txt".format(g) # if os.path.isfile(ofn): # continue # print(ofn) # t_start = datetime.today() # try: # cfg["greedyness"] = g # route = r.route([sys_ids["Sol"], sys_ids["Beagle Point"]], JUMP_RANGE, cfg) # except Exception as e: # print("Error:", e) # route = [] # dt = (datetime.today() - t_start).total_seconds() # shutil.copy("route_log.txt", ofn) # with open(ofn.replace(".txt", ".json"), "w") as of: # json.dump({"route": route, "dt": dt}, of) # r.unload() # exit() # os.chdir("..") # SP.check_call( # [ # "conda", # "run", # "-n", # "base", # "--no-capture-output", # "python", # "plot_heatmap_vaex.py", # "logs/route_log_*.txt", # ], # shell=True, # )