Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def load_unit(self, unit_id):
"""Loads the image data for display."""
skip_subject = False
self.images = dict()
for img_name in self.image_names:
ipath = realpath(pjoin(self.in_dir, unit_id, img_name))
img_data = read_image(ipath, error_msg=img_name)
if np.count_nonzero(img_data) == 0:
skip_subject = True
print('image {} is empty!'.format(img_name, self.current_unit_id))
self.images[img_name] = scale_0to1(img_data)
if not skip_subject:
# TODO implement crop to extents for more than 2 images
# self.image_one, self.image_two = crop_to_seg_extents(self.image_one,
# self.image_two,
# self.padding)
self.slices = pick_slices(self.images[self.image_names[0]], # first img
self.views, self.num_slices_per_view)
# # where to save the visualization to
# out_vis_path = pjoin(self.out_dir, 'visual_qc_{}_{}'.format(
# self.vis_type, unit_id))
return skip_subject
def _compute_background(self):
"""Computes the background image for the current image."""
if not hasattr(self, 'background_img'):
# need to scale the mask, as Collage class does NOT automatically rescale
self.foreground_mask = mask_image(self.current_img, out_dtype=bool)
temp_background_img = np.copy(self.current_img)
temp_background_img[self.foreground_mask] = 0.0
self.background_img = scale_0to1(temp_background_img,
exclude_outliers_below=1,
exclude_outliers_above=1)
def attach_image_to_foreground_axes(self, image3d, slices=None, cmap='gray'):
"""Attaches a given image to the foreground axes and bring it forth"""
image3d = crop_image(image3d, self.padding)
# TODO is it always acceptable to rescale diffusion data?
image3d = scale_0to1(image3d)
if slices is None:
slices = pick_slices(image3d, self.views, self.num_slices_per_view)
for ax_index, (dim_index, slice_index) in enumerate(slices):
slice_data = get_axis(image3d, dim_index, slice_index)
self.images_fg[ax_index].set(data=slice_data, cmap=cmap)
self.images_fg_label[ax_index].set_text(str(slice_index))
def attach_image_to_foreground_axes(self, image3d, cmap='gray'):
"""Attaches a given image to the foreground axes and bring it forth"""
image3d = crop_image(image3d, self.padding)
image3d = scale_0to1(image3d)
slices = pick_slices(image3d, self.views, self.num_slices_per_view)
for ax_index, (dim_index, slice_index) in enumerate(slices):
slice_data = get_axis(image3d, dim_index, slice_index)
self.images_fg[ax_index].set(data=slice_data, cmap=cmap)
for ax in self.fg_axes:
ax.set(visible=True, zorder=self.layer_order_zoomedin)
def overlay_dwi_edges(self):
# not cropping to help checking align in full FOV
overlaid = scale_0to1(self.b0_volume)
base_img = scale_0to1(self.dw_volumes[..., self.current_grad_index].squeeze())
slices = pick_slices(base_img, self.views, self.num_slices_per_view)
for ax_index, (dim_index, slice_index) in enumerate(slices):
mixed = dwi_overlay_edges(get_axis(base_img, dim_index, slice_index),
get_axis(overlaid, dim_index, slice_index))
self.images_fg[ax_index].set(data=mixed)
self.images_fg_label[ax_index].set_text(str(slice_index))
# the following needs to be done outside show_image3d, as we need custom mixing
self._set_backgrounds_visibility(False)
self._set_foregrounds_visibility(True)
self._identify_foreground('Alignment check to b=0, '
'grad index {}'.format(self.current_grad_index))
Parameters
----------
in_mri_path : str
Path to an MRI scan readable by Nibabel
Returns
-------
hist : ndarray
Array of prob. densities for intensity
"""
img = read_image(in_mri_path)
# scaled, and reshaped
arr_0to1 = scale_0to1(img).flatten()
# compute prob. density
hist, _ = np.histogram(arr_0to1, bins=num_bins, density=True)
return hist
def overlay_dwi_edges(self):
# not cropping to help checking align in full FOV
overlaid = scale_0to1(self.b0_volume)
base_img = scale_0to1(self.dw_volumes[..., self.current_grad_index].squeeze())
slices = pick_slices(base_img, self.views, self.num_slices_per_view)
for ax_index, (dim_index, slice_index) in enumerate(slices):
mixed = dwi_overlay_edges(get_axis(base_img, dim_index, slice_index),
get_axis(overlaid, dim_index, slice_index))
self.images_fg[ax_index].set(data=mixed)
self.images_fg_label[ax_index].set_text(str(slice_index))
# the following needs to be done outside show_image3d, as we need custom mixing
self._set_backgrounds_visibility(False)
self._set_foregrounds_visibility(True)
self._identify_foreground('Alignment check to b=0, '
'grad index {}'.format(self.current_grad_index))