diff --git a/deconvolution/main/evaluate.py b/deconvolution/main/evaluate.py index 77b95fff1142801026a4db67a50746dc7905cd61..3ee7be45bc7d636baa81fa0cd3c2e910450cb2d2 100755 --- a/deconvolution/main/evaluate.py +++ b/deconvolution/main/evaluate.py @@ -12,7 +12,7 @@ def parse_args(): parser = argparse.ArgumentParser(description='Process a d2 graph (complete graph or path) to evaluate its quality.') parser.add_argument('filename', type=str, help='The file to evalute') - parser.add_argument('--type', '-t', choices=["d2", "path", "d2-2annotate", "dgraphs"], default="path", required=True, + parser.add_argument('--type', '-t', choices=["d2", "path", "bg", "d2-2annotate", "dgraphs"], default="path", required=True, help="Define the data type to evaluate. Must be 'd2' or 'path' or 'd2-2annotate' (Rayan's hack).") parser.add_argument('--light-print', '-l', action='store_true', help='Print only wrong nodes and paths') @@ -43,6 +43,20 @@ def save_graph(g, filename): print("Wrong file format. Require graphml or gefx format", file=sys.stderr) exit() +def transform_bg(graph): + idx = 0 + node_names = {} + nx.set_node_attributes(graph, 0, 'score') + nx.set_node_attributes(graph, "", 'barcode_edges') + for node in graph.nodes(): + graph.nodes[node]['udg'] = f"[{node}][][]" + node_names[node] = str(idx) + idx += 1 + + graph = nx.relabel_nodes(graph, node_names) + + return graph + @@ -655,7 +669,11 @@ def main(): elif args.type == "dgraphs": udg_per_node = parse_udg_qualities(graph) # print(udg_per_node) - elif args.type == "d2": + elif args.type == "bg" or args.type == "d2": + + if args.type == "bg": + graph = transform_bg(graph) + components = list(nx.connected_components(graph)) components.sort(key=lambda x: -len(x))