fmi-faim / napari-psf-analysis

A napari plugin to analysis point spread functions.
https://fmi-faim.github.io/napari-psf-analysis/
BSD 3-Clause "New" or "Revised" License
8 stars 3 forks source link

object not subscriptable #43

Closed Lplantard closed 1 year ago

Lplantard commented 1 year ago

Napari gives an error message and does not analyse the files.


TypeError Traceback (most recent call last) File ~\Anaconda3\envs\PSF-analysis\lib\site-packages\superqt\utils_qthreading.py:617, in create_worker..reraise(e=TypeError("'NoneType' object is not subscriptable")) 616 def reraise(e): --> 617 raise e e = TypeError("'NoneType' object is not subscriptable")

File ~\Anaconda3\envs\PSF-analysis\lib\site-packages\superqt\utils_qthreading.py:178, in WorkerBase.run(self=) 176 warnings.filterwarnings("always") 177 warnings.showwarning = lambda *w: self.warned.emit(w) --> 178 result = self.work() self = <napari._qt.qthreading.FunctionWorker object at 0x00000144842B8790> 179 if isinstance(result, Exception): 180 if isinstance(result, RuntimeError): 181 # The Worker object has likely been deleted. 182 # A deleted wrapped C/C++ object may result in a runtime 183 # error that will cause segfault if we try to do much other 184 # than simply notify the user.

File ~\Anaconda3\envs\PSF-analysis\lib\site-packages\superqt\utils_qthreading.py:358, in FunctionWorker.work(self=) 357 def work(self) -> _R: --> 358 return self._func(*self._args, **self._kwargs) self._func = <function PsfAnalysis.measure at 0x0000014483C0D280> self = <napari._qt.qthreading.FunctionWorker object at 0x00000144842B8790> self._args = (<napari_psf_analysis._dock_widget.PsfAnalysis object at 0x00000144FF9310D0>, 'Other', 100, 1.4, 100.0, 64.8, 6000.0, 2000.0, '100x_1-4_420792_ID128_damaged_1_conf488_s1.tif', <class 'numpy.ndarray'> (71, 512, 512) uint16, <class 'numpy.ndarray'> (1, 3) float64) self._kwargs = {}

File ~\Anaconda3\envs\PSF-analysis\lib\site-packages\napari_psf_analysis_dock_widget.py:490, in PsfAnalysis.measure(self=, microscope='Other', magnification=100, na=1.4, z_spacing=100.0, xy_pixelsize=64.8, psf_box_size_z=6000.0, psf_box_size_yx=2000.0, name='100x_1-4_420792_ID128_damaged_1_conf488_s1.tif', img_data=<class 'numpy.ndarray'> (71, 512, 512) uint16, point_data=<class 'numpy.ndarray'> (1, 3) float64) 487 bead_name = "{}_Bead_X{}_Y{}_Z{}".format(res["image_name"], *centroid) 488 self.bead_imgs[bead_name] = summary_fig --> 490 self.results = create_result_table(results=accumulated_results) accumulated_results = None self.results = None self = <napari_psf_analysis._dock_widget.PsfAnalysis object at 0x00000144FF9310D0> 492 if len(self.bead_imgs) > 0: 493 measurement_stack = np.stack( 494 [self.bead_imgs[k] for k in self.bead_imgs.keys()] 495 )

