Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def group_consecutive_logfiles(file_hashes, index):
times = np.array([index[key]["local_time"] for key in file_hashes]).astype(
np.datetime64
)
sort_reference = np.argsort(times)
file_hashes = file_hashes[sort_reference]
times = times[sort_reference]
hours_4 = np.array(60 * 60 * 4).astype(np.timedelta64)
split_locations = np.where(np.diff(times) >= hours_4)[0] + 1
return np.split(file_hashes, split_locations)
def cal_fit(net_od):
net_od = np.array(net_od, copy=False)
return a * net_od + b * net_od ** n
def _fraction_number(self, dicom_template, gantry_tol=3, meterset_tol=0.5):
fractions = dicom_template.FractionGroupSequence
if len(fractions) == 1:
return fractions[0].FractionGroupNumber
fraction_numbers = [fraction.FractionGroupNumber for fraction in fractions]
fraction_matches = np.array(
[
self._matches_fraction(
dicom_template,
fraction_number,
gantry_tol=gantry_tol,
meterset_tol=meterset_tol,
)
for fraction_number in fraction_numbers
]
)
if np.sum(fraction_matches) < 1:
raise ValueError(
"A fraction group was not able to be found with the metersets "
"and gantry angles defined by the tolerances provided. "
"Please manually define the fraction group number."
def check_if_at_bounds(bb_centre, bb_bounds):
x_at_bounds = np.any(np.array(bb_centre[0]) == np.array(bb_bounds[0]))
y_at_bounds = np.any(np.array(bb_centre[1]) == np.array(bb_bounds[1]))
any_at_bounds = x_at_bounds or y_at_bounds
return any_at_bounds
>>>
>>> mu_density_from_logfile(r"a/path/goes/here") # doctest: +SKIP
"""
divisibility_of_max_leaf_gap = np.array(max_leaf_gap / 2 / grid_resolution)
max_leaf_gap_is_divisible = (
divisibility_of_max_leaf_gap.astype(int) == divisibility_of_max_leaf_gap
)
if not max_leaf_gap_is_divisible:
raise ValueError(
"The grid resolution needs to exaclty divide half of the max leaf " "gap"
)
leaf_pair_widths = np.array(leaf_pair_widths)
if not np.max(np.abs(mlc)) <= max_leaf_gap / 2: # pylint: disable = unneeded-not
raise ValueError(
"The mlc should not travel further out than half the maximum leaf " "gap."
)
mu, mlc, jaw = remove_irrelevant_control_points(mu, mlc, jaw)
full_grid = get_grid(max_leaf_gap, grid_resolution, leaf_pair_widths)
mu_density = np.zeros((len(full_grid["jaw"]), len(full_grid["mlc"])))
for i in range(len(mu) - 1):
control_point_slice = slice(i, i + 2, 1)
current_mlc = mlc[control_point_slice, :, :]
current_jaw = jaw[control_point_slice, :]
def get_mosaiq_delivery_data_bygantry(mosaiq_delivery_data):
mu = np.array(mosaiq_delivery_data.monitor_units)
mlc = np.array(mosaiq_delivery_data.mlc)
jaw = np.array(mosaiq_delivery_data.jaw)
gantry_angles = np.array(mosaiq_delivery_data.gantry)
unique_mosaiq_gantry_angles = np.unique(gantry_angles)
mosaiq_delivery_data_bygantry = dict()
for mosaiq_gantry_angle in unique_mosaiq_gantry_angles:
gantry_angle_matches = gantry_angles == mosaiq_gantry_angle
diff_mu = np.concatenate([[0], np.diff(mu)])[gantry_angle_matches]
gantry_angle_specific_mu = np.cumsum(diff_mu)
mosaiq_delivery_data_bygantry[mosaiq_gantry_angle] = dict()
mosaiq_delivery_data_bygantry[mosaiq_gantry_angle][
"mu"
] = gantry_angle_specific_mu
exist in the PyMedPhys copy of the DICOM dictionary.
"""
non_private_tags_in_dataset = np.array(non_private_tags_in_dicom_dataset(ds))
are_non_private_tags_in_dict_baseline = []
for tag in non_private_tags_in_dataset:
try:
get_baseline_dict_entry(tag)
are_non_private_tags_in_dict_baseline.append(True)
except NotInBaselineError:
are_non_private_tags_in_dict_baseline.append(False)
unknown_tags = list(
non_private_tags_in_dataset[
np.invert(np.array(are_non_private_tags_in_dict_baseline, dtype=bool))
]
)
return unknown_tags
x_dose[np.invert(x_outside)],
y_dose[np.invert(y_outside)],
z_dose[np.invert(z_outside)],
)
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)
----------
xyz_axes : tuple
A tuple containing three `numpy.ndarray`s corresponding to the `x`,
`y` and `z` axes of a given 3D grid - usually a DICOM dataset's
pixel array.
Returns
-------
coords : ndarray
An array containing three grids consisting of the `x`, 'y` and
`z` coordinates of the corresponding grid (e.g. DICOM dataset's
pixel array) from which the original axes were extracted.
"""
ZZ, YY, XX = np.meshgrid(xyz_axes[2], xyz_axes[1], xyz_axes[0], indexing="ij")
coords = np.array((XX, YY, ZZ), dtype=np.float64)
return coords