Repository navigation
Expand file tree
/
Copy pathstochastic_geo_sphere_contact_2.py
More file actions
113 lines (85 loc) · 3.56 KB
/
Copy pathstochastic_geo_sphere_contact_2.py
File metadata and controls
113 lines (85 loc) · 3.56 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import numpy as np
import matplotlib.pylab as plt
#import scipy.stats as stats
#import pandas as pd
import sys
import statistics as stat
#import useful_things as ut
num_folder = "";
case_names = ["balabolka"]; # case
num_names = ["02", "man2x"]; # names
for case_name in case_names:
for num_name in num_names:
# MASK
filename1 = 'C://Users//azer//OneDrive - University of Waterloo//dump_results_06//' + num_folder + "" + case_name + '_' + num_name +'//dist_mask.csv';
csv_data1 = pd.read_csv(filename1, sep=',',header=None);
#print filename1;
mask_vals = csv_data1.values[:,0];
# SDF
filename2 = 'C://Users//azer//OneDrive - University of Waterloo//dump_results_06//' + num_folder + "" + case_name + '_' + num_name +'//dist_all.csv';
csv_data2 = pd.read_csv(filename2, sep=',',header=None);
#print filename2;
sdf_vals = csv_data2.values[:,0];
# size
img_sz = np.sqrt(len(mask_vals));
img_sz_int = int(img_sz);
#########################
# calculate statistics
#########################
iter_step = 1; # be extra careful
a_list = [];
for x_iter in range(0, img_sz_int, iter_step):
for y_iter in range(0, img_sz_int, iter_step):
if sdf_vals[x_iter + y_iter * img_sz_int] > 0:
a_list.append(sdf_vals[x_iter + y_iter * img_sz_int]);
# store non zero non negative sdf values
str_vals_ggg = "non_neg_vals_" + case_name + "_" + num_name + " = a_list";
exec(str_vals_ggg);
print "min = ", min(a_list);
print "max = ", max(a_list);
print "mean = ", stat.mean(a_list);
print "median = ", stat.median(a_list);
print "variance = ", stat.variance(a_list);
#########################
# calculate area_fraction
#########################
area_counter = 0;
num_sample = 0;
# mask val
# <= 0 inside an element
# > 0 negative space
for x_iter in range(0, img_sz_int):
for y_iter in range(0, img_sz_int):
if mask_vals[x_iter + y_iter * img_sz_int] > 0:
num_sample += 1.0;
if sdf_vals[x_iter + y_iter * img_sz_int] > 0:
area_counter += 1.0;
area_fraction = area_counter / num_sample;
print "area_fraction = ", area_fraction;
#######
# stuff
#######
h_gap = 0.2;
r_vals = np.arange(h_gap, 20, h_gap);
###################################
# calculate sphere contact function
###################################
str_vals = "scf_vals_" + case_name + "_" + num_name + " = []";
exec(str_vals);
# add area fraction
str_vals_0 = "scf_vals_" + case_name + "_" + num_name + ".append(area_fraction)";
exec(str_vals_0);
for r_iter in r_vals:
sys.stdout.write('.');
num_contact = 0;
for x_iter in range(0, img_sz_int):
for y_iter in range(0, img_sz_int):
if sdf_vals[x_iter + y_iter * img_sz_int] >= r_iter:
num_contact += 1.0;
scf = num_contact / num_sample;
str_vals = "scf_vals_" + case_name + "_" + num_name + ".append(scf)";
exec(str_vals);
print "";
##########
# cutting
##########