File ~\Anaconda3\envs\PSF-analysis\lib\site-packages\napari_psf_analysis\psf_analysis\psf_analysis.py:1004, in create_result_table(results=None) 989 def create_result_table(results: dict) -> pd.DataFrame: 990 """Create result table from dict. 991 992 Parameters (...) 1000 Result table with "nice" column names 1001 """ 1002 return pd.DataFrame( 1003 { -> 1004 "ImageName": results["image_name"], pd = <module 'pandas' from 'C:\Users\planlaur\Anaconda3\envs\PSF-analysis\lib\site-packages\pandas\init.py'> results = None np = <module 'numpy' from 'C:\Users\planlaur\Anaconda3\envs\PSF-analysis\lib\site-packages\numpy\init.py'> 1005 "Date": results["date"], 1006 "Microscope": results["microscope"], 1007 "Magnification": results["mag"], 1008 "NA": results["NA"], 1009 "Amplitude_1D_Z": results["z_amp"], 1010 "Amplitude_2D_XY": results["yx_amp"], 1011 "Amplitude_3D_XYZ": results["zyx_amp"], 1012 "Background_1D_Z": results["z_bg"], 1013 "Background_2D_XY": results["yx_bg"], 1014 "Background_3D_XYZ": results["zyx_bg"], 1015 "Z_1D": results["z_mu"], 1016 "X_2D": results["x_mu"], 1017 "Y_2D": results["y_mu"], 1018 "X_3D": results["zyx_x_mu"], 1019 "Y_3D": results["zyx_y_mu"], 1020 "Z_3D": results["zyx_z_mu"], 1021 "FWHM_1D_Z": results["z_fwhm"], 1022 "FWHM_2D_X": results["x_fwhm"], 1023 "FWHM_2D_Y": results["y_fwhm"], 1024 "FWHM_3D_Z": results["zyx_z_fwhm"], 1025 "FWHM_3D_Y": results["zyx_y_fwhm"], 1026 "FWHM_3D_X": results["zyx_x_fwhm"], 1027 "FWHM_PA1_2D": results["yx_pc1_fwhm"], 1028 "FWHM_PA2_2D": results["yx_pc2_fwhm"], 1029 "FWHM_PA1_3D": results["zyx_pc1_fwhm"], 1030 "FWHM_PA2_3D": results["zyx_pc2_fwhm"], 1031 "FWHM_PA3_3D": results["zyx_pc3_fwhm"], 1032 "SignalToBG_1D_Z": ( 1033 np.array(results["z_amp"]) / np.array(results["z_bg"]) 1034 ).tolist(), 1035 "SignalToBG_2D_XY": ( 1036 np.array(results["yx_amp"]) / np.array(results["yx_bg"]) 1037 ).tolist(), 1038 "SignalToBG_3D_XYZ": ( 1039 np.array(results["zyx_amp"]) / np.array(results["zyx_bg"]) 1040 ).tolist(), 1041 "XYpixelsize": results["yx_spacing"], 1042 "Zspacing": results["z_spacing"], 1043 "cov_xx_3D": results["zyx_cxx"], 1044 "cov_xy_3D": results["zyx_cyx"], 1045 "cov_xz_3D": results["zyx_czx"], 1046 "cov_yy_3D": results["zyx_cyy"], 1047 "cov_yz_3D": results["zyx_czy"], 1048 "cov_zz_3D": results["zyx_czz"], 1049 "cov_xx_2D": results["yx_cxx"], 1050 "cov_xy_2D": results["yx_cyx"], 1051 "cov_yy_2D": results["yx_cyy"], 1052 "sde_amp_1D_Z": results["z_amp_sde"], 1053 "sde_amp_2D_XY": results["yx_amp_sde"], 1054 "sde_amp_3D_XYZ": results["zyx_amp_sde"], 1055 "sde_background_1D_Z": results["z_bg_sde"], 1056 "sde_background_2D_XY": results["yx_bg_sde"], 1057 "sde_background_3D_XYZ": results["zyx_bg_sde"], 1058 "sde_Z_1D": results["z_mu_sde"], 1059 "sde_X_2D": results["x_mu_sde"], 1060 "sde_Y_2D": results["y_mu_sde"], 1061 "sde_X_3D": results["zyx_x_mu_sde"], 1062 "sde_Y_3D": results["zyx_y_mu_sde"], 1063 "sde_Z_3D": results["zyx_z_mu_sde"], 1064 "sde_cov_xx_3D": results["zyx_cxx_sde"], 1065 "sde_cov_xy_3D": results["zyx_cyx_sde"], 1066 "sde_cov_xz_3D": results["zyx_czx_sde"], 1067 "sde_cov_yy_3D": results["zyx_cyy_sde"], 1068 "sde_cov_yz_3D": results["zyx_czx_sde"], 1069 "sde_cov_zz_3D": results["zyx_czz_sde"], 1070 "sde_cov_xx_2D": results["yx_cxx_sde"], 1071 "sde_cov_xy_2D": results["yx_cyx_sde"], 1072 "sde_cov_yy_2D": results["yx_cyy_sde"], 1073 "version": results["version"], 1074 } 1075 )

TypeError: 'NoneType' object is not subscriptable