-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathtkompare
More file actions
executable file
·84 lines (58 loc) · 2.53 KB
/
tkompare
File metadata and controls
executable file
·84 lines (58 loc) · 2.53 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env python3
import trako as TKO
import numpy as np
import argparse, os, re, sys
from prettytable import PrettyTable
import vtk
from vtk.util import numpy_support
def compare(a, b):
'''
'''
if (os.path.splitext(a)[1].lower() == '.vtp' or \
os.path.splitext(b)[1].lower() == '.vtp') and \
(os.path.splitext(a)[1].lower() == '.vtk' or \
os.path.splitext(b)[1].lower() == '.vtk'):
sizeA = os.path.getsize(a)
sizeB = os.path.getsize(b)
poly_a = TKO.Util.loadvtp(a)
poly_b = TKO.Util.loadvtp(b)
x = PrettyTable()
x.field_names = ['File', 'Bytes', 'Streamlines']
x.add_row([os.path.basename(a), str(sizeA), str(poly_a['number_of_streamlines'])])
x.add_row([os.path.basename(b), str(sizeB), str(poly_b['number_of_streamlines'])])
print(x)
x = PrettyTable()
x.field_names = ["Geometry", "Min. Delta", "Max. Delta", "Mean. Delta", "StdDev."]
(min_a, max_a, mean_a, std_a), dist_a = TKO.Util.error(poly_a['points'], poly_b['points'])
x.add_row(["XYZ Points", min_a, max_a, mean_a, std_a])
(min_a, max_a, mean_a, std_a), dist_a = TKO.Util.error(poly_a['lines'], poly_b['lines'])
x.add_row(["Line Indices", min_a, max_a, mean_a, std_a])
print(x)
x = PrettyTable()
x.field_names = ["Scalars", "Min. Delta", "Max. Delta", "Mean. Delta", "StdDev."]
for i,s in enumerate(poly_a['scalar_names']):
(min_a, max_a, mean_a, std_a), dist_a = TKO.Util.error(poly_a['scalars'][i], poly_b['scalars'][i])
x.add_row([s, np.round(min_a,6), np.round(max_a,6), np.round(mean_a,6), np.round(std_a,6)])
print(x)
x = PrettyTable()
x.field_names = ["Properties", "Min. Delta", "Max. Delta", "Mean. Delta", "StdDev."]
# x.add_row(['Not supported yet.','','','',''])
for i,s in enumerate(poly_a['property_names']):
(min_a, max_a, mean_a, std_a), dist_a = TKO.Util.error(poly_a['properties'][i], poly_b['properties'][i])
x.add_row([s, np.round(min_a,6), np.round(max_a,6), np.round(mean_a,6), np.round(std_a,6)])
print(x)
else:
print('ERROR: Only .vtp and .vtk files are currently supported.')
sys.exit(2)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='T R A K O: Compare two streamline files.')
parser.add_argument('-a', help='Streamline file A (.vtp)', required=True)
parser.add_argument('-b', help='Streamline file B (.vtp)', required=True)
args = parser.parse_args()
print()
print('>> T R A K O - Comparison')
print()
compare(args.a, args.b)
print()
print(' (x_x) tko-ed.')
print()