33import argparse
44import numpy as np
55import pandas as pd
6- import cupy as cp
7- from cucim .skimage .measure import regionprops
6+ try :
7+ import cupy as cp
8+ from cucim .skimage .measure import regionprops
9+ GPU_AVAILABLE = cp .cuda .is_available ()
10+ except ImportError :
11+ import numpy as cp
12+ from skimage .measure import regionprops
13+ GPU_AVAILABLE = False
814from skimage .io import imread
915from tqdm import tqdm
1016
@@ -97,7 +103,7 @@ def get_regionprops(label_img, intensity_img, file_path, label_id,channels, ROI_
97103 pass
98104 df .loc [i , f'{ channels [1 ]} label id' ] = int (prop .label )
99105 try :
100- df .loc [i , f'{ channels [1 ]} Size' ] = prop .area . get ( ) # area = pixel/voxel count (2D/3D)
106+ df .loc [i , f'{ channels [1 ]} Size' ] = float ( prop .area ) # area = pixel/voxel count (2D/3D)
101107 except ValueError :
102108 print (f"Skipping size for region { prop .label } due to numerical error." )
103109 df .loc [i , f'{ channels [1 ]} Size' ] = np .nan
@@ -122,22 +128,22 @@ def get_regionprops(label_img, intensity_img, file_path, label_id,channels, ROI_
122128 print (f"Skipping minor axis length for region { prop .label } due to numerical error." )
123129 df .loc [i , f'{ channels [1 ]} MinorAxisLength' ] = np .nan
124130 try :
125- df .loc [i , f'{ channels [1 ]} MeanIntensity' ] = prop .intensity_mean . get ( )
131+ df .loc [i , f'{ channels [1 ]} MeanIntensity' ] = float ( prop .intensity_mean )
126132 except ValueError :
127133 print (f"Skipping mean intensity for region { prop .label } due to numerical error." )
128134 df .loc [i , f'{ channels [1 ]} MeanIntensity' ] = np .nan
129135 try :
130- df .loc [i , f'{ channels [1 ]} MedianIntensity' ] = prop .median_intensity . get ( )
136+ df .loc [i , f'{ channels [1 ]} MedianIntensity' ] = float ( prop .median_intensity )
131137 except ValueError :
132138 print (f"Skipping median intensity for region { prop .label } due to numerical error." )
133139 df .loc [i , f'{ channels [1 ]} MedianIntensity' ] = np .nan
134140 try :
135- df .loc [i , f'{ channels [1 ]} MaxIntensity' ] = prop .intensity_max . get ( )
141+ df .loc [i , f'{ channels [1 ]} MaxIntensity' ] = float ( prop .intensity_max )
136142 except ValueError :
137143 print (f"Skipping max intensity for region { prop .label } due to numerical error." )
138144 df .loc [i , f'{ channels [1 ]} MaxIntensity' ] = np .nan
139145 try :
140- df .loc [i , f'{ channels [1 ]} StdIntensity' ] = prop .std_intensity . get ( )
146+ df .loc [i , f'{ channels [1 ]} StdIntensity' ] = float ( prop .std_intensity )
141147 except ValueError :
142148 print (f"Skipping std intensity for region { prop .label } due to numerical error." )
143149 df .loc [i , f'{ channels [1 ]} StdIntensity' ] = np .nan
@@ -174,15 +180,15 @@ def get_intensity_only_regionprops(ROI_mask, intensity_img, file_path, label_id,
174180 df .loc [0 , f'{ channels [0 ]} label id' ] = label_id
175181 if ROI_size .lower () == 'y' :
176182 # Calculate ROI size in pixels/voxels (works for both 2D and 3D)
177- roi_size = int (cp .sum (ROI_mask_gpu > 0 ). get () )
183+ roi_size = int (cp .sum (ROI_mask_gpu > 0 ))
178184 df .loc [0 , f'{ channels [0 ]} Size' ] = roi_size
179185
180186 # Intensity measurements
181- df .loc [0 , f'{ channels [1 ]} MeanIntensity' ] = float (cp .mean (intensity_values ). get () )
182- df .loc [0 , f'{ channels [1 ]} MedianIntensity' ] = float (cp .median (intensity_values ). get () )
183- df .loc [0 , f'{ channels [1 ]} StdIntensity' ] = float (cp .std (intensity_values ). get () )
184- df .loc [0 , f'{ channels [1 ]} MaxIntensity' ] = float (cp .max (intensity_values ). get () )
185- df .loc [0 , f'{ channels [1 ]} MinIntensity' ] = float (cp .min (intensity_values ). get () )
187+ df .loc [0 , f'{ channels [1 ]} MeanIntensity' ] = float (cp .mean (intensity_values ))
188+ df .loc [0 , f'{ channels [1 ]} MedianIntensity' ] = float (cp .median (intensity_values ))
189+ df .loc [0 , f'{ channels [1 ]} StdIntensity' ] = float (cp .std (intensity_values ))
190+ df .loc [0 , f'{ channels [1 ]} MaxIntensity' ] = float (cp .max (intensity_values ))
191+ df .loc [0 , f'{ channels [1 ]} MinIntensity' ] = float (cp .min (intensity_values ))
186192
187193 return df
188194
0 commit comments