Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def is_modest_size(logical_array: np.ndarray, field_bounding_box):
"""Decide whether the ROI is roughly the size of a BB; not noise and not an artifact. Used to find the BB."""
bbox = field_bounding_box
rad_field_area = (bbox[1] - bbox[0]) * (bbox[3] - bbox[2])
return rad_field_area * 0.003 < np.sum(logical_array) < rad_field_area * 0.3
left_right_interpolated = field(xx_left_right, yy_left_right)
top_bot_interpolated = field(xx_top_bot, yy_top_bot)
left_right_weighted_diff = (
2
* (left_right_interpolated - left_right_interpolated[:, ::-1])
/ (left_right_interpolated + left_right_interpolated[:, ::-1])
)
top_bot_weighted_diff = (
2
* (top_bot_interpolated - top_bot_interpolated[::-1, :])
/ (top_bot_interpolated + top_bot_interpolated[::-1, :])
)
return np.sum(left_right_weighted_diff ** 2) + np.sum(
top_bot_weighted_diff ** 2
)
leaf_pair_widths = np.array(leaf_pair_widths)
grid = dict()
grid["mlc"] = np.arange(
-max_leaf_gap / 2, max_leaf_gap / 2 + grid_resolution, grid_resolution
).astype("float")
_, top_of_reference_leaf = _determine_leaf_centres(leaf_pair_widths)
grid_reference_position = _determine_reference_grid_position(
top_of_reference_leaf, grid_resolution
)
# It might be better to use round instead of ceil here.
total_leaf_widths = np.sum(leaf_pair_widths)
top_grid_pos = (
np.ceil((total_leaf_widths / 2 - grid_reference_position) / grid_resolution)
* grid_resolution
+ grid_reference_position
)
bot_grid_pos = (
grid_reference_position
- np.ceil((total_leaf_widths / 2 + grid_reference_position) / grid_resolution)
* grid_resolution
)
grid["jaw"] = np.arange(
bot_grid_pos, top_grid_pos + grid_resolution, grid_resolution
)
def calc_comparison(logfile_mu_density, mosaiq_mu_density, normalisation=None):
if normalisation is None:
normalisation = np.sum(mosaiq_mu_density)
comparison = np.sum(np.abs(logfile_mu_density - mosaiq_mu_density)) / normalisation
return comparison
def calc_normalisation(mosaiq_delivery_data):
all_gantry_angles = mosaiq_delivery_data.mudensity
mosaiq_gantry_angles = np.unique(mosaiq_delivery_data.gantry)
number_of_gantry_angles = len(mosaiq_gantry_angles)
normalisation = np.sum(all_gantry_angles) / number_of_gantry_angles
return normalisation
def _calc_device_open(blocked_by_device):
device_open = {}
for device, value in blocked_by_device.items():
device_sum = np.sum(
np.concatenate(
[np.expand_dims(blocked, axis=0) for _, blocked in value.items()],
axis=0,
),
axis=0,
)
device_open[device] = 1 - device_sum
return device_open
def to_minimise_edge_agreement(centre):
x, y = points_to_check_edge_agreement(centre)
results = field(x, y)
masked_results = results * dist_mask
mask_mean = np.sum(masked_results, axis=1) / num_in_mask
diff_to_mean_square = (results - mask_mean[mask_mean_lookup]) ** 2
mean_of_layers = np.sum(diff_to_mean_square[1::] / mask_count_per_item[1::]) / (
len(mask_mean) - 1
)
return mean_of_layers
ax.plot(bb_crosshair + bb_centre[0], [bb_centre[1]] * 2, "k", lw=1)
ax.plot(circle_x, circle_y, "k", lw=3)
ax.plot(x_bb_interp[0], x_bb_interp[1], "k", lw=0.5, alpha=0.3)
ax.plot(y_bb_interp[0], y_bb_interp[1], "k", lw=0.5, alpha=0.3)
ax.plot(
[field_centre[0], bb_centre[0]],
[field_centre[1], bb_centre[1]],
c="C3",
lw=3,
)
ax.axis("equal")
long_edge = np.sqrt(np.sum((np.array(edge_lengths)) ** 2))
long_edge_fraction = long_edge * 0.6
ax.set_xlim(
[field_centre[0] - long_edge_fraction, field_centre[0] + long_edge_fraction]
)
ax.set_ylim(
[field_centre[1] - long_edge_fraction, field_centre[1] + long_edge_fraction]
)
ax.set_xlabel(f"iView panel absolute x-pos {units}")
ax.set_ylabel(f"iView panel absolute y-pos {units}")
]
all_in_vicinity = [
np.where(np.abs(diff) < distance_mm_threshold) for diff in coord_diffs
]
ref_coord_points = create_point_combination(
[in_vicinity[0] for in_vicinity in all_in_vicinity]
)
eval_coord_points = create_point_combination(
[in_vicinity[1] for in_vicinity in all_in_vicinity]
)
distances = np.sqrt(
np.sum(
[
coord_diff[ref_points, eval_points] ** 2
for ref_points, eval_points, coord_diff in zip(
ref_coord_points, eval_coord_points, coord_diffs
)
],
axis=0,
)
)
within_distance_threshold = distances < distance_mm_threshold
distances = distances[within_distance_threshold]
ref_coord_points = ref_coord_points[:, within_distance_threshold]
eval_coord_points = eval_coord_points[:, within_distance_threshold]