40 datafiles = [f
for f
in os.listdir(folder_path)
if f.startswith(prefix)]
45 size_groups = defaultdict(list)
46 for file_path
in datafiles:
49 for size, offsets
in size_groups.items():
50 print(f
"Size: {size} -> Count: {len(offsets)}")
58 for size
in size_groups.keys():
59 size_tuple = tuple(map(float, size.split()))
60 if size_tuple[0]>max_size:
61 max_size=size_tuple[0]
65 leftmost_offset=[999,999,999]
66 for offset
in size_groups[max_size_key]:
67 offset_tuple = tuple(map(float, offset.split()))
69 for m
in range(dimension):
70 if offset_tuple[m]<leftmost_offset[m]:
71 leftmost_offset[m]=offset_tuple[m]
72 leftmost_offset_key=offset
75 domain_offset = tuple(leftmost_offset)
76 domain_size = tuple(map(float, max_size_key.split()))
77 domain_size = tuple(
round_sig(x * 3,5)
for x
in domain_size)
79 print(domain_offset, domain_size)
82 total_level=len(size_groups.keys())
85 tree_matrix=[
None]*total_level
86 tree_patches=[
None]*total_level
90 for size, offsets
in size_groups.items():
91 size_tuple = tuple(map(float, size.split()))
92 level=int( math.log( int(
round_sig(domain_size[0]/size_tuple[0],1)), 3) )
93 matrix_size=(3**level)
96 matrix=np.zeros((matrix_size, matrix_size, matrix_size), dtype=bool)
97 for offset
in offsets:
98 offset_tuple = tuple(map(float, offset.split()))
100 for i
in range(len(offset_tuple)):
101 index[i]=round((offset_tuple[i]-domain_offset[i])/size_tuple[i])
102 matrix[tuple(index)]=1
103 tree_matrix[level-1]=matrix
104 tree_patches[level-1]=len(offsets)
106 for i
in range(total_level):
107 print(
"level "+str(i)+
":",tree_matrix[i].shape)
111 fig = plt.figure(figsize=(12, 4))
113 for i
in range(total_level):
114 ax = fig.add_subplot(1,total_level,i+1, projection=
'3d')
115 x, y, z = np.where(tree_matrix[i])
116 ax.scatter(x, y, z, c=
'black', marker=
's',s=50*27/3**(1+i))
119 ax.set_xlabel(
"X"); ax.set_ylabel(
"Y"); ax.set_zlabel(
"Z")
120 ax.set_xlim([0,3**(1+i)-1]); ax.set_ylim([0,3**(1+i)-1]); ax.set_zlim([0,3**(1+i)-1]);
121 ax.set_title(
"Level="+str(i)+
", Entries="+str(tree_patches[i]))
125 plt.savefig(
"TreeStructure.pdf")
126 plt.savefig(
"TreeStrucutre.png")