-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathcompress.py
More file actions
executable file
·45 lines (35 loc) · 1.63 KB
/
compress.py
File metadata and controls
executable file
·45 lines (35 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python3
import pygfa
import networkx as nx
import matplotlib.pyplot as plt
import argparse
import logging
logging.basicConfig(level=logging.DEBUG)
if __name__ == "__main__":
# -------------------------CLI-ARGUMENT-MANAGEMENT-------------------------------- #
parser = argparse.ArgumentParser(description="Compute graph structure from GFA file.")
parser.add_argument("-f", "--file", metavar="file", type=str, nargs=1, required=True)
parser.add_argument("-d", "--display", action="store_true", default=False)
parser.add_argument("-c", "--convert", metavar=("gfa_version", "output_file"), type=str, nargs=2, required=False)
# -------------------------------------------------------------------------------- #
try:
args = parser.parse_args()
tmp_pygfa = pygfa.gfa.GFA.from_gfa(args.file[0])
node_color = "r"
if args.display:
edge_labels = dict([((node1, node2), key) for node1, node2, key in tmp_pygfa.edges(keys=True)])
layout = nx.spring_layout(tmp_pygfa._graph)
nx.draw(tmp_pygfa._graph, layout, with_labels=True, node_color=node_color)
# nx.draw_networkx_edge_labels (tmp_pygfa, layout, edge_labels = edge_labels)
plt.show()
if args.convert:
version = 1
if args.convert[0] in ("1", "gfa1", "GFA1"):
version = 1
else:
raise ValueError("Only GFA1 conversion is supported")
tmp_pygfa.dump(gfa_version=version, out=args.convert[1])
except SystemExit:
pass
except EnvironmentError as env_error:
print(repr(env_error))