🔨 refactor(data_processing.py): rename function parameter to improve semantics
The function parameter `update_progress_bar` has been renamed to `progressbar_placeholder` to improve the semantics of the function. This change does not affect the functionality of the code.
✨ feat(data_processing.py): add new morphological indicators to the output of the `get_advanced_data` function
The `get_advanced_data` function now calculates and returns the following morphological indicators:
- MI_mR: the ratio of the maximum radius to the mean radius
- MI_mH: the ratio of the maximum radius to the height of the object
- V_scan: the volume of the scanned object
- R_V_scan: the radius of a sphere with the same volume as the scanned object
- S_V_scan: the surface area of a sphere with the same volume as the scanned object
- R_h: the hydraulic radius of the object
- HI: the hydraulic index of the object
This commit is contained in:
parent
16f43c2126
commit
aeb8c6ed44
@ -107,7 +107,7 @@ def get_discrete_data(obj:ScannedObject, ndigits:int, delta_z:float=1, update_pr
|
||||
progress += 1
|
||||
return data
|
||||
|
||||
def get_advanced_data(discrete_data:dict, update_progress_bar= progressbar_placeholder)->dict:
|
||||
def get_advanced_data(discrete_data:dict, V_scan = 0, update_progress_bar= progressbar_placeholder)->dict:
|
||||
"""
|
||||
Calculates morphological indicators from the given discrete data
|
||||
|
||||
@ -122,20 +122,20 @@ def get_advanced_data(discrete_data:dict, update_progress_bar= progressbar_place
|
||||
- Tortuosite
|
||||
- Volume en mm3
|
||||
- Surface en mm2
|
||||
- Moyenne des rayons moyens
|
||||
- Ecart-type des rayons moyens
|
||||
- Sigma r tot
|
||||
- Moyenne des rayons moyens 〈R〉
|
||||
- Ecart-type des rayons moyens σ_〈R〉
|
||||
- σ_〈R〉^tot
|
||||
- MI_l
|
||||
- MI_p
|
||||
- Rayon hydraulique R_h
|
||||
"""
|
||||
|
||||
all_R = discrete_data["Rayon moyen (en mm)"]
|
||||
# Tortusity
|
||||
l = 0
|
||||
L = 0
|
||||
vertices = list(zip(discrete_data["X moy (en mm)"],
|
||||
discrete_data["Y moy (en mm)"],
|
||||
discrete_data["Z moy (en mm)"]))
|
||||
|
||||
for index in range(len(vertices)-1):
|
||||
l += de.get_distance_between_two_vertices(vertices[index], vertices[index+1])
|
||||
L = de.get_distance_between_two_vertices(vertices[0], vertices[-1])
|
||||
@ -144,26 +144,44 @@ def get_advanced_data(discrete_data:dict, update_progress_bar= progressbar_place
|
||||
|
||||
# Volume and surface
|
||||
H = discrete_data["Z moy (en mm)"][-1] - discrete_data["Z moy (en mm)"][0]
|
||||
R = de.get_mean([np.power(r,2) for r in discrete_data["Rayon moyen (en mm)"]])
|
||||
V = np.pi * R * H
|
||||
S = 2 * np.pi * R * H
|
||||
R2_mean = de.get_mean([np.power(r,2) for r in all_R])
|
||||
V = np.pi * R2_mean * H
|
||||
S = 2 * np.pi * R2_mean * H
|
||||
update_progress_bar(30)
|
||||
|
||||
# Morphological indicators
|
||||
R_mean = de.get_mean(discrete_data["Rayon moyen (en mm)"])
|
||||
R_mean_std = de.get_standard_deviation(discrete_data["Rayon moyen (en mm)"])
|
||||
R_mean = de.get_mean(all_R)
|
||||
R_mean_std = de.get_standard_deviation(all_R)
|
||||
mean_sigma_r_squared = de.get_mean([np.power(r,2) for r in discrete_data["Rayon ecart type (en mm)"]])
|
||||
sigma_r_tot = np.sqrt(np.power(R_mean_std,2) + mean_sigma_r_squared )
|
||||
MI_l = R_mean_std/R_mean
|
||||
MI_p = np.sqrt(mean_sigma_r_squared)/R_mean
|
||||
|
||||
R_max = max(all_R)
|
||||
MI_mR = R_max/R_mean
|
||||
MI_mH = R_max/H
|
||||
#MI_mr_in = R_max/R_in
|
||||
# TODO understand what is R_in
|
||||
R_V_scan = np.sqrt(V_scan/np.pi*H)
|
||||
S_V_scan = 2 * np.sqrt(np.pi * H * V_scan)
|
||||
R_h = R2_mean/ R_mean
|
||||
HI = R_mean * R_V_scan / R2_mean
|
||||
update_progress_bar(100)
|
||||
return {
|
||||
"Tortuosité":T,
|
||||
"Volume en mm3":V,
|
||||
"Surface en mm2":S,
|
||||
"Moyenne des rayons moyens":R_mean,
|
||||
"Ecart-type des rayons moyens":R_mean_std,
|
||||
"Sigma r tot":sigma_r_tot,
|
||||
"Moyenne des rayons moyens 〈R〉":R_mean,
|
||||
"Ecart-type des rayons moyens σ_〈R〉":R_mean_std,
|
||||
"σ_〈R〉^tot":sigma_r_tot,
|
||||
"MI_l":MI_l,
|
||||
"MI_p":MI_p
|
||||
"MI_p":MI_p,
|
||||
"MI_mR":MI_mR,
|
||||
"MI_mH":MI_mH,
|
||||
# "MI_mr_in":MI_mr_in,
|
||||
"V_scan":V_scan,
|
||||
"R_V_scan":R_V_scan,
|
||||
"S_V_scan":S_V_scan,
|
||||
"Rayon hydraulique R_h":R_h,
|
||||
"HI":HI
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user