Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
ref_coord_points[0, :], ref_coord_points[1, :], ref_coord_points[2, :]
]
)
gamma = np.sqrt(
(dose_diff / dose_threshold) ** 2 + (distances / distance_mm_threshold) ** 2
)
gamma_pass = gamma < 1
eval_pass = eval_coord_points[:, gamma_pass]
ravel_index = convert_to_ravel_index(eval_pass)
gamma_pass_array = np.zeros_like(dose_evaluation).astype(np.bool)
gamma_pass_array = np.ravel(gamma_pass_array)
dose_above_cut_off = np.ravel(dose_evaluation) > lower_dose_cutoff
gamma_pass_array[ravel_index] = True
gamma_pass_percentage = np.mean(gamma_pass_array[dose_above_cut_off]) * 100
return gamma_pass_percentage
maximum_test_distance = np.max(distance_mm_threshold) * max_gamma
evaluation_interpolation = scipy.interpolate.RegularGridInterpolator(
axes_evaluation,
np.array(dose_evaluation),
bounds_error=False,
fill_value=np.inf,
)
dose_reference = np.array(dose_reference)
reference_dose_above_threshold = dose_reference >= lower_dose_cutoff
mesh_axes_reference = np.meshgrid(*axes_reference, indexing="ij")
flat_mesh_axes_reference = np.array(
[np.ravel(item) for item in mesh_axes_reference]
)
reference_points_to_calc = reference_dose_above_threshold
reference_points_to_calc = np.ravel(reference_points_to_calc)
if random_subset is not None:
to_calc_index = np.where(reference_points_to_calc)[0]
np.random.shuffle(to_calc_index)
random_subset_to_calc = np.full_like(
reference_points_to_calc, False, dtype=bool
)
random_subset_to_calc[ # pylint: disable=unsupported-assignment-operation
to_calc_index[0:random_subset]
] = True
def apply_transform(xx, yy, transform):
xx_flat = np.ravel(xx)
transformed = transform @ np.vstack([xx_flat, np.ravel(yy), np.ones_like(xx_flat)])
xx_transformed = transformed[0]
yy_transformed = transformed[1]
xx_transformed.shape = xx.shape
yy_transformed.shape = yy.shape
return xx_transformed, yy_transformed
def apply_transform(xx, yy, transform):
xx_flat = np.ravel(xx)
transformed = transform @ np.vstack([xx_flat, np.ravel(yy), np.ones_like(xx_flat)])
xx_transformed = transformed[0]
yy_transformed = transformed[1]
xx_transformed.shape = xx.shape
yy_transformed.shape = yy.shape
return xx_transformed, yy_transformed
def get_interpolated_dose(coords_grid, dose_interpolation):
coords_grid_ij_indexing = np.array(
[
np.ravel(coords_grid[:, :, 1]),
np.ravel(coords_grid[:, :, 0]),
np.ravel(coords_grid[:, :, 2]),
]
).T
interpolated_dose = dose_interpolation(coords_grid_ij_indexing)
coords_dim = np.shape(coords_grid)
interpolated_dose = np.reshape(interpolated_dose, (coords_dim[0], coords_dim[1]))
return interpolated_dose
]
)
gamma = np.sqrt(
(dose_diff / dose_threshold) ** 2 + (distances / distance_mm_threshold) ** 2
)
gamma_pass = gamma < 1
eval_pass = eval_coord_points[:, gamma_pass]
ravel_index = convert_to_ravel_index(eval_pass)
gamma_pass_array = np.zeros_like(dose_evaluation).astype(np.bool)
gamma_pass_array = np.ravel(gamma_pass_array)
dose_above_cut_off = np.ravel(dose_evaluation) > lower_dose_cutoff
gamma_pass_array[ravel_index] = True
gamma_pass_percentage = np.mean(gamma_pass_array[dose_above_cut_off]) * 100
return gamma_pass_percentage
where_x = np.where(np.invert(x_outside))[0]
where_y = np.where(np.invert(y_outside))[0]
where_z = np.where(np.invert(z_outside))[0]
bounded_dose = dose[
where_y[0] : where_y[-1] + 1,
where_x[0] : where_x[-1] + 1,
where_z[0] : where_z[-1] + 1,
]
points_to_test = np.array(
[
[y, x, z, d]
for y, x, z, d in zip(
np.ravel(yy), np.ravel(xx), np.ravel(zz), np.ravel(bounded_dose)
)
]
)
inside_cube = [
test_if_in_cube(point_test, cube_definition)
for point_test in points_to_test[:, 0:3]
]
points_inside_cube = points_to_test[inside_cube, :]
ax = plot_cube(cube_definition)
ax.scatter(
points_inside_cube[:, 1],
points_inside_cube[:, 0],
points_inside_cube[:, 2],