Source code for multiScaleAnalysis.Visualization.visualize_with_napariHighRes_U2OS

import numpy as np
import napari
import os
from qtpy.QtCore import QTimer
import skimage.transform
from tifffile import imread, imwrite

[docs] class image_visualizer(): """ This class generates visualizations of highres segmentation results. """
[docs] def __init__(self): """ Initialize data folders and start Napari """ self.rawdatafolder = "rawdatafolder" self.segmentationfolder = "segmenteddatafolder" self.visualizedfolder = "outputfolder" self.region = "high_stack_001" self.establish_param = 0 self.viewer = napari.Viewer()
[docs] def load_images(self, vis_param): """" Load images from folder and render them according Visualization parameters specified. :param vis_param: Python dictionary of visulization paramters, e.g. vis_param['camera_angle1'] """ #get all timepoints from folder dir_list = os.listdir(self.rawdatafolder) timepointlist = [] for path in dir_list: if path.startswith('t'): timepointlist.append(path) timepointlist.sort() print(timepointlist) #if you establish parameters, only open first timepoint if self.establish_param==1: timepointlist = ["t00002"] i_time="t00001" iter_vascular =0 for i_time in timepointlist: self.viewer = napari.Viewer() #generate filepaths and folders rawimagepath_macrophages = os.path.join(self.rawdatafolder, i_time, self.region, vis_param['imagename_macrophage']) rawimagepath_cancer = os.path.join(self.rawdatafolder, i_time, self.region, vis_param['imagename_cancer']) rawimagepath_vasculature = os.path.join(self.rawdatafolder, i_time, self.region, vis_param['imagename_vasculature']) print(rawimagepath_macrophages) visualization_folder1 = os.path.join(self.visualizedfolder, self.region, "angle_1a") visualization_folder2 = os.path.join(self.visualizedfolder, self.region, "angle_2a") try: os.makedirs(visualization_folder1) except OSError as error: pass try: os.makedirs(visualization_folder2) except OSError as error: pass visualized_file = os.path.join(visualization_folder1, i_time + ".tif") visualized_file2 = os.path.join(visualization_folder2, i_time + ".tif") #open images macrophage_image = imread(rawimagepath_macrophages) cancer_image= imread(rawimagepath_cancer) vasculature_image= imread(rawimagepath_vasculature) vasculargamma = vis_param['raw_gamma_vasculature'] - 0.07/50*iter_vascular iter_vascular = iter_vascular +1 #add images as layers cancer_layer = self.viewer.add_image(cancer_image, gamma=vis_param['raw_gamma_cancer'], opacity=vis_param['opacity_cancer'], contrast_limits=vis_param['raw_contrast_limits_cancer'], colormap=vis_param['cancer_colormap'], blending='translucent_no_depth') vasculature_layer = self.viewer.add_image(vasculature_image, gamma=vis_param['raw_gamma_vasculature'], opacity=vis_param['opacity_vasculature'], contrast_limits=vis_param['raw_contrast_limits_vasculature'], colormap=vis_param['vasculature_colormap'], blending='additive') macrophage_layer = self.viewer.add_image(macrophage_image, gamma=vis_param['raw_gamma_macrophages'], opacity=vis_param['opacity_macrophage'], contrast_limits=vis_param['raw_contrast_limits_macrophages'], colormap=vis_param['macrophage_colormap'], blending='additive') #set rendering to 3D and set camera zoom parameters self.viewer.dims.ndisplay = vis_param['rendering_dimension'] self.viewer.camera.zoom = vis_param['camera_zoom'] #rescale 3D data to be correct dimensions self.viewer.layers['macrophage_image'].scale = vis_param['raw_rescale_factor'] self.viewer.layers['cancer_image'].scale = vis_param['raw_rescale_factor'] self.viewer.layers['vasculature_image'].scale = vis_param['raw_rescale_factor'] #interpolation to cubic self.viewer.layers['macrophage_image'].interpolation3d ='cubic' self.viewer.layers['cancer_image'].interpolation3d ='cubic' self.viewer.layers['vasculature_image'].interpolation3d ='cubic' #self.viewer.layers['label_image_rescaled'].scale = vis_param['label_rescale_factor'] #save a first camera position self.viewer.camera.angles = vis_param['camera_angle1'] imagereturn = self.viewer.screenshot(canvas_only=True, scale=vis_param['scale_to_save']) imwrite(visualized_file, imagereturn) #save without vasculature #get angle from napari by entering: viewer.camera.angles in console self.viewer.camera.angles = vis_param['camera_angle2'] #self.viewer.layers.remove('cancer_image') imagereturn2 = self.viewer.screenshot(canvas_only=True, scale=vis_param['scale_to_save']) imwrite(visualized_file2, imagereturn2) #if you establish the parameters, run napari, otherwise delete the layers for next timepoint if self.establish_param == 1: napari.run() else: with napari.gui_qt() as app: viewer = self.viewer time_in_msc = 1000 QTimer.singleShot(time_in_msc, app.quit) self.viewer.close()
# self.viewer.layers.remove('macrophage_image') # self.viewer.layers.remove('cancer_image') # self.viewer.layers.remove('vasculature_image') if __name__ == '__main__': visualization_param = dict( camera_angle1=(175.91550321834603, -30.46543415587574, 107.30480864818219), camera_angle2=(3.821579590379483, -21.150275706301922, -98.1205019728386), camera_zoom=0.27, #raw_contrast_limits=(126,482), raw_contrast_limits_macrophages=(105, 167), raw_contrast_limits_cancer=(102, 1529), raw_contrast_limits_vasculature=(114, 1540), #raw_gamma=0.67, raw_gamma_macrophages=0.45, raw_gamma_cancer=0.59, raw_gamma_vasculature=0.56, macrophage_colormap ='magenta', cancer_colormap='green', vasculature_colormap='cyan', opacity_cancer=1, opacity_macrophage=0.24, opacity_vasculature=0.66, opacity_label=1, rendering_dimension=3, label_blending='additive', # raw_rescale_factor =[9.210526, 1, 1], # label_rescale_factor = [9.210526, 1, 1], raw_rescale_factor =[3.418, 1, 1], label_rescale_factor =[3.418, 1, 1], #raw_rescale_factor=[1, 1, 1], #label_rescale_factor=[1, 1, 1], establish_param=0, set_label_colormap='default', scale_to_save=5, display_rawcancersignal=0, imagename_macrophage="1_CH488_000000.tif", imagename_vasculature="1_CH594_000000.tif", imagename_cancer="1_CH552_000000.tif" ) visualization_param = dict( camera_angle1=(175.91550321834603, -30.46543415587574, 107.30480864818219), camera_angle2=(3.821579590379483, -21.150275706301922, -98.1205019728386), camera_zoom=0.27, # raw_contrast_limits=(126,482), raw_contrast_limits_macrophages=(105, 167), raw_contrast_limits_cancer=(284, 2930), raw_contrast_limits_vasculature=(114, 1540), # raw_gamma=0.67, raw_gamma_macrophages=0.69, raw_gamma_cancer=0.86, raw_gamma_vasculature=0.55, macrophage_colormap='magenta', cancer_colormap='green', vasculature_colormap='cyan', opacity_cancer=1, opacity_macrophage=0.34, opacity_vasculature=0.82, opacity_label=1, rendering_dimension=3, label_blending='additive', # raw_rescale_factor =[9.210526, 1, 1], # label_rescale_factor = [9.210526, 1, 1], raw_rescale_factor=[3.418, 1, 1], label_rescale_factor=[3.418, 1, 1], # raw_rescale_factor=[1, 1, 1], # label_rescale_factor=[1, 1, 1], establish_param=0, set_label_colormap='default', scale_to_save=5, display_rawcancersignal=0, imagename_macrophage="1_CH488_000000.tif", imagename_vasculature="1_CH594_000000.tif", imagename_cancer="1_CH552_000000.tif" ) imagevisu = image_visualizer() imagevisu.rawdatafolder = "/archive/bioinformatics/Danuser_lab/Fiolka/LabMembers/Stephan/multiscale_data/xenograft_experiments/U2OS_WT/20220729_Daetwyler_U2OS/Experiment0001" experimentfolder_result = imagevisu.rawdatafolder + "_highres_visualized" imagevisu.segmentationfolder = os.path.join(experimentfolder_result, 'high_stack_002') imagevisu.visualizedfolder = os.path.join(experimentfolder_result, 'visualized_bright9') imagevisu.region = 'high_stack_002' imagevisu.establish_param = 0 imagevisu.load_images(visualization_param) # #adapt image # pathfile = os.path.join(experimentfolder_result, "visualized_bright4", "angle_1a.tif") # finalimage = imread(pathfile) # # # make boundingbox and bound image # binarybox = np.zeros(finalimage.shape) # binarybox[:, 812:2151, 348:3076,:] = 1 # # pathfile_save = os.path.join(experimentfolder_result, "binarybox.tif") # imwrite(pathfile_save, np.uint8(binarybox)) # # # # finalimage[np.logical_and(finalimage==0, np.logical_not(binarybox))]=202 # # print("test") # # # # selectedimage = finalimage + binarybox # # anotherstack_indices = np.where(selectedimage == 0) # anotherstack_indices2 = np.where(finalimage == 0) # # finalimage[anotherstack_indices] = 202 # # print("start file writing") # pathfile_save = os.path.join(experimentfolder_result, "angle_1aV2.tif") # imwrite(pathfile_save, np.uint8(finalimage))