-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpers2gudhi.py
59 lines (47 loc) · 1.44 KB
/
pers2gudhi.py
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import argparse
import pathlib
def read_pairs(fname):
pairs = list()
with open(fname, "r") as src:
lines = src.readlines()
for line in lines:
pairs.append([int(x) for x in line.split(" ")])
return pairs
def write_pairs(pairs, output, dim):
with open(output, "a") as dst:
for pair in pairs:
birth = pair[0]
death = pair[1]
if death == -1:
death = "inf"
dst.write(f"{dim} {birth} {death}\n")
def main(pers_input, gudhi_output):
p = pathlib.Path(gudhi_output)
if p.exists():
p.unlink()
for i in range(4):
p = pathlib.Path(pers_input + "_" + str(i) + ".txt")
if p.exists():
pairs = read_pairs(p)
write_pairs(pairs, gudhi_output, i)
p.unlink()
else:
print(f"{p} not found")
p = pathlib.Path(pers_input + "_betti.txt")
if p.exists():
p.unlink()
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Convert a Perseus diagram into a Gudhi diagram"
)
parser.add_argument(
"input_diagram", type=str, help="Persistence Diagram in Perseus format"
)
parser.add_argument(
"output_diagram",
type=str,
help="Output Gudhi format file name",
default="out.gudhi",
)
args = parser.parse_args()
main(args.input_diagram.split("_")[0], args.output_diagram)