|
a |
|
b/3ClassifyNodulesLIDC.ipynb |
|
|
1 |
{ |
|
|
2 |
"cells": [ |
|
|
3 |
{ |
|
|
4 |
"cell_type": "markdown", |
|
|
5 |
"metadata": {}, |
|
|
6 |
"source": [ |
|
|
7 |
"# 3. Classify Detected Nodules in LIDC Dataset as FP or TP\n", |
|
|
8 |
"\n", |
|
|
9 |
"## Summary\n", |
|
|
10 |
"\n", |
|
|
11 |
"* Load processed data into trained u-net to generate predicted nodule masks\n", |
|
|
12 |
"* Use nodule coordinates file (list3_2.csv) to label detected nodules as TP or FP\n", |
|
|
13 |
"* Load images for each respective detected nodule and train a CNN with the TP or FP labels" |
|
|
14 |
] |
|
|
15 |
}, |
|
|
16 |
{ |
|
|
17 |
"cell_type": "code", |
|
|
18 |
"execution_count": 6, |
|
|
19 |
"metadata": {}, |
|
|
20 |
"outputs": [ |
|
|
21 |
{ |
|
|
22 |
"name": "stderr", |
|
|
23 |
"output_type": "stream", |
|
|
24 |
"text": [ |
|
|
25 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:73: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
26 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:75: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
27 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:78: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(64, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
28 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:80: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(64, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
29 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:83: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(128, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
30 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:85: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(128, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
31 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:88: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(256, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
32 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:90: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(256, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
33 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:93: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(512, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
34 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:95: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(512, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
35 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:97: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n", |
|
|
36 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\keras\\legacy\\layers.py:458: UserWarning: The `Merge` layer is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n", |
|
|
37 |
" name=name)\n", |
|
|
38 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:99: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(256, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
39 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:100: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(256, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
40 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:102: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n", |
|
|
41 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:104: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(128, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
42 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:105: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(128, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
43 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:107: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n", |
|
|
44 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:109: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(64, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
45 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:110: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(64, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
46 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:112: UserWarning: The `merge` function is deprecated and will be removed after 08/2017. Use instead layers from `keras.layers.merge`, e.g. `add`, `concatenate`, etc.\n", |
|
|
47 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:114: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
48 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:115: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), padding=\"same\", activation=\"relu\")`\n", |
|
|
49 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:116: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(1, (1, 1), activation=\"sigmoid\")`\n", |
|
|
50 |
"c:\\programdata\\anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel_launcher.py:118: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=Tensor(\"in..., outputs=Tensor(\"co...)`\n" |
|
|
51 |
] |
|
|
52 |
} |
|
|
53 |
], |
|
|
54 |
"source": [ |
|
|
55 |
"#EDIT HERE##############################\n", |
|
|
56 |
"\n", |
|
|
57 |
"list32file=\"LIDC/list3.2.csv\"\n", |
|
|
58 |
"metafile=\"LIDC/LIDC-IDRI_MetaData.csv\"\n", |
|
|
59 |
"unetweightspath=\"modelweights/unet-weights-improvement.hdf5\"\n", |
|
|
60 |
"truenoduleweightspath=\"modelweights/truenodule-cnn-weights-improvement.hdf5\"\n", |
|
|
61 |
"datafolder=\"processeddata\"\n", |
|
|
62 |
"DOIpath='LIDC/DOI/'\n", |
|
|
63 |
"########################################\n", |
|
|
64 |
"\n", |
|
|
65 |
"\n", |
|
|
66 |
"import numpy as np # linear algebra\n", |
|
|
67 |
"import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n", |
|
|
68 |
"import matplotlib.pyplot as plt\n", |
|
|
69 |
"import dicom\n", |
|
|
70 |
"import os\n", |
|
|
71 |
"import scipy.ndimage\n", |
|
|
72 |
"import time\n", |
|
|
73 |
"from keras.callbacks import ModelCheckpoint\n", |
|
|
74 |
"import h5py\n", |
|
|
75 |
"from sklearn.cluster import KMeans\n", |
|
|
76 |
"from skimage import measure, morphology\n", |
|
|
77 |
"from mpl_toolkits.mplot3d.art3d import Poly3DCollection\n", |
|
|
78 |
"import cell_magic_wand as cmw\n", |
|
|
79 |
"from glob import glob\n", |
|
|
80 |
"import random\n", |
|
|
81 |
"from sklearn.model_selection import train_test_split\n", |
|
|
82 |
"import keras\n", |
|
|
83 |
"from keras.models import Sequential,load_model,Model\n", |
|
|
84 |
"from keras.layers import Dense, Dropout, Activation, Flatten\n", |
|
|
85 |
"from keras.layers import Conv2D, MaxPooling2D, SpatialDropout2D\n", |
|
|
86 |
"from keras.layers import Input, merge, UpSampling2D, BatchNormalization\n", |
|
|
87 |
"from keras.optimizers import Adam\n", |
|
|
88 |
"from keras.callbacks import EarlyStopping, ModelCheckpoint\n", |
|
|
89 |
"from keras import backend as K\n", |
|
|
90 |
"from keras.utils import to_categorical\n", |
|
|
91 |
"from keras.datasets import mnist\n", |
|
|
92 |
"from keras.models import Sequential\n", |
|
|
93 |
"from keras import backend as K\n", |
|
|
94 |
"from keras.optimizers import Adam\n", |
|
|
95 |
"K.set_image_dim_ordering('th') \n", |
|
|
96 |
"nodulelocations=pd.read_csv(list32file)\n", |
|
|
97 |
"meta=pd.read_csv(metafile)\n", |
|
|
98 |
"\n", |
|
|
99 |
"meta=meta.drop(meta[meta['Modality']!='CT'].index)\n", |
|
|
100 |
"meta=meta.reset_index()\n", |
|
|
101 |
"\n", |
|
|
102 |
"#Get folder names of CT data for each patient\n", |
|
|
103 |
"patients=[DOIpath+meta['Patient Id'][i] for i in range(len(meta))]\n", |
|
|
104 |
"datfolder=[]\n", |
|
|
105 |
"for i in range(0,len(meta)-1):\n", |
|
|
106 |
" for path in os.listdir(patients[i]):\n", |
|
|
107 |
" if os.path.exists(patients[i]+'/'+path+'/'+meta['Series UID'][i]):\n", |
|
|
108 |
" datfolder.append(patients[i]+'/'+path+'/'+meta['Series UID'][i])\n", |
|
|
109 |
"patients=datfolder\n", |
|
|
110 |
"\n", |
|
|
111 |
"#Load nodules locations\n", |
|
|
112 |
"\n", |
|
|
113 |
"#Code sourced from https://www.kaggle.com/c/data-science-bowl-2017#tutorial\n", |
|
|
114 |
"smooth = 1.0\n", |
|
|
115 |
"width = 32\n", |
|
|
116 |
"\n", |
|
|
117 |
"def dice_coef(y_true, y_pred):\n", |
|
|
118 |
" y_true_f = K.flatten(y_true)\n", |
|
|
119 |
" y_pred_f = K.flatten(y_pred)\n", |
|
|
120 |
" intersection = K.sum(y_true_f * y_pred_f)\n", |
|
|
121 |
" return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)\n", |
|
|
122 |
"def dice_coef_loss(y_true, y_pred):\n", |
|
|
123 |
" return -dice_coef(y_true, y_pred)\n", |
|
|
124 |
"\n", |
|
|
125 |
"def unet_model():\n", |
|
|
126 |
" inputs = Input((1, 512, 512))\n", |
|
|
127 |
" conv1 = Conv2D(width, 3, 3, activation='relu', border_mode='same')(inputs)\n", |
|
|
128 |
" conv1 = BatchNormalization(axis = 1)(conv1)\n", |
|
|
129 |
" conv1 = Conv2D(width, 3, 3, activation='relu', border_mode='same')(conv1)\n", |
|
|
130 |
" pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)\n", |
|
|
131 |
"\n", |
|
|
132 |
" conv2 = Conv2D(width*2, 3, 3, activation='relu', border_mode='same')(pool1)\n", |
|
|
133 |
" conv2 = BatchNormalization(axis = 1)(conv2)\n", |
|
|
134 |
" conv2 = Conv2D(width*2, 3, 3, activation='relu', border_mode='same')(conv2)\n", |
|
|
135 |
" pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)\n", |
|
|
136 |
"\n", |
|
|
137 |
" conv3 = Conv2D(width*4, 3, 3, activation='relu', border_mode='same')(pool2)\n", |
|
|
138 |
" conv3 = BatchNormalization(axis = 1)(conv3)\n", |
|
|
139 |
" conv3 = Conv2D(width*4, 3, 3, activation='relu', border_mode='same')(conv3)\n", |
|
|
140 |
" pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)\n", |
|
|
141 |
"\n", |
|
|
142 |
" conv4 = Conv2D(width*8, 3, 3, activation='relu', border_mode='same')(pool3)\n", |
|
|
143 |
" conv4 = BatchNormalization(axis = 1)(conv4)\n", |
|
|
144 |
" conv4 = Conv2D(width*8, 3, 3, activation='relu', border_mode='same')(conv4)\n", |
|
|
145 |
" pool4 = MaxPooling2D(pool_size=(2, 2))(conv4)\n", |
|
|
146 |
"\n", |
|
|
147 |
" conv5 = Conv2D(width*16, 3, 3, activation='relu', border_mode='same')(pool4)\n", |
|
|
148 |
" conv5 = BatchNormalization(axis = 1)(conv5)\n", |
|
|
149 |
" conv5 = Conv2D(width*16, 3, 3, activation='relu', border_mode='same')(conv5)\n", |
|
|
150 |
"\n", |
|
|
151 |
" up6 = merge([UpSampling2D(size=(2, 2))(conv5), conv4], mode='concat', concat_axis=1)\n", |
|
|
152 |
" conv6 = SpatialDropout2D(0.35)(up6)\n", |
|
|
153 |
" conv6 = Conv2D(width*8, 3, 3, activation='relu', border_mode='same')(conv6)\n", |
|
|
154 |
" conv6 = Conv2D(width*8, 3, 3, activation='relu', border_mode='same')(conv6)\n", |
|
|
155 |
"\n", |
|
|
156 |
" up7 = merge([UpSampling2D(size=(2, 2))(conv6), conv3], mode='concat', concat_axis=1)\n", |
|
|
157 |
" conv7 = SpatialDropout2D(0.35)(up7)\n", |
|
|
158 |
" conv7 = Conv2D(width*4, 3, 3, activation='relu', border_mode='same')(conv7)\n", |
|
|
159 |
" conv7 = Conv2D(width*4, 3, 3, activation='relu', border_mode='same')(conv7)\n", |
|
|
160 |
"\n", |
|
|
161 |
" up8 = merge([UpSampling2D(size=(2, 2))(conv7), conv2], mode='concat', concat_axis=1)\n", |
|
|
162 |
" conv8 = SpatialDropout2D(0.35)(up8)\n", |
|
|
163 |
" conv8 = Conv2D(width*2, 3, 3, activation='relu', border_mode='same')(conv8)\n", |
|
|
164 |
" conv8 = Conv2D(width*2, 3, 3, activation='relu', border_mode='same')(conv8)\n", |
|
|
165 |
"\n", |
|
|
166 |
" up9 = merge([UpSampling2D(size=(2, 2))(conv8), conv1], mode='concat', concat_axis=1)\n", |
|
|
167 |
" conv9 = SpatialDropout2D(0.35)(up9)\n", |
|
|
168 |
" conv9 = Conv2D(width, 3, 3, activation='relu', border_mode='same')(conv9)\n", |
|
|
169 |
" conv9 = Conv2D(width, 3, 3, activation='relu', border_mode='same')(conv9)\n", |
|
|
170 |
" conv10 = Conv2D(1, 1, 1, activation='sigmoid')(conv9)\n", |
|
|
171 |
"\n", |
|
|
172 |
" model = Model(input=inputs, output=conv10)\n", |
|
|
173 |
" model.compile(optimizer=Adam(lr=1e-5), loss=dice_coef_loss, metrics=[dice_coef])\n", |
|
|
174 |
" return model\n", |
|
|
175 |
"\n", |
|
|
176 |
"model=unet_model()\n", |
|
|
177 |
"model.load_weights(unetweightspath)" |
|
|
178 |
] |
|
|
179 |
}, |
|
|
180 |
{ |
|
|
181 |
"cell_type": "code", |
|
|
182 |
"execution_count": 2, |
|
|
183 |
"metadata": { |
|
|
184 |
"collapsed": true |
|
|
185 |
}, |
|
|
186 |
"outputs": [], |
|
|
187 |
"source": [ |
|
|
188 |
"# Load the scans in given folder path\n", |
|
|
189 |
"# code sourced from https://www.kaggle.com/gzuidhof/full-preprocessing-tutorial\n", |
|
|
190 |
"def load_scan(path):\n", |
|
|
191 |
" slices = [dicom.read_file(path + '/' + s, force=True) for s in os.listdir(path) if s.endswith('.dcm')]\n", |
|
|
192 |
" slices.sort(key = lambda x: float(x.ImagePositionPatient[2]), reverse=True)\n", |
|
|
193 |
" try:\n", |
|
|
194 |
" slice_thickness = np.abs(slices[0].ImagePositionPatient[2] - slices[1].ImagePositionPatient[2])\n", |
|
|
195 |
" except:\n", |
|
|
196 |
" slice_thickness = np.abs(slices[0].SliceLocation - slices[1].SliceLocation)\n", |
|
|
197 |
" \n", |
|
|
198 |
" for s in slices:\n", |
|
|
199 |
" s.SliceThickness = slice_thickness\n", |
|
|
200 |
" \n", |
|
|
201 |
" return slices\n", |
|
|
202 |
"\n", |
|
|
203 |
"#convert to ndarray\n", |
|
|
204 |
"def get_pixels_hu(slices):\n", |
|
|
205 |
" image = np.stack([s.pixel_array for s in slices])\n", |
|
|
206 |
" # Convert to int16 (from sometimes int16), \n", |
|
|
207 |
" # should be possible as values should always be low enough (<32k)\n", |
|
|
208 |
" image = image.astype(np.int16)\n", |
|
|
209 |
"\n", |
|
|
210 |
" # Set outside-of-scan pixels to 0\n", |
|
|
211 |
" # The intercept is usually -1024, so air is approximately 0\n", |
|
|
212 |
" image[image == -2000] = 0\n", |
|
|
213 |
" \n", |
|
|
214 |
" # Convert to Hounsfield units (HU)\n", |
|
|
215 |
" for slice_number in range(len(slices)):\n", |
|
|
216 |
" \n", |
|
|
217 |
" intercept = slices[slice_number].RescaleIntercept\n", |
|
|
218 |
" slope = slices[slice_number].RescaleSlope\n", |
|
|
219 |
" \n", |
|
|
220 |
" if slope != 1:\n", |
|
|
221 |
" image[slice_number] = slope * image[slice_number].astype(np.float64)\n", |
|
|
222 |
" image[slice_number] = image[slice_number].astype(np.int16)\n", |
|
|
223 |
" \n", |
|
|
224 |
" image[slice_number] += np.int16(intercept)\n", |
|
|
225 |
" \n", |
|
|
226 |
" return np.array(image, dtype=np.int16)\n", |
|
|
227 |
"\n", |
|
|
228 |
"def processimage(img):\n", |
|
|
229 |
" #function sourced from https://www.kaggle.com/c/data-science-bowl-2017#tutorial\n", |
|
|
230 |
" #Standardize the pixel values\n", |
|
|
231 |
" mean = np.mean(img)\n", |
|
|
232 |
" std = np.std(img)\n", |
|
|
233 |
" img = img-mean\n", |
|
|
234 |
" img = img/std\n", |
|
|
235 |
" #plt.hist(img.flatten(),bins=200)\n", |
|
|
236 |
" #plt.show()\n", |
|
|
237 |
" #print(thresh_img[366][280:450])\n", |
|
|
238 |
" middle = img[100:400,100:400] \n", |
|
|
239 |
" mean = np.mean(middle) \n", |
|
|
240 |
" max = np.max(img)\n", |
|
|
241 |
" min = np.min(img)\n", |
|
|
242 |
" #move the underflow bins\n", |
|
|
243 |
" img[img==max]=mean\n", |
|
|
244 |
" img[img==min]=mean\n", |
|
|
245 |
" kmeans = KMeans(n_clusters=2).fit(np.reshape(middle,[np.prod(middle.shape),1]))\n", |
|
|
246 |
" centers = sorted(kmeans.cluster_centers_.flatten())\n", |
|
|
247 |
" threshold = np.mean(centers)\n", |
|
|
248 |
" thresh_img = np.where(img<threshold,1.0,0.0) # threshold the image\n", |
|
|
249 |
" eroded = morphology.erosion(thresh_img,np.ones([4,4]))\n", |
|
|
250 |
" dilation = morphology.dilation(eroded,np.ones([10,10]))\n", |
|
|
251 |
" labels = measure.label(dilation)\n", |
|
|
252 |
" label_vals = np.unique(labels)\n", |
|
|
253 |
" #plt.imshow(labels)\n", |
|
|
254 |
" #plt.show()\n", |
|
|
255 |
" labels = measure.label(dilation)\n", |
|
|
256 |
" label_vals = np.unique(labels)\n", |
|
|
257 |
" regions = measure.regionprops(labels)\n", |
|
|
258 |
" good_labels = []\n", |
|
|
259 |
" for prop in regions:\n", |
|
|
260 |
" B = prop.bbox\n", |
|
|
261 |
" if B[2]-B[0]<475 and B[3]-B[1]<475 and B[0]>40 and B[2]<472:\n", |
|
|
262 |
" good_labels.append(prop.label)\n", |
|
|
263 |
" mask = np.ndarray([512,512],dtype=np.int8)\n", |
|
|
264 |
" mask[:] = 0\n", |
|
|
265 |
" #\n", |
|
|
266 |
" # The mask here is the mask for the lungs--not the nodes\n", |
|
|
267 |
" # After just the lungs are left, we do another large dilation\n", |
|
|
268 |
" # in order to fill in and out the lung mask \n", |
|
|
269 |
" #\n", |
|
|
270 |
" for N in good_labels:\n", |
|
|
271 |
" mask = mask + np.where(labels==N,1,0)\n", |
|
|
272 |
" mask = morphology.dilation(mask,np.ones([10,10])) # one last dilation\n", |
|
|
273 |
" return mask*img\n", |
|
|
274 |
"\n", |
|
|
275 |
"def processimagefromfile(ppix):\n", |
|
|
276 |
" processpix=np.ndarray([ppix.shape[0],512,512])\n", |
|
|
277 |
" for i in range(ppix.shape[0]):\n", |
|
|
278 |
" processpix[i]=processimage(ppix[i])\n", |
|
|
279 |
" return processpix\n", |
|
|
280 |
"\n", |
|
|
281 |
"#predict mask from images\n", |
|
|
282 |
"def predictmask(images):\n", |
|
|
283 |
" images=images.reshape(images.shape[0],1,512,512)\n", |
|
|
284 |
" num_test=images.shape[0]\n", |
|
|
285 |
" imgs_mask_test = np.ndarray([num_test,1,512,512],dtype=np.float32)\n", |
|
|
286 |
" for i in range(num_test):\n", |
|
|
287 |
" imgs_mask_test[i] = model.predict([images[i:i+1]], verbose=0)[0]\n", |
|
|
288 |
" return imgs_mask_test\n", |
|
|
289 |
"\n", |
|
|
290 |
"#find number of slices where a nodule is detected\n", |
|
|
291 |
"def getnoduleindex(imgs_mask_test):\n", |
|
|
292 |
" masksum=[np.sum(maskslice[0]) for maskslice in imgs_mask_test]\n", |
|
|
293 |
" return [i for i in range(len(masksum)) if masksum[i]>5]\n", |
|
|
294 |
"\n", |
|
|
295 |
"def nodule_coordinates(nodulelocations,meta):\n", |
|
|
296 |
" slices=nodulelocations[\"slice no.\"][nodulelocations.index[nodulelocations[\"case\"]==int(meta[\"Patient Id\"][-4:])]]\n", |
|
|
297 |
" xlocs=nodulelocations[\"x loc.\"][nodulelocations.index[nodulelocations[\"case\"]==int(meta[\"Patient Id\"][-4:])]]\n", |
|
|
298 |
" ylocs=nodulelocations[\"y loc.\"][nodulelocations.index[nodulelocations[\"case\"]==int(meta[\"Patient Id\"][-4:])]]\n", |
|
|
299 |
" nodulecoord=[]\n", |
|
|
300 |
" for i in range(len(slices)):\n", |
|
|
301 |
" nodulecoord.append([slices.values[i]-1,xlocs.values[i]-1,ylocs.values[i]-1])\n", |
|
|
302 |
" return nodulecoord\n", |
|
|
303 |
"\n", |
|
|
304 |
"#generate nodule or non-nodule labels for mask predictions\n", |
|
|
305 |
"def truenodules(noduleindex,masks,nodulecoords):\n", |
|
|
306 |
" label=[]\n", |
|
|
307 |
" for ind in noduleindex:\n", |
|
|
308 |
" for cord in nodulecoords:\n", |
|
|
309 |
" if abs(ind-cord[0])<2:\n", |
|
|
310 |
" com=scipy.ndimage.center_of_mass(masks[ind])\n", |
|
|
311 |
" if abs(com[1]-cord[2])<2 and abs(com[2]-cord[1])<2:\n", |
|
|
312 |
" label.append(True)\n", |
|
|
313 |
" else:\n", |
|
|
314 |
" label.append(False)\n", |
|
|
315 |
" return label\n", |
|
|
316 |
" \n", |
|
|
317 |
"def slicecount(start,end):\n", |
|
|
318 |
" slicecounts=[]\n", |
|
|
319 |
" for i in range(start,end):\n", |
|
|
320 |
" if len(nodule_coordinates(nodulelocations,meta.iloc[i]))>0:\n", |
|
|
321 |
" patient_scan=load_scan(patients[i])\n", |
|
|
322 |
" slicecounts.append(len(patient_scan))\n", |
|
|
323 |
" return slicecounts" |
|
|
324 |
] |
|
|
325 |
}, |
|
|
326 |
{ |
|
|
327 |
"cell_type": "code", |
|
|
328 |
"execution_count": 3, |
|
|
329 |
"metadata": { |
|
|
330 |
"scrolled": true |
|
|
331 |
}, |
|
|
332 |
"outputs": [ |
|
|
333 |
{ |
|
|
334 |
"name": "stdout", |
|
|
335 |
"output_type": "stream", |
|
|
336 |
"text": [ |
|
|
337 |
"Processing patient# 197 ETA: 13.88888888888889 hrs\n", |
|
|
338 |
"Processing patient# 198 ETA: 1.1223869024034948e-08 hrs\n", |
|
|
339 |
"Processing patient# 199 ETA: 8.375600754116487e-09 hrs\n", |
|
|
340 |
"[[77, 132, 243]]\n", |
|
|
341 |
"1751 4.335\n", |
|
|
342 |
"Name: eq. diam., dtype: float64\n", |
|
|
343 |
"Sensitivity: 0.0\n", |
|
|
344 |
"Specificity: 0.0\n", |
|
|
345 |
"Processing patient# 200 ETA: 0.0 hrs\n", |
|
|
346 |
"[[44, 187, 235]]\n", |
|
|
347 |
"1752 7.684\n", |
|
|
348 |
"Name: eq. diam., dtype: float64\n", |
|
|
349 |
"Sensitivity: 0.0\n", |
|
|
350 |
"Specificity: 0.0\n", |
|
|
351 |
"Processing patient# 201 ETA: -0.00043430759374313906 hrs\n", |
|
|
352 |
"[[56, 220, 307], [48, 381, 246], [49, 170, 194], [135, 118, 191], [46, 375, 203], [50, 189, 192], [91, 150, 172]]\n", |
|
|
353 |
"1753 8.774\n", |
|
|
354 |
"1754 4.749\n", |
|
|
355 |
"1755 3.795\n", |
|
|
356 |
"1756 6.345\n", |
|
|
357 |
"1757 5.952\n", |
|
|
358 |
"1758 14.905\n", |
|
|
359 |
"1759 5.398\n", |
|
|
360 |
"Name: eq. diam., dtype: float64\n", |
|
|
361 |
"Nodule Detected at slice# 55 with actual coord [56, 220, 307]\n", |
|
|
362 |
"Nodule Detected at slice# 56 with actual coord [56, 220, 307]\n", |
|
|
363 |
"Nodule Detected at slice# 57 with actual coord [56, 220, 307]\n", |
|
|
364 |
"Nodule Detected at slice# 134 with actual coord [135, 118, 191]\n", |
|
|
365 |
"Nodule Detected at slice# 135 with actual coord [135, 118, 191]\n", |
|
|
366 |
"Nodule Detected at slice# 136 with actual coord [135, 118, 191]\n", |
|
|
367 |
"Nodule Detected at slice# 45 with actual coord [46, 375, 203]\n", |
|
|
368 |
"Nodule Detected at slice# 46 with actual coord [46, 375, 203]\n", |
|
|
369 |
"Nodule Detected at slice# 47 with actual coord [46, 375, 203]\n", |
|
|
370 |
"Nodule Detected at slice# 49 with actual coord [50, 189, 192]\n", |
|
|
371 |
"Nodule Detected at slice# 50 with actual coord [50, 189, 192]\n", |
|
|
372 |
"Nodule Detected at slice# 51 with actual coord [50, 189, 192]\n", |
|
|
373 |
"Nodule Detected at slice# 90 with actual coord [91, 150, 172]\n", |
|
|
374 |
"Nodule Detected at slice# 91 with actual coord [91, 150, 172]\n", |
|
|
375 |
"Nodule Detected at slice# 92 with actual coord [91, 150, 172]\n", |
|
|
376 |
"Sensitivity: 0.5555555555555556\n", |
|
|
377 |
"Specificity: 0.09375\n", |
|
|
378 |
"Processing patient# 202 ETA: -0.0012672066931152888 hrs\n", |
|
|
379 |
"[[281, 85, 162]]\n", |
|
|
380 |
"1760 4.91\n", |
|
|
381 |
"Name: eq. diam., dtype: float64\n", |
|
|
382 |
"Sensitivity: 0.5\n", |
|
|
383 |
"Specificity: 0.07042253521126761\n", |
|
|
384 |
"Processing patient# 203 ETA: -0.0029408619673968574 hrs\n", |
|
|
385 |
"[[246, 139, 150], [41, 316, 311], [88, 131, 345], [319, 201, 153], [109, 127, 352]]\n", |
|
|
386 |
"1761 6.328\n", |
|
|
387 |
"1762 3.915\n", |
|
|
388 |
"1763 3.396\n", |
|
|
389 |
"1764 6.653\n", |
|
|
390 |
"1765 3.547\n", |
|
|
391 |
"Name: eq. diam., dtype: float64\n", |
|
|
392 |
"Nodule Detected at slice# 245 with actual coord [246, 139, 150]\n", |
|
|
393 |
"Nodule Detected at slice# 246 with actual coord [246, 139, 150]\n", |
|
|
394 |
"Nodule Detected at slice# 247 with actual coord [246, 139, 150]\n", |
|
|
395 |
"Nodule Detected at slice# 318 with actual coord [319, 201, 153]\n", |
|
|
396 |
"Nodule Detected at slice# 319 with actual coord [319, 201, 153]\n", |
|
|
397 |
"Nodule Detected at slice# 320 with actual coord [319, 201, 153]\n", |
|
|
398 |
"Sensitivity: 0.4666666666666667\n", |
|
|
399 |
"Specificity: 0.07777777777777778\n", |
|
|
400 |
"Processing patient# 204 ETA: -0.005424329860537682 hrs\n", |
|
|
401 |
"[[253, 307, 392], [192, 181, 383], [210, 300, 385], [243, 470, 298], [96, 115, 198]]\n", |
|
|
402 |
"1766 4.072\n", |
|
|
403 |
"1767 5.395\n", |
|
|
404 |
"1768 4.111\n", |
|
|
405 |
"1769 3.864\n", |
|
|
406 |
"1770 5.376\n", |
|
|
407 |
"Name: eq. diam., dtype: float64\n", |
|
|
408 |
"Nodule Detected at slice# 191 with actual coord [192, 181, 383]\n", |
|
|
409 |
"Nodule Detected at slice# 192 with actual coord [192, 181, 383]\n", |
|
|
410 |
"Nodule Detected at slice# 193 with actual coord [192, 181, 383]\n", |
|
|
411 |
"Nodule Detected at slice# 95 with actual coord [96, 115, 198]\n", |
|
|
412 |
"Nodule Detected at slice# 96 with actual coord [96, 115, 198]\n", |
|
|
413 |
"Nodule Detected at slice# 97 with actual coord [96, 115, 198]\n", |
|
|
414 |
"Sensitivity: 0.45\n", |
|
|
415 |
"Specificity: 0.06870229007633588\n", |
|
|
416 |
"Processing patient# 205 ETA: -0.008036096493403116 hrs\n", |
|
|
417 |
"[[80, 164, 191]]\n", |
|
|
418 |
"1771 4.96\n", |
|
|
419 |
"Name: eq. diam., dtype: float64\n", |
|
|
420 |
"Sensitivity: 0.42857142857142855\n", |
|
|
421 |
"Specificity: 0.06537530266343826\n", |
|
|
422 |
"Processing patient# 206 ETA: -0.010317782699868935 hrs\n", |
|
|
423 |
"[[278, 426, 316]]\n", |
|
|
424 |
"1772 5.579\n", |
|
|
425 |
"Name: eq. diam., dtype: float64\n", |
|
|
426 |
"Nodule Detected at slice# 277 with actual coord [278, 426, 316]\n", |
|
|
427 |
"Nodule Detected at slice# 278 with actual coord [278, 426, 316]\n", |
|
|
428 |
"Nodule Detected at slice# 279 with actual coord [278, 426, 316]\n", |
|
|
429 |
"Sensitivity: 0.45454545454545453\n", |
|
|
430 |
"Specificity: 0.06593406593406594\n", |
|
|
431 |
"Processing patient# 207 ETA: -0.014129864809913658 hrs\n", |
|
|
432 |
"[[29, 356, 205], [14, 119, 289]]\n", |
|
|
433 |
"1773 3.940\n", |
|
|
434 |
"1774 4.346\n", |
|
|
435 |
"Name: eq. diam., dtype: float64\n", |
|
|
436 |
"Sensitivity: 0.4166666666666667\n", |
|
|
437 |
"Specificity: 0.06369426751592357\n", |
|
|
438 |
"Processing patient# 208 ETA: -0.016790137690866104 hrs\n", |
|
|
439 |
"[[57, 124, 272]]\n", |
|
|
440 |
"1775 8.724\n", |
|
|
441 |
"Name: eq. diam., dtype: float64\n", |
|
|
442 |
"Nodule Detected at slice# 56 with actual coord [57, 124, 272]\n", |
|
|
443 |
"Nodule Detected at slice# 57 with actual coord [57, 124, 272]\n", |
|
|
444 |
"Nodule Detected at slice# 58 with actual coord [57, 124, 272]\n", |
|
|
445 |
"Sensitivity: 0.44\n", |
|
|
446 |
"Specificity: 0.06666666666666667\n", |
|
|
447 |
"Processing patient# 209 ETA: -0.01980438633398579 hrs\n", |
|
|
448 |
"Processing patient# 210 ETA: -0.021900115047813088 hrs\n", |
|
|
449 |
"[[32, 157, 161], [46, 175, 381]]\n", |
|
|
450 |
"1776 5.381\n", |
|
|
451 |
"1777 11.452\n", |
|
|
452 |
"Name: eq. diam., dtype: float64\n", |
|
|
453 |
"Sensitivity: 0.4074074074074074\n", |
|
|
454 |
"Specificity: 0.06521739130434782\n", |
|
|
455 |
"Processing patient# 211 ETA: -0.02493481744553555 hrs\n", |
|
|
456 |
"[[181, 396, 260]]\n", |
|
|
457 |
"1778 16.014\n", |
|
|
458 |
"Name: eq. diam., dtype: float64\n", |
|
|
459 |
"Sensitivity: 0.39285714285714285\n", |
|
|
460 |
"Specificity: 0.06066176470588235\n", |
|
|
461 |
"Processing patient# 212 ETA: -0.03144206567755292 hrs\n", |
|
|
462 |
"[[119, 388, 303], [135, 356, 364], [127, 383, 316]]\n", |
|
|
463 |
"1779 11.814\n", |
|
|
464 |
"1780 8.744\n", |
|
|
465 |
"1781 7.308\n", |
|
|
466 |
"Name: eq. diam., dtype: float64\n", |
|
|
467 |
"Nodule Detected at slice# 118 with actual coord [119, 388, 303]\n", |
|
|
468 |
"Nodule Detected at slice# 119 with actual coord [119, 388, 303]\n", |
|
|
469 |
"Nodule Detected at slice# 120 with actual coord [119, 388, 303]\n", |
|
|
470 |
"Nodule Detected at slice# 134 with actual coord [135, 356, 364]\n", |
|
|
471 |
"Nodule Detected at slice# 135 with actual coord [135, 356, 364]\n", |
|
|
472 |
"Nodule Detected at slice# 136 with actual coord [135, 356, 364]\n", |
|
|
473 |
"Sensitivity: 0.41935483870967744\n", |
|
|
474 |
"Specificity: 0.06554621848739496\n", |
|
|
475 |
"Processing patient# 213 ETA: -0.03726589909150814 hrs\n", |
|
|
476 |
"Processing patient# 214 ETA: -0.03994502615334467 hrs\n", |
|
|
477 |
"[[350, 426, 351]]\n", |
|
|
478 |
"1782 4.721\n", |
|
|
479 |
"Name: eq. diam., dtype: float64\n", |
|
|
480 |
"Sensitivity: 0.40625\n", |
|
|
481 |
"Specificity: 0.060842433697347896\n", |
|
|
482 |
"Processing patient# 215 ETA: -0.04846682252809981 hrs\n", |
|
|
483 |
"Processing patient# 216 ETA: -0.051458642850687464 hrs\n", |
|
|
484 |
"[[28, 363, 267], [149, 175, 173], [42, 398, 263], [85, 97, 255], [160, 324, 326], [28, 378, 301], [84, 189, 340], [112, 385, 189], [55, 120, 325], [39, 143, 282], [139, 115, 364], [22, 168, 275], [97, 181, 189], [54, 144, 243], [43, 184, 250], [95, 378, 267], [88, 380, 242], [59, 372, 279], [104, 143, 204], [45, 173, 202], [117, 345, 203]]\n", |
|
|
485 |
"1783 3.424\n", |
|
|
486 |
"1784 3.490\n", |
|
|
487 |
"1785 6.809\n", |
|
|
488 |
"1786 9.657\n", |
|
|
489 |
"1787 7.511\n", |
|
|
490 |
"1788 3.424\n", |
|
|
491 |
"1789 4.754\n", |
|
|
492 |
"1790 6.805\n", |
|
|
493 |
"1791 5.048\n", |
|
|
494 |
"1792 6.979\n", |
|
|
495 |
"1793 6.282\n", |
|
|
496 |
"1794 8.001\n", |
|
|
497 |
"1795 3.584\n", |
|
|
498 |
"1796 4.227\n", |
|
|
499 |
"1797 7.514\n", |
|
|
500 |
"1798 6.351\n", |
|
|
501 |
"1799 6.649\n", |
|
|
502 |
"1800 10.118\n", |
|
|
503 |
"1801 6.016\n", |
|
|
504 |
"1802 6.732\n", |
|
|
505 |
"1803 5.577\n", |
|
|
506 |
"Name: eq. diam., dtype: float64\n", |
|
|
507 |
"Nodule Detected at slice# 85 with actual coord [85, 97, 255]\n", |
|
|
508 |
"Nodule Detected at slice# 86 with actual coord [85, 97, 255]\n", |
|
|
509 |
"Nodule Detected at slice# 160 with actual coord [160, 324, 326]\n", |
|
|
510 |
"Nodule Detected at slice# 161 with actual coord [160, 324, 326]\n", |
|
|
511 |
"Nodule Detected at slice# 138 with actual coord [139, 115, 364]\n", |
|
|
512 |
"Nodule Detected at slice# 139 with actual coord [139, 115, 364]\n", |
|
|
513 |
"Nodule Detected at slice# 140 with actual coord [139, 115, 364]\n", |
|
|
514 |
"Nodule Detected at slice# 103 with actual coord [104, 143, 204]\n", |
|
|
515 |
"Nodule Detected at slice# 104 with actual coord [104, 143, 204]\n", |
|
|
516 |
"Nodule Detected at slice# 105 with actual coord [104, 143, 204]\n", |
|
|
517 |
"Nodule Detected at slice# 44 with actual coord [45, 173, 202]\n", |
|
|
518 |
"Nodule Detected at slice# 45 with actual coord [45, 173, 202]\n", |
|
|
519 |
"Nodule Detected at slice# 46 with actual coord [45, 173, 202]\n", |
|
|
520 |
"Sensitivity: 0.33962264150943394\n", |
|
|
521 |
"Specificity: 0.07547169811320754\n", |
|
|
522 |
"Processing patient# 217 ETA: -0.057393515692633755 hrs\n", |
|
|
523 |
"[[55, 165, 400], [73, 90, 290], [48, 320, 382], [52, 309, 375], [27, 316, 165], [85, 99, 357], [63, 159, 399], [77, 307, 363]]\n", |
|
|
524 |
"1804 3.614\n", |
|
|
525 |
"1805 3.841\n", |
|
|
526 |
"1806 5.326\n", |
|
|
527 |
"1807 4.183\n", |
|
|
528 |
"1808 3.994\n", |
|
|
529 |
"1809 4.437\n", |
|
|
530 |
"1810 4.477\n", |
|
|
531 |
"1811 5.725\n", |
|
|
532 |
"Name: eq. diam., dtype: float64\n", |
|
|
533 |
"Nodule Detected at slice# 77 with actual coord [77, 307, 363]\n", |
|
|
534 |
"Sensitivity: 0.3114754098360656\n", |
|
|
535 |
"Specificity: 0.07604017216642754\n", |
|
|
536 |
"Processing patient# 218 ETA: -0.062303517685023985 hrs\n", |
|
|
537 |
"[[259, 172, 189], [269, 167, 247], [281, 36, 284]]\n", |
|
|
538 |
"1812 13.978\n", |
|
|
539 |
"1813 8.797\n", |
|
|
540 |
"1814 3.630\n", |
|
|
541 |
"Name: eq. diam., dtype: float64\n", |
|
|
542 |
"Nodule Detected at slice# 258 with actual coord [259, 172, 189]\n", |
|
|
543 |
"Nodule Detected at slice# 259 with actual coord [259, 172, 189]\n", |
|
|
544 |
"Nodule Detected at slice# 260 with actual coord [259, 172, 189]\n", |
|
|
545 |
"Nodule Detected at slice# 268 with actual coord [269, 167, 247]\n", |
|
|
546 |
"Nodule Detected at slice# 269 with actual coord [269, 167, 247]\n", |
|
|
547 |
"Nodule Detected at slice# 270 with actual coord [269, 167, 247]\n" |
|
|
548 |
] |
|
|
549 |
}, |
|
|
550 |
{ |
|
|
551 |
"name": "stdout", |
|
|
552 |
"output_type": "stream", |
|
|
553 |
"text": [ |
|
|
554 |
"Sensitivity: 0.328125\n", |
|
|
555 |
"Specificity: 0.07554417413572344\n", |
|
|
556 |
"Processing patient# 219 ETA: -0.07084722954811999 hrs\n", |
|
|
557 |
"Processing patient# 220 ETA: -0.07423709965113441 hrs\n", |
|
|
558 |
"Processing patient# 221 ETA: -0.07759629722454255 hrs\n", |
|
|
559 |
"Processing patient# 222 ETA: -0.08092523676855068 hrs\n", |
|
|
560 |
"[[106, 436, 345]]\n", |
|
|
561 |
"1815 5.017\n", |
|
|
562 |
"Name: eq. diam., dtype: float64\n", |
|
|
563 |
"Nodule Detected at slice# 105 with actual coord [106, 436, 345]\n", |
|
|
564 |
"Nodule Detected at slice# 106 with actual coord [106, 436, 345]\n", |
|
|
565 |
"Sensitivity: 0.3384615384615385\n", |
|
|
566 |
"Specificity: 0.07682619647355164\n", |
|
|
567 |
"Processing patient# 223 ETA: -0.08694170671045097 hrs\n", |
|
|
568 |
"[[80, 427, 210]]\n", |
|
|
569 |
"1816 4.721\n", |
|
|
570 |
"Name: eq. diam., dtype: float64\n", |
|
|
571 |
"Sensitivity: 0.3333333333333333\n", |
|
|
572 |
"Specificity: 0.07634543178973717\n", |
|
|
573 |
"Processing patient# 224 ETA: -0.0926084516587711 hrs\n", |
|
|
574 |
"[[39, 211, 267]]\n", |
|
|
575 |
"1817 7.124\n", |
|
|
576 |
"Name: eq. diam., dtype: float64\n", |
|
|
577 |
"Sensitivity: 0.3283582089552239\n", |
|
|
578 |
"Specificity: 0.07530864197530865\n", |
|
|
579 |
"Processing patient# 225 ETA: -0.09882077568107181 hrs\n", |
|
|
580 |
"[[106, 150, 259], [51, 196, 303]]\n", |
|
|
581 |
"1818 6.787\n", |
|
|
582 |
"1819 4.547\n", |
|
|
583 |
"Name: eq. diam., dtype: float64\n", |
|
|
584 |
"Sensitivity: 0.3188405797101449\n", |
|
|
585 |
"Specificity: 0.07340553549939831\n", |
|
|
586 |
"Processing patient# 226 ETA: -0.10466439107760796 hrs\n", |
|
|
587 |
"[[112, 370, 208]]\n", |
|
|
588 |
"1820 3.587\n", |
|
|
589 |
"Name: eq. diam., dtype: float64\n", |
|
|
590 |
"Sensitivity: 0.3142857142857143\n", |
|
|
591 |
"Specificity: 0.06725468577728776\n", |
|
|
592 |
"Processing patient# 227 ETA: -0.11528374142583768 hrs\n", |
|
|
593 |
"[[37, 330, 191]]\n", |
|
|
594 |
"1821 28.0\n", |
|
|
595 |
"Name: eq. diam., dtype: float64\n", |
|
|
596 |
"Nodule Detected at slice# 36 with actual coord [37, 330, 191]\n", |
|
|
597 |
"Nodule Detected at slice# 37 with actual coord [37, 330, 191]\n", |
|
|
598 |
"Nodule Detected at slice# 38 with actual coord [37, 330, 191]\n", |
|
|
599 |
"Sensitivity: 0.323943661971831\n", |
|
|
600 |
"Specificity: 0.06823027718550106\n", |
|
|
601 |
"Processing patient# 228 ETA: -0.12483760813988208 hrs\n", |
|
|
602 |
"[[128, 149, 305], [138, 251, 277]]\n", |
|
|
603 |
"1822 15.151\n", |
|
|
604 |
"1823 10.452\n", |
|
|
605 |
"Name: eq. diam., dtype: float64\n", |
|
|
606 |
"Nodule Detected at slice# 127 with actual coord [128, 149, 305]\n", |
|
|
607 |
"Nodule Detected at slice# 128 with actual coord [128, 149, 305]\n", |
|
|
608 |
"Nodule Detected at slice# 129 with actual coord [128, 149, 305]\n", |
|
|
609 |
"Nodule Detected at slice# 137 with actual coord [138, 251, 277]\n", |
|
|
610 |
"Nodule Detected at slice# 138 with actual coord [138, 251, 277]\n", |
|
|
611 |
"Nodule Detected at slice# 139 with actual coord [138, 251, 277]\n", |
|
|
612 |
"Sensitivity: 0.3424657534246575\n", |
|
|
613 |
"Specificity: 0.06272401433691756\n", |
|
|
614 |
"Processing patient# 229 ETA: -0.13718350996009815 hrs\n", |
|
|
615 |
"[[96, 365, 149]]\n", |
|
|
616 |
"1824 5.333\n", |
|
|
617 |
"Name: eq. diam., dtype: float64\n", |
|
|
618 |
"Nodule Detected at slice# 95 with actual coord [96, 365, 149]\n", |
|
|
619 |
"Nodule Detected at slice# 96 with actual coord [96, 365, 149]\n", |
|
|
620 |
"Nodule Detected at slice# 97 with actual coord [96, 365, 149]\n", |
|
|
621 |
"Sensitivity: 0.35135135135135137\n", |
|
|
622 |
"Specificity: 0.0634231103388358\n", |
|
|
623 |
"Processing patient# 230 ETA: -0.14709678301776674 hrs\n", |
|
|
624 |
"[[213, 148, 384]]\n", |
|
|
625 |
"1825 5.994\n", |
|
|
626 |
"Name: eq. diam., dtype: float64\n", |
|
|
627 |
"Nodule Detected at slice# 212 with actual coord [213, 148, 384]\n", |
|
|
628 |
"Nodule Detected at slice# 213 with actual coord [213, 148, 384]\n", |
|
|
629 |
"Nodule Detected at slice# 214 with actual coord [213, 148, 384]\n", |
|
|
630 |
"Sensitivity: 0.36\n", |
|
|
631 |
"Specificity: 0.062193126022913256\n", |
|
|
632 |
"Processing patient# 231 ETA: -0.161781463566854 hrs\n", |
|
|
633 |
"[[14, 336, 324], [79, 290, 379], [29, 353, 260], [61, 209, 313], [121, 107, 374], [16, 350, 331]]\n", |
|
|
634 |
"1826 4.367\n", |
|
|
635 |
"1827 3.951\n", |
|
|
636 |
"1828 14.283\n", |
|
|
637 |
"1829 6.438\n", |
|
|
638 |
"1830 2.490\n", |
|
|
639 |
"1831 5.967\n", |
|
|
640 |
"Name: eq. diam., dtype: float64\n", |
|
|
641 |
"Nodule Detected at slice# 28 with actual coord [29, 353, 260]\n", |
|
|
642 |
"Nodule Detected at slice# 29 with actual coord [29, 353, 260]\n", |
|
|
643 |
"Nodule Detected at slice# 15 with actual coord [16, 350, 331]\n", |
|
|
644 |
"Nodule Detected at slice# 16 with actual coord [16, 350, 331]\n", |
|
|
645 |
"Nodule Detected at slice# 17 with actual coord [16, 350, 331]\n", |
|
|
646 |
"Sensitivity: 0.35802469135802467\n", |
|
|
647 |
"Specificity: 0.06398104265402843\n", |
|
|
648 |
"Processing patient# 232 ETA: -0.17268129442843436 hrs\n", |
|
|
649 |
"[[91, 110, 254], [179, 382, 210], [40, 286, 270], [245, 108, 331], [78, 163, 283], [86, 142, 306], [291, 350, 309], [51, 325, 235]]\n", |
|
|
650 |
"1832 5.025\n", |
|
|
651 |
"1833 4.149\n", |
|
|
652 |
"1834 5.928\n", |
|
|
653 |
"1835 14.410\n", |
|
|
654 |
"1836 5.033\n", |
|
|
655 |
"1837 24.621\n", |
|
|
656 |
"1838 6.646\n", |
|
|
657 |
"1839 3.814\n", |
|
|
658 |
"Name: eq. diam., dtype: float64\n", |
|
|
659 |
"Nodule Detected at slice# 90 with actual coord [91, 110, 254]\n", |
|
|
660 |
"Nodule Detected at slice# 91 with actual coord [91, 110, 254]\n", |
|
|
661 |
"Nodule Detected at slice# 92 with actual coord [91, 110, 254]\n", |
|
|
662 |
"Nodule Detected at slice# 244 with actual coord [245, 108, 331]\n", |
|
|
663 |
"Nodule Detected at slice# 245 with actual coord [245, 108, 331]\n", |
|
|
664 |
"Nodule Detected at slice# 246 with actual coord [245, 108, 331]\n", |
|
|
665 |
"Nodule Detected at slice# 85 with actual coord [86, 142, 306]\n", |
|
|
666 |
"Nodule Detected at slice# 86 with actual coord [86, 142, 306]\n", |
|
|
667 |
"Nodule Detected at slice# 87 with actual coord [86, 142, 306]\n", |
|
|
668 |
"Sensitivity: 0.3595505617977528\n", |
|
|
669 |
"Specificity: 0.06540697674418605\n", |
|
|
670 |
"Processing patient# 233 ETA: -0.18614303947688857 hrs\n", |
|
|
671 |
"[[132, 133, 372], [88, 369, 344], [169, 58, 317]]\n", |
|
|
672 |
"1840 21.897\n", |
|
|
673 |
"1841 4.149\n", |
|
|
674 |
"1842 6.785\n", |
|
|
675 |
"Name: eq. diam., dtype: float64\n", |
|
|
676 |
"Nodule Detected at slice# 131 with actual coord [132, 133, 372]\n", |
|
|
677 |
"Nodule Detected at slice# 132 with actual coord [132, 133, 372]\n", |
|
|
678 |
"Nodule Detected at slice# 133 with actual coord [132, 133, 372]\n", |
|
|
679 |
"Nodule Detected at slice# 168 with actual coord [169, 58, 317]\n", |
|
|
680 |
"Nodule Detected at slice# 169 with actual coord [169, 58, 317]\n", |
|
|
681 |
"Nodule Detected at slice# 170 with actual coord [169, 58, 317]\n", |
|
|
682 |
"Sensitivity: 0.3695652173913043\n", |
|
|
683 |
"Specificity: 0.06486486486486487\n", |
|
|
684 |
"Processing patient# 234 ETA: -0.19722831309577563 hrs\n", |
|
|
685 |
"[[172, 380, 269], [244, 358, 324]]\n", |
|
|
686 |
"1843 6.131\n", |
|
|
687 |
"1844 4.974\n", |
|
|
688 |
"Name: eq. diam., dtype: float64\n", |
|
|
689 |
"Sensitivity: 0.3617021276595745\n", |
|
|
690 |
"Specificity: 0.06319947333772219\n", |
|
|
691 |
"Processing patient# 235 ETA: -0.2140280986748126 hrs\n", |
|
|
692 |
"[[350, 475, 257], [234, 72, 263], [384, 440, 309]]\n", |
|
|
693 |
"1845 6.637\n", |
|
|
694 |
"1846 4.979\n", |
|
|
695 |
"1847 10.978\n", |
|
|
696 |
"Name: eq. diam., dtype: float64\n", |
|
|
697 |
"Nodule Detected at slice# 349 with actual coord [350, 475, 257]\n", |
|
|
698 |
"Nodule Detected at slice# 350 with actual coord [350, 475, 257]\n", |
|
|
699 |
"Nodule Detected at slice# 351 with actual coord [350, 475, 257]\n", |
|
|
700 |
"Nodule Detected at slice# 383 with actual coord [384, 440, 309]\n", |
|
|
701 |
"Nodule Detected at slice# 384 with actual coord [384, 440, 309]\n", |
|
|
702 |
"Nodule Detected at slice# 385 with actual coord [384, 440, 309]\n", |
|
|
703 |
"Sensitivity: 0.3711340206185567\n", |
|
|
704 |
"Specificity: 0.06386975579211021\n", |
|
|
705 |
"Processing patient# 236 ETA: -0.2297073334152416 hrs\n", |
|
|
706 |
"[[42, 127, 267]]\n", |
|
|
707 |
"1848 12.49\n", |
|
|
708 |
"Name: eq. diam., dtype: float64\n", |
|
|
709 |
"Nodule Detected at slice# 42 with actual coord [42, 127, 267]\n", |
|
|
710 |
"Nodule Detected at slice# 43 with actual coord [42, 127, 267]\n", |
|
|
711 |
"Sensitivity: 0.37755102040816324\n", |
|
|
712 |
"Specificity: 0.06463642013673089\n", |
|
|
713 |
"Processing patient# 237 ETA: -0.2382809225978061 hrs\n", |
|
|
714 |
"[[35, 183, 313], [32, 168, 249], [31, 188, 278], [46, 365, 303], [32, 178, 254], [66, 88, 347], [67, 387, 238]]\n", |
|
|
715 |
"1849 5.745\n", |
|
|
716 |
"1850 6.894\n", |
|
|
717 |
"1851 10.471\n", |
|
|
718 |
"1852 7.121\n", |
|
|
719 |
"1853 5.399\n", |
|
|
720 |
"1854 4.860\n", |
|
|
721 |
"1855 4.214\n", |
|
|
722 |
"Name: eq. diam., dtype: float64\n", |
|
|
723 |
"Nodule Detected at slice# 31 with actual coord [32, 168, 249]\n", |
|
|
724 |
"Nodule Detected at slice# 30 with actual coord [31, 188, 278]\n", |
|
|
725 |
"Nodule Detected at slice# 46 with actual coord [46, 365, 303]\n", |
|
|
726 |
"Nodule Detected at slice# 31 with actual coord [32, 178, 254]\n", |
|
|
727 |
"Sensitivity: 0.3904761904761905\n", |
|
|
728 |
"Specificity: 0.06572481572481573\n", |
|
|
729 |
"Processing patient# 238 ETA: -0.24610479066852778 hrs\n", |
|
|
730 |
"[[33, 123, 298], [45, 395, 224]]\n", |
|
|
731 |
"1856 5.051\n", |
|
|
732 |
"1857 20.840\n", |
|
|
733 |
"Name: eq. diam., dtype: float64\n", |
|
|
734 |
"Nodule Detected at slice# 33 with actual coord [33, 123, 298]\n", |
|
|
735 |
"Nodule Detected at slice# 34 with actual coord [33, 123, 298]\n", |
|
|
736 |
"Nodule Detected at slice# 44 with actual coord [45, 395, 224]\n", |
|
|
737 |
"Nodule Detected at slice# 45 with actual coord [45, 395, 224]\n", |
|
|
738 |
"Nodule Detected at slice# 46 with actual coord [45, 395, 224]\n", |
|
|
739 |
"Sensitivity: 0.40186915887850466\n", |
|
|
740 |
"Specificity: 0.06694560669456066\n", |
|
|
741 |
"Processing patient# 239 ETA: -0.25461648094188555 hrs\n", |
|
|
742 |
"[[26, 450, 295], [29, 134, 162], [17, 154, 186], [9, 186, 233], [7, 357, 271], [40, 431, 176]]\n", |
|
|
743 |
"1858 8.822\n", |
|
|
744 |
"1859 20.158\n", |
|
|
745 |
"1860 5.278\n", |
|
|
746 |
"1861 4.879\n", |
|
|
747 |
"1862 5.836\n", |
|
|
748 |
"1863 4.157\n", |
|
|
749 |
"Name: eq. diam., dtype: float64\n", |
|
|
750 |
"Nodule Detected at slice# 25 with actual coord [26, 450, 295]\n", |
|
|
751 |
"Nodule Detected at slice# 26 with actual coord [26, 450, 295]\n", |
|
|
752 |
"Nodule Detected at slice# 27 with actual coord [26, 450, 295]\n", |
|
|
753 |
"Nodule Detected at slice# 28 with actual coord [29, 134, 162]\n", |
|
|
754 |
"Nodule Detected at slice# 29 with actual coord [29, 134, 162]\n", |
|
|
755 |
"Nodule Detected at slice# 30 with actual coord [29, 134, 162]\n", |
|
|
756 |
"Nodule Detected at slice# 16 with actual coord [17, 154, 186]\n", |
|
|
757 |
"Nodule Detected at slice# 17 with actual coord [17, 154, 186]\n" |
|
|
758 |
] |
|
|
759 |
}, |
|
|
760 |
{ |
|
|
761 |
"name": "stdout", |
|
|
762 |
"output_type": "stream", |
|
|
763 |
"text": [ |
|
|
764 |
"Nodule Detected at slice# 6 with actual coord [7, 357, 271]\n", |
|
|
765 |
"Nodule Detected at slice# 7 with actual coord [7, 357, 271]\n", |
|
|
766 |
"Sensitivity: 0.415929203539823\n", |
|
|
767 |
"Specificity: 0.07072463768115941\n", |
|
|
768 |
"Processing patient# 240 ETA: -0.26243001013994216 hrs\n", |
|
|
769 |
"Processing patient# 241 ETA: -0.2678747106774603 hrs\n", |
|
|
770 |
"Processing patient# 242 ETA: -0.27327441828145815 hrs\n", |
|
|
771 |
"[[152, 452, 272], [126, 462, 244]]\n", |
|
|
772 |
"1864 7.844\n", |
|
|
773 |
"1865 5.099\n", |
|
|
774 |
"Name: eq. diam., dtype: float64\n", |
|
|
775 |
"Nodule Detected at slice# 151 with actual coord [152, 452, 272]\n", |
|
|
776 |
"Nodule Detected at slice# 152 with actual coord [152, 452, 272]\n", |
|
|
777 |
"Nodule Detected at slice# 153 with actual coord [152, 452, 272]\n", |
|
|
778 |
"Nodule Detected at slice# 126 with actual coord [126, 462, 244]\n", |
|
|
779 |
"Sensitivity: 0.4260869565217391\n", |
|
|
780 |
"Specificity: 0.07167235494880546\n", |
|
|
781 |
"Processing patient# 243 ETA: -0.28365627678769567 hrs\n", |
|
|
782 |
"[[57, 155, 175], [79, 410, 341], [55, 124, 317], [74, 90, 315], [20, 157, 383], [82, 57, 381], [58, 167, 157]]\n", |
|
|
783 |
"1866 5.817\n", |
|
|
784 |
"1867 5.940\n", |
|
|
785 |
"1868 6.173\n", |
|
|
786 |
"1869 5.216\n", |
|
|
787 |
"1870 23.636\n", |
|
|
788 |
"1871 4.597\n", |
|
|
789 |
"1872 8.153\n", |
|
|
790 |
"Name: eq. diam., dtype: float64\n", |
|
|
791 |
"Nodule Detected at slice# 56 with actual coord [57, 155, 175]\n", |
|
|
792 |
"Nodule Detected at slice# 57 with actual coord [57, 155, 175]\n", |
|
|
793 |
"Nodule Detected at slice# 79 with actual coord [79, 410, 341]\n", |
|
|
794 |
"Nodule Detected at slice# 74 with actual coord [74, 90, 315]\n", |
|
|
795 |
"Nodule Detected at slice# 19 with actual coord [20, 157, 383]\n", |
|
|
796 |
"Nodule Detected at slice# 20 with actual coord [20, 157, 383]\n", |
|
|
797 |
"Nodule Detected at slice# 21 with actual coord [20, 157, 383]\n", |
|
|
798 |
"Nodule Detected at slice# 58 with actual coord [58, 167, 157]\n", |
|
|
799 |
"Sensitivity: 0.4426229508196721\n", |
|
|
800 |
"Specificity: 0.07481853713009493\n", |
|
|
801 |
"Processing patient# 244 ETA: -0.2921640377824206 hrs\n", |
|
|
802 |
"[[95, 147, 399]]\n", |
|
|
803 |
"1873 11.987\n", |
|
|
804 |
"Name: eq. diam., dtype: float64\n", |
|
|
805 |
"Nodule Detected at slice# 94 with actual coord [95, 147, 399]\n", |
|
|
806 |
"Nodule Detected at slice# 95 with actual coord [95, 147, 399]\n", |
|
|
807 |
"Nodule Detected at slice# 96 with actual coord [95, 147, 399]\n", |
|
|
808 |
"Sensitivity: 0.44715447154471544\n", |
|
|
809 |
"Specificity: 0.07523338824821527\n", |
|
|
810 |
"Processing patient# 245 ETA: -0.30634670570188643 hrs\n", |
|
|
811 |
"[[41, 309, 334]]\n", |
|
|
812 |
"1874 16.965\n", |
|
|
813 |
"Name: eq. diam., dtype: float64\n", |
|
|
814 |
"Nodule Detected at slice# 40 with actual coord [41, 309, 334]\n", |
|
|
815 |
"Nodule Detected at slice# 41 with actual coord [41, 309, 334]\n", |
|
|
816 |
"Nodule Detected at slice# 42 with actual coord [41, 309, 334]\n", |
|
|
817 |
"Sensitivity: 0.45161290322580644\n", |
|
|
818 |
"Specificity: 0.07246376811594203\n", |
|
|
819 |
"Processing patient# 246 ETA: -0.3249079197058293 hrs\n", |
|
|
820 |
"Processing patient# 247 ETA: -0.3306272812410887 hrs\n", |
|
|
821 |
"[[206, 407, 292], [134, 248, 153], [79, 95, 255]]\n", |
|
|
822 |
"1875 6.654\n", |
|
|
823 |
"1876 2.453\n", |
|
|
824 |
"1877 2.576\n", |
|
|
825 |
"Name: eq. diam., dtype: float64\n", |
|
|
826 |
"Sensitivity: 0.4409448818897638\n", |
|
|
827 |
"Specificity: 0.07045797684952189\n", |
|
|
828 |
"Processing patient# 248 ETA: -0.3484334776350248 hrs\n", |
|
|
829 |
"Processing patient# 249 ETA: -0.35426413378083554 hrs\n", |
|
|
830 |
"[[29, 217, 370]]\n", |
|
|
831 |
"1878 11.947\n", |
|
|
832 |
"Name: eq. diam., dtype: float64\n", |
|
|
833 |
"Nodule Detected at slice# 28 with actual coord [29, 217, 370]\n", |
|
|
834 |
"Nodule Detected at slice# 29 with actual coord [29, 217, 370]\n", |
|
|
835 |
"Nodule Detected at slice# 30 with actual coord [29, 217, 370]\n", |
|
|
836 |
"Sensitivity: 0.4453125\n", |
|
|
837 |
"Specificity: 0.0715\n", |
|
|
838 |
"Processing patient# 250 ETA: -0.36293431421120964 hrs\n", |
|
|
839 |
"[[142, 400, 372], [131, 168, 245], [144, 118, 327]]\n", |
|
|
840 |
"1879 4.377\n", |
|
|
841 |
"1880 4.689\n", |
|
|
842 |
"1881 9.531\n", |
|
|
843 |
"Name: eq. diam., dtype: float64\n", |
|
|
844 |
"Nodule Detected at slice# 143 with actual coord [144, 118, 327]\n", |
|
|
845 |
"Nodule Detected at slice# 144 with actual coord [144, 118, 327]\n", |
|
|
846 |
"Nodule Detected at slice# 145 with actual coord [144, 118, 327]\n", |
|
|
847 |
"Sensitivity: 0.44274809160305345\n", |
|
|
848 |
"Specificity: 0.07070217917675545\n", |
|
|
849 |
"Processing patient# 251 ETA: -0.3774032429292066 hrs\n", |
|
|
850 |
"[[65, 85, 316], [32, 389, 266], [36, 74, 286], [43, 306, 289]]\n", |
|
|
851 |
"1882 5.032\n", |
|
|
852 |
"1883 4.637\n", |
|
|
853 |
"1884 4.315\n", |
|
|
854 |
"1885 4.920\n", |
|
|
855 |
"Name: eq. diam., dtype: float64\n", |
|
|
856 |
"Sensitivity: 0.42962962962962964\n", |
|
|
857 |
"Specificity: 0.07049734427812651\n", |
|
|
858 |
"Processing patient# 252 ETA: -0.3872358038248841 hrs\n", |
|
|
859 |
"[[373, 110, 213], [310, 424, 247], [278, 399, 266]]\n", |
|
|
860 |
"1886 8.427\n", |
|
|
861 |
"1887 6.451\n", |
|
|
862 |
"1888 7.986\n", |
|
|
863 |
"Name: eq. diam., dtype: float64\n", |
|
|
864 |
"Nodule Detected at slice# 372 with actual coord [373, 110, 213]\n", |
|
|
865 |
"Nodule Detected at slice# 373 with actual coord [373, 110, 213]\n", |
|
|
866 |
"Nodule Detected at slice# 374 with actual coord [373, 110, 213]\n", |
|
|
867 |
"Nodule Detected at slice# 309 with actual coord [310, 424, 247]\n", |
|
|
868 |
"Nodule Detected at slice# 310 with actual coord [310, 424, 247]\n", |
|
|
869 |
"Nodule Detected at slice# 311 with actual coord [310, 424, 247]\n", |
|
|
870 |
"Nodule Detected at slice# 277 with actual coord [278, 399, 266]\n", |
|
|
871 |
"Nodule Detected at slice# 278 with actual coord [278, 399, 266]\n", |
|
|
872 |
"Nodule Detected at slice# 279 with actual coord [278, 399, 266]\n", |
|
|
873 |
"Sensitivity: 0.4420289855072464\n", |
|
|
874 |
"Specificity: 0.07119889756545705\n", |
|
|
875 |
"Processing patient# 253 ETA: -0.4086072258510558 hrs\n", |
|
|
876 |
"[[169, 441, 370]]\n", |
|
|
877 |
"1889 5.802\n", |
|
|
878 |
"Name: eq. diam., dtype: float64\n", |
|
|
879 |
"Nodule Detected at slice# 168 with actual coord [169, 441, 370]\n", |
|
|
880 |
"Nodule Detected at slice# 169 with actual coord [169, 441, 370]\n", |
|
|
881 |
"Nodule Detected at slice# 170 with actual coord [169, 441, 370]\n", |
|
|
882 |
"Sensitivity: 0.4460431654676259\n", |
|
|
883 |
"Specificity: 0.07165532879818594\n", |
|
|
884 |
"Processing patient# 254 ETA: -0.42418794325956216 hrs\n", |
|
|
885 |
"[[61, 396, 213], [53, 357, 225], [45, 409, 278], [51, 348, 238]]\n", |
|
|
886 |
"1890 6.900\n", |
|
|
887 |
"1891 5.399\n", |
|
|
888 |
"1892 7.599\n", |
|
|
889 |
"1893 3.894\n", |
|
|
890 |
"Name: eq. diam., dtype: float64\n", |
|
|
891 |
"Nodule Detected at slice# 60 with actual coord [61, 396, 213]\n", |
|
|
892 |
"Nodule Detected at slice# 61 with actual coord [61, 396, 213]\n", |
|
|
893 |
"Nodule Detected at slice# 62 with actual coord [61, 396, 213]\n", |
|
|
894 |
"Nodule Detected at slice# 44 with actual coord [45, 409, 278]\n", |
|
|
895 |
"Nodule Detected at slice# 45 with actual coord [45, 409, 278]\n", |
|
|
896 |
"Nodule Detected at slice# 46 with actual coord [45, 409, 278]\n", |
|
|
897 |
"Sensitivity: 0.44755244755244755\n", |
|
|
898 |
"Specificity: 0.07337807606263982\n", |
|
|
899 |
"Processing patient# 255 ETA: -0.43417470265577573 hrs\n", |
|
|
900 |
"[[29, 298, 336]]\n", |
|
|
901 |
"1894 5.354\n", |
|
|
902 |
"Name: eq. diam., dtype: float64\n", |
|
|
903 |
"Nodule Detected at slice# 28 with actual coord [29, 298, 336]\n", |
|
|
904 |
"Nodule Detected at slice# 29 with actual coord [29, 298, 336]\n", |
|
|
905 |
"Nodule Detected at slice# 30 with actual coord [29, 298, 336]\n", |
|
|
906 |
"Sensitivity: 0.4513888888888889\n", |
|
|
907 |
"Specificity: 0.07314936487078405\n", |
|
|
908 |
"Processing patient# 256 ETA: -0.44891197837889196 hrs\n", |
|
|
909 |
"[[220, 165, 295], [262, 449, 337]]\n", |
|
|
910 |
"1895 5.924\n", |
|
|
911 |
"1896 3.627\n", |
|
|
912 |
"Name: eq. diam., dtype: float64\n", |
|
|
913 |
"Nodule Detected at slice# 219 with actual coord [220, 165, 295]\n", |
|
|
914 |
"Nodule Detected at slice# 220 with actual coord [220, 165, 295]\n", |
|
|
915 |
"Nodule Detected at slice# 221 with actual coord [220, 165, 295]\n", |
|
|
916 |
"Sensitivity: 0.4520547945205479\n", |
|
|
917 |
"Specificity: 0.07333908541846419\n", |
|
|
918 |
"Processing patient# 257 ETA: -0.46991474398611116 hrs\n", |
|
|
919 |
"[[228, 397, 145], [146, 171, 371]]\n", |
|
|
920 |
"1897 3.963\n", |
|
|
921 |
"1898 3.407\n", |
|
|
922 |
"Name: eq. diam., dtype: float64\n", |
|
|
923 |
"Sensitivity: 0.44594594594594594\n", |
|
|
924 |
"Specificity: 0.07258753202391119\n", |
|
|
925 |
"Processing patient# 258 ETA: -0.4950783620837635 hrs\n", |
|
|
926 |
"[[308, 445, 204]]\n", |
|
|
927 |
"1899 4.872\n", |
|
|
928 |
"Name: eq. diam., dtype: float64\n", |
|
|
929 |
"Sensitivity: 0.4429530201342282\n", |
|
|
930 |
"Specificity: 0.07142857142857142\n", |
|
|
931 |
"Processing patient# 259 ETA: -0.5192839302087433 hrs\n", |
|
|
932 |
"[[162, 384, 276]]\n", |
|
|
933 |
"1900 3.868\n", |
|
|
934 |
"Name: eq. diam., dtype: float64\n", |
|
|
935 |
"Sensitivity: 0.44\n", |
|
|
936 |
"Specificity: 0.07036423841059603\n", |
|
|
937 |
"Processing patient# 260 ETA: -0.5385499058472806 hrs\n", |
|
|
938 |
"[[59, 379, 358]]\n", |
|
|
939 |
"1901 4.584\n", |
|
|
940 |
"Name: eq. diam., dtype: float64\n", |
|
|
941 |
"Sensitivity: 0.4370860927152318\n", |
|
|
942 |
"Specificity: 0.06967213114754098\n", |
|
|
943 |
"Processing patient# 261 ETA: -0.5554398855555559 hrs\n", |
|
|
944 |
"Processing patient# 262 ETA: -0.5623908352690091 hrs\n", |
|
|
945 |
"[[37, 162, 308], [99, 438, 231]]\n", |
|
|
946 |
"1902 11.949\n", |
|
|
947 |
"1903 5.186\n", |
|
|
948 |
"Name: eq. diam., dtype: float64\n", |
|
|
949 |
"Nodule Detected at slice# 36 with actual coord [37, 162, 308]\n", |
|
|
950 |
"Nodule Detected at slice# 37 with actual coord [37, 162, 308]\n", |
|
|
951 |
"Nodule Detected at slice# 38 with actual coord [37, 162, 308]\n", |
|
|
952 |
"Sensitivity: 0.43790849673202614\n", |
|
|
953 |
"Specificity: 0.07006885378695828\n", |
|
|
954 |
"Processing patient# 263 ETA: -0.5751002607690063 hrs\n", |
|
|
955 |
"[[163, 75, 267], [335, 135, 344], [253, 100, 149], [312, 351, 404], [338, 471, 310], [226, 156, 170], [232, 210, 405]]\n", |
|
|
956 |
"1904 3.448\n", |
|
|
957 |
"1905 5.672\n", |
|
|
958 |
"1906 4.273\n", |
|
|
959 |
"1907 4.199\n", |
|
|
960 |
"1908 5.043\n", |
|
|
961 |
"1909 3.188\n", |
|
|
962 |
"1910 6.405\n", |
|
|
963 |
"Name: eq. diam., dtype: float64\n", |
|
|
964 |
"Nodule Detected at slice# 334 with actual coord [335, 135, 344]\n", |
|
|
965 |
"Nodule Detected at slice# 335 with actual coord [335, 135, 344]\n", |
|
|
966 |
"Nodule Detected at slice# 336 with actual coord [335, 135, 344]\n", |
|
|
967 |
"Nodule Detected at slice# 337 with actual coord [338, 471, 310]\n", |
|
|
968 |
"Nodule Detected at slice# 338 with actual coord [338, 471, 310]\n", |
|
|
969 |
"Nodule Detected at slice# 339 with actual coord [338, 471, 310]\n" |
|
|
970 |
] |
|
|
971 |
}, |
|
|
972 |
{ |
|
|
973 |
"name": "stdout", |
|
|
974 |
"output_type": "stream", |
|
|
975 |
"text": [ |
|
|
976 |
"Nodule Detected at slice# 231 with actual coord [232, 210, 405]\n", |
|
|
977 |
"Nodule Detected at slice# 232 with actual coord [232, 210, 405]\n", |
|
|
978 |
"Nodule Detected at slice# 233 with actual coord [232, 210, 405]\n", |
|
|
979 |
"Sensitivity: 0.4375\n", |
|
|
980 |
"Specificity: 0.07162534435261708\n", |
|
|
981 |
"Processing patient# 264 ETA: -0.6026041639533507 hrs\n", |
|
|
982 |
"[[321, 429, 151]]\n", |
|
|
983 |
"1911 8.894\n", |
|
|
984 |
"Name: eq. diam., dtype: float64\n", |
|
|
985 |
"Nodule Detected at slice# 320 with actual coord [321, 429, 151]\n", |
|
|
986 |
"Nodule Detected at slice# 321 with actual coord [321, 429, 151]\n", |
|
|
987 |
"Nodule Detected at slice# 322 with actual coord [321, 429, 151]\n", |
|
|
988 |
"Sensitivity: 0.4409937888198758\n", |
|
|
989 |
"Specificity: 0.07039573820395738\n", |
|
|
990 |
"Processing patient# 265 ETA: -0.6264781700302721 hrs\n", |
|
|
991 |
"[[51, 114, 331], [145, 90, 135], [49, 343, 368]]\n", |
|
|
992 |
"1912 4.010\n", |
|
|
993 |
"1913 3.234\n", |
|
|
994 |
"1914 3.756\n", |
|
|
995 |
"Name: eq. diam., dtype: float64\n", |
|
|
996 |
"Sensitivity: 0.4329268292682927\n", |
|
|
997 |
"Specificity: 0.06902985074626866\n", |
|
|
998 |
"Processing patient# 266 ETA: -0.6445316896641763 hrs\n", |
|
|
999 |
"[[129, 67, 312]]\n", |
|
|
1000 |
"1915 4.118\n", |
|
|
1001 |
"Name: eq. diam., dtype: float64\n", |
|
|
1002 |
"Sensitivity: 0.4303030303030303\n", |
|
|
1003 |
"Specificity: 0.06856931060044477\n", |
|
|
1004 |
"Processing patient# 267 ETA: -0.6622083838423539 hrs\n", |
|
|
1005 |
"Processing patient# 268 ETA: -0.6695844257223861 hrs\n", |
|
|
1006 |
"Processing patient# 269 ETA: -0.6769056312730618 hrs\n", |
|
|
1007 |
"[[280, 337, 359]]\n", |
|
|
1008 |
"1916 4.285\n", |
|
|
1009 |
"Name: eq. diam., dtype: float64\n", |
|
|
1010 |
"Sensitivity: 0.42771084337349397\n", |
|
|
1011 |
"Specificity: 0.06739526411657559\n", |
|
|
1012 |
"Processing patient# 270 ETA: -0.7057049627706347 hrs\n", |
|
|
1013 |
"[[35, 409, 203], [90, 128, 357], [44, 122, 235]]\n", |
|
|
1014 |
"1917 3.412\n", |
|
|
1015 |
"1918 7.682\n", |
|
|
1016 |
"1919 4.133\n", |
|
|
1017 |
"Name: eq. diam., dtype: float64\n", |
|
|
1018 |
"Nodule Detected at slice# 89 with actual coord [90, 128, 357]\n", |
|
|
1019 |
"Nodule Detected at slice# 90 with actual coord [90, 128, 357]\n", |
|
|
1020 |
"Nodule Detected at slice# 91 with actual coord [90, 128, 357]\n", |
|
|
1021 |
"Sensitivity: 0.4260355029585799\n", |
|
|
1022 |
"Specificity: 0.06716684530189353\n", |
|
|
1023 |
"Processing patient# 271 ETA: -0.72050155677161 hrs\n", |
|
|
1024 |
"[[98, 140, 243], [111, 393, 370], [93, 336, 318], [106, 348, 382], [126, 187, 387], [102, 174, 245], [89, 418, 237]]\n", |
|
|
1025 |
"1920 5.952\n", |
|
|
1026 |
"1921 12.418\n", |
|
|
1027 |
"1922 11.200\n", |
|
|
1028 |
"1923 6.977\n", |
|
|
1029 |
"1924 5.036\n", |
|
|
1030 |
"1925 7.364\n", |
|
|
1031 |
"1926 4.567\n", |
|
|
1032 |
"Name: eq. diam., dtype: float64\n", |
|
|
1033 |
"Nodule Detected at slice# 110 with actual coord [111, 393, 370]\n", |
|
|
1034 |
"Nodule Detected at slice# 111 with actual coord [111, 393, 370]\n", |
|
|
1035 |
"Nodule Detected at slice# 112 with actual coord [111, 393, 370]\n", |
|
|
1036 |
"Nodule Detected at slice# 105 with actual coord [106, 348, 382]\n", |
|
|
1037 |
"Nodule Detected at slice# 106 with actual coord [106, 348, 382]\n", |
|
|
1038 |
"Nodule Detected at slice# 107 with actual coord [106, 348, 382]\n", |
|
|
1039 |
"Nodule Detected at slice# 125 with actual coord [126, 187, 387]\n", |
|
|
1040 |
"Nodule Detected at slice# 126 with actual coord [126, 187, 387]\n", |
|
|
1041 |
"Nodule Detected at slice# 127 with actual coord [126, 187, 387]\n", |
|
|
1042 |
"Nodule Detected at slice# 101 with actual coord [102, 174, 245]\n", |
|
|
1043 |
"Nodule Detected at slice# 102 with actual coord [102, 174, 245]\n", |
|
|
1044 |
"Nodule Detected at slice# 103 with actual coord [102, 174, 245]\n", |
|
|
1045 |
"Sensitivity: 0.4318181818181818\n", |
|
|
1046 |
"Specificity: 0.0703977472720873\n", |
|
|
1047 |
"Processing patient# 272 ETA: -0.7400207091079039 hrs\n", |
|
|
1048 |
"[[121, 434, 296], [135, 354, 427], [50, 162, 353], [110, 407, 253], [85, 117, 279], [154, 101, 311], [153, 78, 305], [154, 80, 341], [207, 61, 329], [111, 228, 383], [131, 107, 318], [112, 88, 322], [193, 302, 421], [103, 118, 390]]\n", |
|
|
1049 |
"1927 2.755\n", |
|
|
1050 |
"1928 4.160\n", |
|
|
1051 |
"1929 7.594\n", |
|
|
1052 |
"1930 3.217\n", |
|
|
1053 |
"1931 3.290\n", |
|
|
1054 |
"1932 3.114\n", |
|
|
1055 |
"1933 7.743\n", |
|
|
1056 |
"1934 3.923\n", |
|
|
1057 |
"1935 3.242\n", |
|
|
1058 |
"1936 6.221\n", |
|
|
1059 |
"1937 3.032\n", |
|
|
1060 |
"1938 4.318\n", |
|
|
1061 |
"1939 3.060\n", |
|
|
1062 |
"1940 4.332\n", |
|
|
1063 |
"Name: eq. diam., dtype: float64\n", |
|
|
1064 |
"Nodule Detected at slice# 49 with actual coord [50, 162, 353]\n", |
|
|
1065 |
"Nodule Detected at slice# 50 with actual coord [50, 162, 353]\n", |
|
|
1066 |
"Nodule Detected at slice# 51 with actual coord [50, 162, 353]\n", |
|
|
1067 |
"Nodule Detected at slice# 152 with actual coord [153, 78, 305]\n", |
|
|
1068 |
"Nodule Detected at slice# 153 with actual coord [153, 78, 305]\n", |
|
|
1069 |
"Nodule Detected at slice# 154 with actual coord [153, 78, 305]\n", |
|
|
1070 |
"Nodule Detected at slice# 110 with actual coord [111, 228, 383]\n", |
|
|
1071 |
"Nodule Detected at slice# 111 with actual coord [111, 228, 383]\n", |
|
|
1072 |
"Nodule Detected at slice# 112 with actual coord [111, 228, 383]\n", |
|
|
1073 |
"Sensitivity: 0.41578947368421054\n", |
|
|
1074 |
"Specificity: 0.07113682777399591\n", |
|
|
1075 |
"Processing patient# 273 ETA: -0.7593161481325347 hrs\n", |
|
|
1076 |
"[[41, 188, 301], [31, 412, 301], [16, 176, 273]]\n", |
|
|
1077 |
"1941 9.821\n", |
|
|
1078 |
"1942 4.962\n", |
|
|
1079 |
"1943 6.837\n", |
|
|
1080 |
"Name: eq. diam., dtype: float64\n", |
|
|
1081 |
"Nodule Detected at slice# 40 with actual coord [41, 188, 301]\n", |
|
|
1082 |
"Nodule Detected at slice# 41 with actual coord [41, 188, 301]\n", |
|
|
1083 |
"Nodule Detected at slice# 42 with actual coord [41, 188, 301]\n", |
|
|
1084 |
"Nodule Detected at slice# 16 with actual coord [16, 176, 273]\n", |
|
|
1085 |
"Sensitivity: 0.41968911917098445\n", |
|
|
1086 |
"Specificity: 0.07174132704614349\n", |
|
|
1087 |
"Processing patient# 274 ETA: -0.7746534864586344 hrs\n", |
|
|
1088 |
"[[332, 104, 351], [100, 188, 395]]\n", |
|
|
1089 |
"1944 6.323\n", |
|
|
1090 |
"1945 4.640\n", |
|
|
1091 |
"Name: eq. diam., dtype: float64\n", |
|
|
1092 |
"Nodule Detected at slice# 331 with actual coord [332, 104, 351]\n", |
|
|
1093 |
"Nodule Detected at slice# 332 with actual coord [332, 104, 351]\n", |
|
|
1094 |
"Nodule Detected at slice# 333 with actual coord [332, 104, 351]\n", |
|
|
1095 |
"Sensitivity: 0.4205128205128205\n", |
|
|
1096 |
"Specificity: 0.07248322147651007\n", |
|
|
1097 |
"Processing patient# 275 ETA: -0.8112788267207869 hrs\n", |
|
|
1098 |
"Processing patient# 276 ETA: -0.8191174224954872 hrs\n", |
|
|
1099 |
"Processing patient# 277 ETA: -0.8268994259042908 hrs\n", |
|
|
1100 |
"[[54, 418, 175]]\n", |
|
|
1101 |
"1946 5.393\n", |
|
|
1102 |
"Name: eq. diam., dtype: float64\n", |
|
|
1103 |
"Sensitivity: 0.41836734693877553\n", |
|
|
1104 |
"Specificity: 0.07228915662650602\n", |
|
|
1105 |
"Processing patient# 278 ETA: -0.8407219234544882 hrs\n", |
|
|
1106 |
"[[104, 411, 303], [87, 98, 305], [25, 219, 260], [83, 417, 171], [81, 87, 186], [72, 116, 169], [73, 105, 154], [92, 99, 271]]\n", |
|
|
1107 |
"1947 6.309\n", |
|
|
1108 |
"1948 4.931\n", |
|
|
1109 |
"1949 5.281\n", |
|
|
1110 |
"1950 4.364\n", |
|
|
1111 |
"1951 5.831\n", |
|
|
1112 |
"1952 4.043\n", |
|
|
1113 |
"1953 4.297\n", |
|
|
1114 |
"1954 3.841\n", |
|
|
1115 |
"Name: eq. diam., dtype: float64\n", |
|
|
1116 |
"Nodule Detected at slice# 104 with actual coord [104, 411, 303]\n", |
|
|
1117 |
"Nodule Detected at slice# 105 with actual coord [104, 411, 303]\n", |
|
|
1118 |
"Nodule Detected at slice# 81 with actual coord [81, 87, 186]\n", |
|
|
1119 |
"Sensitivity: 0.4117647058823529\n", |
|
|
1120 |
"Specificity: 0.07275747508305648\n", |
|
|
1121 |
"Processing patient# 279 ETA: -0.8547288398973403 hrs\n", |
|
|
1122 |
"[[75, 398, 373], [60, 195, 294], [34, 183, 332], [58, 165, 214], [11, 212, 298], [72, 152, 148]]\n", |
|
|
1123 |
"1955 10.394\n", |
|
|
1124 |
"1956 14.815\n", |
|
|
1125 |
"1957 15.618\n", |
|
|
1126 |
"1958 6.461\n", |
|
|
1127 |
"1959 6.971\n", |
|
|
1128 |
"1960 6.461\n", |
|
|
1129 |
"Name: eq. diam., dtype: float64\n", |
|
|
1130 |
"Nodule Detected at slice# 74 with actual coord [75, 398, 373]\n", |
|
|
1131 |
"Nodule Detected at slice# 75 with actual coord [75, 398, 373]\n", |
|
|
1132 |
"Nodule Detected at slice# 76 with actual coord [75, 398, 373]\n", |
|
|
1133 |
"Nodule Detected at slice# 60 with actual coord [60, 195, 294]\n", |
|
|
1134 |
"Nodule Detected at slice# 61 with actual coord [60, 195, 294]\n", |
|
|
1135 |
"Nodule Detected at slice# 33 with actual coord [34, 183, 332]\n", |
|
|
1136 |
"Nodule Detected at slice# 34 with actual coord [34, 183, 332]\n", |
|
|
1137 |
"Nodule Detected at slice# 35 with actual coord [34, 183, 332]\n", |
|
|
1138 |
"Nodule Detected at slice# 10 with actual coord [11, 212, 298]\n", |
|
|
1139 |
"Nodule Detected at slice# 11 with actual coord [11, 212, 298]\n", |
|
|
1140 |
"Nodule Detected at slice# 12 with actual coord [11, 212, 298]\n", |
|
|
1141 |
"Sensitivity: 0.41904761904761906\n", |
|
|
1142 |
"Specificity: 0.07568279039157617\n", |
|
|
1143 |
"Processing patient# 280 ETA: -0.8671448359413751 hrs\n", |
|
|
1144 |
"[[27, 342, 347], [46, 87, 251], [21, 210, 354], [48, 198, 160]]\n", |
|
|
1145 |
"1961 24.957\n", |
|
|
1146 |
"1962 5.973\n", |
|
|
1147 |
"1963 5.478\n", |
|
|
1148 |
"1964 7.579\n", |
|
|
1149 |
"Name: eq. diam., dtype: float64\n", |
|
|
1150 |
"Nodule Detected at slice# 26 with actual coord [27, 342, 347]\n", |
|
|
1151 |
"Nodule Detected at slice# 27 with actual coord [27, 342, 347]\n", |
|
|
1152 |
"Nodule Detected at slice# 28 with actual coord [27, 342, 347]\n", |
|
|
1153 |
"Nodule Detected at slice# 45 with actual coord [46, 87, 251]\n", |
|
|
1154 |
"Nodule Detected at slice# 46 with actual coord [46, 87, 251]\n", |
|
|
1155 |
"Nodule Detected at slice# 21 with actual coord [21, 210, 354]\n", |
|
|
1156 |
"Nodule Detected at slice# 22 with actual coord [21, 210, 354]\n", |
|
|
1157 |
"Nodule Detected at slice# 47 with actual coord [48, 198, 160]\n", |
|
|
1158 |
"Nodule Detected at slice# 48 with actual coord [48, 198, 160]\n", |
|
|
1159 |
"Nodule Detected at slice# 49 with actual coord [48, 198, 160]\n", |
|
|
1160 |
"Sensitivity: 0.42990654205607476\n", |
|
|
1161 |
"Specificity: 0.07749434937035841\n", |
|
|
1162 |
"Processing patient# 281 ETA: -0.8799125879048453 hrs\n", |
|
|
1163 |
"[[73, 418, 358], [82, 458, 297], [65, 118, 180], [87, 141, 347], [58, 108, 315], [45, 356, 374], [85, 455, 242]]\n", |
|
|
1164 |
"1965 7.535\n", |
|
|
1165 |
"1966 14.091\n", |
|
|
1166 |
"1967 5.929\n", |
|
|
1167 |
"1968 25.489\n", |
|
|
1168 |
"1969 4.594\n", |
|
|
1169 |
"1970 24.822\n", |
|
|
1170 |
"1971 4.352\n", |
|
|
1171 |
"Name: eq. diam., dtype: float64\n", |
|
|
1172 |
"Nodule Detected at slice# 72 with actual coord [73, 418, 358]\n", |
|
|
1173 |
"Nodule Detected at slice# 73 with actual coord [73, 418, 358]\n", |
|
|
1174 |
"Nodule Detected at slice# 74 with actual coord [73, 418, 358]\n" |
|
|
1175 |
] |
|
|
1176 |
}, |
|
|
1177 |
{ |
|
|
1178 |
"name": "stdout", |
|
|
1179 |
"output_type": "stream", |
|
|
1180 |
"text": [ |
|
|
1181 |
"Nodule Detected at slice# 81 with actual coord [82, 458, 297]\n", |
|
|
1182 |
"Nodule Detected at slice# 82 with actual coord [82, 458, 297]\n", |
|
|
1183 |
"Nodule Detected at slice# 83 with actual coord [82, 458, 297]\n", |
|
|
1184 |
"Nodule Detected at slice# 65 with actual coord [65, 118, 180]\n", |
|
|
1185 |
"Nodule Detected at slice# 86 with actual coord [87, 141, 347]\n", |
|
|
1186 |
"Nodule Detected at slice# 87 with actual coord [87, 141, 347]\n", |
|
|
1187 |
"Nodule Detected at slice# 88 with actual coord [87, 141, 347]\n", |
|
|
1188 |
"Sensitivity: 0.4343891402714932\n", |
|
|
1189 |
"Specificity: 0.07971938775510204\n", |
|
|
1190 |
"Processing patient# 282 ETA: -0.8924763028329522 hrs\n", |
|
|
1191 |
"[[117, 404, 310], [71, 324, 206]]\n", |
|
|
1192 |
"1972 5.743\n", |
|
|
1193 |
"1973 9.606\n", |
|
|
1194 |
"Name: eq. diam., dtype: float64\n", |
|
|
1195 |
"Nodule Detected at slice# 116 with actual coord [117, 404, 310]\n", |
|
|
1196 |
"Nodule Detected at slice# 117 with actual coord [117, 404, 310]\n", |
|
|
1197 |
"Nodule Detected at slice# 118 with actual coord [117, 404, 310]\n", |
|
|
1198 |
"Sensitivity: 0.4349775784753363\n", |
|
|
1199 |
"Specificity: 0.0802155992390615\n", |
|
|
1200 |
"Processing patient# 283 ETA: -0.912509531576024 hrs\n", |
|
|
1201 |
"[[55, 93, 260], [60, 92, 276]]\n", |
|
|
1202 |
"1974 3.993\n", |
|
|
1203 |
"1975 13.159\n", |
|
|
1204 |
"Name: eq. diam., dtype: float64\n", |
|
|
1205 |
"Nodule Detected at slice# 59 with actual coord [60, 92, 276]\n", |
|
|
1206 |
"Nodule Detected at slice# 60 with actual coord [60, 92, 276]\n", |
|
|
1207 |
"Nodule Detected at slice# 61 with actual coord [60, 92, 276]\n", |
|
|
1208 |
"Sensitivity: 0.43555555555555553\n", |
|
|
1209 |
"Specificity: 0.08040201005025126\n", |
|
|
1210 |
"Processing patient# 284 ETA: -0.9276165660082456 hrs\n", |
|
|
1211 |
"[[59, 308, 399], [112, 412, 183], [142, 222, 109]]\n", |
|
|
1212 |
"1976 3.994\n", |
|
|
1213 |
"1977 5.284\n", |
|
|
1214 |
"1978 4.292\n", |
|
|
1215 |
"Name: eq. diam., dtype: float64\n", |
|
|
1216 |
"Sensitivity: 0.4298245614035088\n", |
|
|
1217 |
"Specificity: 0.07891491985203453\n", |
|
|
1218 |
"Processing patient# 285 ETA: -0.9474092618078284 hrs\n", |
|
|
1219 |
"Processing patient# 286 ETA: -0.9552038283920511 hrs\n", |
|
|
1220 |
"[[178, 411, 338]]\n", |
|
|
1221 |
"1979 11.011\n", |
|
|
1222 |
"Name: eq. diam., dtype: float64\n", |
|
|
1223 |
"Nodule Detected at slice# 177 with actual coord [178, 411, 338]\n", |
|
|
1224 |
"Nodule Detected at slice# 178 with actual coord [178, 411, 338]\n", |
|
|
1225 |
"Nodule Detected at slice# 179 with actual coord [178, 411, 338]\n", |
|
|
1226 |
"Sensitivity: 0.43231441048034935\n", |
|
|
1227 |
"Specificity: 0.07872340425531915\n", |
|
|
1228 |
"Processing patient# 287 ETA: -0.9885201086233716 hrs\n", |
|
|
1229 |
"[[52, 171, 346], [226, 407, 317], [101, 188, 223]]\n", |
|
|
1230 |
"1980 5.465\n", |
|
|
1231 |
"1981 3.949\n", |
|
|
1232 |
"1982 2.914\n", |
|
|
1233 |
"Name: eq. diam., dtype: float64\n", |
|
|
1234 |
"Nodule Detected at slice# 51 with actual coord [52, 171, 346]\n", |
|
|
1235 |
"Nodule Detected at slice# 52 with actual coord [52, 171, 346]\n", |
|
|
1236 |
"Nodule Detected at slice# 53 with actual coord [52, 171, 346]\n", |
|
|
1237 |
"Sensitivity: 0.43103448275862066\n", |
|
|
1238 |
"Specificity: 0.07811568276684555\n", |
|
|
1239 |
"Processing patient# 288 ETA: -1.0173021987062176 hrs\n", |
|
|
1240 |
"[[99, 139, 331]]\n", |
|
|
1241 |
"1983 2.916\n", |
|
|
1242 |
"Name: eq. diam., dtype: float64\n", |
|
|
1243 |
"Sensitivity: 0.4291845493562232\n", |
|
|
1244 |
"Specificity: 0.07735459108355477\n", |
|
|
1245 |
"Processing patient# 289 ETA: -1.0488337143754927 hrs\n", |
|
|
1246 |
"[[93, 143, 120], [85, 439, 206], [17, 200, 247], [54, 90, 169], [68, 113, 160]]\n", |
|
|
1247 |
"1984 4.176\n", |
|
|
1248 |
"1985 8.182\n", |
|
|
1249 |
"1986 5.844\n", |
|
|
1250 |
"1987 2.152\n", |
|
|
1251 |
"1988 3.473\n", |
|
|
1252 |
"Name: eq. diam., dtype: float64\n", |
|
|
1253 |
"Nodule Detected at slice# 84 with actual coord [85, 439, 206]\n", |
|
|
1254 |
"Nodule Detected at slice# 85 with actual coord [85, 439, 206]\n", |
|
|
1255 |
"Nodule Detected at slice# 86 with actual coord [85, 439, 206]\n", |
|
|
1256 |
"Nodule Detected at slice# 17 with actual coord [17, 200, 247]\n", |
|
|
1257 |
"Nodule Detected at slice# 18 with actual coord [17, 200, 247]\n", |
|
|
1258 |
"Sensitivity: 0.42857142857142855\n", |
|
|
1259 |
"Specificity: 0.07850632167009702\n", |
|
|
1260 |
"Processing patient# 290 ETA: -1.0633959089682017 hrs\n", |
|
|
1261 |
"Processing patient# 291 ETA: -1.0715167082047907 hrs\n", |
|
|
1262 |
"[[139, 447, 216], [132, 449, 223], [160, 162, 378], [151, 310, 353]]\n", |
|
|
1263 |
"1989 7.468\n", |
|
|
1264 |
"1990 4.938\n", |
|
|
1265 |
"1991 4.589\n", |
|
|
1266 |
"1992 4.510\n", |
|
|
1267 |
"Name: eq. diam., dtype: float64\n", |
|
|
1268 |
"Nodule Detected at slice# 138 with actual coord [139, 447, 216]\n", |
|
|
1269 |
"Nodule Detected at slice# 139 with actual coord [139, 447, 216]\n", |
|
|
1270 |
"Nodule Detected at slice# 140 with actual coord [139, 447, 216]\n", |
|
|
1271 |
"Sensitivity: 0.4256198347107438\n", |
|
|
1272 |
"Specificity: 0.07855688100087285\n", |
|
|
1273 |
"Processing patient# 292 ETA: -1.0933069704085179 hrs\n", |
|
|
1274 |
"[[165, 60, 267], [86, 419, 209], [151, 324, 384], [181, 299, 307], [42, 225, 327], [67, 91, 238], [178, 60, 220], [112, 198, 133], [163, 441, 310]]\n", |
|
|
1275 |
"1993 4.879\n", |
|
|
1276 |
"1994 4.383\n", |
|
|
1277 |
"1995 5.464\n", |
|
|
1278 |
"1996 4.517\n", |
|
|
1279 |
"1997 4.352\n", |
|
|
1280 |
"1998 4.866\n", |
|
|
1281 |
"1999 5.646\n", |
|
|
1282 |
"2000 4.352\n", |
|
|
1283 |
"2001 4.712\n", |
|
|
1284 |
"Name: eq. diam., dtype: float64\n", |
|
|
1285 |
"Nodule Detected at slice# 150 with actual coord [151, 324, 384]\n", |
|
|
1286 |
"Nodule Detected at slice# 151 with actual coord [151, 324, 384]\n", |
|
|
1287 |
"Nodule Detected at slice# 152 with actual coord [151, 324, 384]\n", |
|
|
1288 |
"Sensitivity: 0.41434262948207173\n", |
|
|
1289 |
"Specificity: 0.07858376511226252\n", |
|
|
1290 |
"Processing patient# 293 ETA: -1.1144491154145326 hrs\n", |
|
|
1291 |
"[[150, 130, 184], [66, 202, 315], [65, 398, 308]]\n", |
|
|
1292 |
"2002 4.289\n", |
|
|
1293 |
"2003 4.377\n", |
|
|
1294 |
"2004 3.498\n", |
|
|
1295 |
"Name: eq. diam., dtype: float64\n", |
|
|
1296 |
"Sensitivity: 0.4094488188976378\n", |
|
|
1297 |
"Specificity: 0.07746878547105562\n", |
|
|
1298 |
"Processing patient# 294 ETA: -1.1357826614569104 hrs\n", |
|
|
1299 |
"Processing patient# 295 ETA: -1.14397456530236 hrs\n", |
|
|
1300 |
"[[35, 102, 340], [56, 443, 297], [58, 209, 169]]\n", |
|
|
1301 |
"2005 8.201\n", |
|
|
1302 |
"2006 4.741\n", |
|
|
1303 |
"2007 16.094\n", |
|
|
1304 |
"Name: eq. diam., dtype: float64\n", |
|
|
1305 |
"Nodule Detected at slice# 34 with actual coord [35, 102, 340]\n", |
|
|
1306 |
"Nodule Detected at slice# 35 with actual coord [35, 102, 340]\n", |
|
|
1307 |
"Nodule Detected at slice# 36 with actual coord [35, 102, 340]\n", |
|
|
1308 |
"Nodule Detected at slice# 57 with actual coord [58, 209, 169]\n", |
|
|
1309 |
"Nodule Detected at slice# 58 with actual coord [58, 209, 169]\n", |
|
|
1310 |
"Nodule Detected at slice# 59 with actual coord [58, 209, 169]\n", |
|
|
1311 |
"Sensitivity: 0.41245136186770426\n", |
|
|
1312 |
"Specificity: 0.07845894263217097\n", |
|
|
1313 |
"Processing patient# 296 ETA: -1.158752222769969 hrs\n", |
|
|
1314 |
"[[175, 117, 258]]\n", |
|
|
1315 |
"2008 10.658\n", |
|
|
1316 |
"Name: eq. diam., dtype: float64\n", |
|
|
1317 |
"Nodule Detected at slice# 174 with actual coord [175, 117, 258]\n", |
|
|
1318 |
"Nodule Detected at slice# 175 with actual coord [175, 117, 258]\n", |
|
|
1319 |
"Nodule Detected at slice# 176 with actual coord [175, 117, 258]\n", |
|
|
1320 |
"Sensitivity: 0.41472868217054265\n", |
|
|
1321 |
"Specificity: 0.07762180016515277\n", |
|
|
1322 |
"Processing patient# 297 ETA: -1.1811336418929457 hrs\n", |
|
|
1323 |
"[[104, 101, 131]]\n", |
|
|
1324 |
"2009 2.505\n", |
|
|
1325 |
"Name: eq. diam., dtype: float64\n", |
|
|
1326 |
"Sensitivity: 0.41312741312741313\n", |
|
|
1327 |
"Specificity: 0.07700709994538503\n", |
|
|
1328 |
"Processing patient# 298 ETA: -1.1989392614533527 hrs\n", |
|
|
1329 |
"[[140, 339, 286], [145, 356, 321]]\n", |
|
|
1330 |
"2010 6.920\n", |
|
|
1331 |
"2011 9.353\n", |
|
|
1332 |
"Name: eq. diam., dtype: float64\n", |
|
|
1333 |
"Nodule Detected at slice# 139 with actual coord [140, 339, 286]\n", |
|
|
1334 |
"Nodule Detected at slice# 140 with actual coord [140, 339, 286]\n", |
|
|
1335 |
"Nodule Detected at slice# 144 with actual coord [145, 356, 321]\n", |
|
|
1336 |
"Nodule Detected at slice# 145 with actual coord [145, 356, 321]\n", |
|
|
1337 |
"Nodule Detected at slice# 146 with actual coord [145, 356, 321]\n", |
|
|
1338 |
"Sensitivity: 0.41762452107279696\n", |
|
|
1339 |
"Specificity: 0.0779467680608365\n", |
|
|
1340 |
"Processing patient# 299 ETA: -1.216612838765849 hrs\n", |
|
|
1341 |
"[[27, 379, 290]]\n", |
|
|
1342 |
"2012 3.739\n", |
|
|
1343 |
"Name: eq. diam., dtype: float64\n", |
|
|
1344 |
"Sensitivity: 0.41603053435114506\n", |
|
|
1345 |
"Specificity: 0.07704697986577182\n", |
|
|
1346 |
"Processing patient# 300 ETA: -1.2363688643994157 hrs\n", |
|
|
1347 |
"[[90, 356, 361], [247, 304, 365], [220, 348, 456], [147, 334, 434], [185, 383, 447], [127, 377, 433], [139, 96, 282], [133, 411, 310], [166, 113, 421], [124, 94, 383], [90, 295, 378], [112, 369, 372]]\n", |
|
|
1348 |
"2013 14.627\n", |
|
|
1349 |
"2014 8.630\n", |
|
|
1350 |
"2015 4.541\n", |
|
|
1351 |
"2016 7.850\n", |
|
|
1352 |
"2017 5.058\n", |
|
|
1353 |
"2018 6.911\n", |
|
|
1354 |
"2019 5.561\n", |
|
|
1355 |
"2020 3.875\n", |
|
|
1356 |
"2021 6.085\n", |
|
|
1357 |
"2022 3.570\n", |
|
|
1358 |
"2023 8.049\n", |
|
|
1359 |
"2024 4.754\n", |
|
|
1360 |
"Name: eq. diam., dtype: float64\n", |
|
|
1361 |
"Nodule Detected at slice# 89 with actual coord [90, 356, 361]\n", |
|
|
1362 |
"Nodule Detected at slice# 90 with actual coord [90, 356, 361]\n", |
|
|
1363 |
"Nodule Detected at slice# 91 with actual coord [90, 356, 361]\n", |
|
|
1364 |
"Nodule Detected at slice# 246 with actual coord [247, 304, 365]\n", |
|
|
1365 |
"Nodule Detected at slice# 247 with actual coord [247, 304, 365]\n", |
|
|
1366 |
"Nodule Detected at slice# 248 with actual coord [247, 304, 365]\n", |
|
|
1367 |
"Nodule Detected at slice# 146 with actual coord [147, 334, 434]\n", |
|
|
1368 |
"Nodule Detected at slice# 126 with actual coord [127, 377, 433]\n", |
|
|
1369 |
"Nodule Detected at slice# 127 with actual coord [127, 377, 433]\n", |
|
|
1370 |
"Nodule Detected at slice# 128 with actual coord [127, 377, 433]\n", |
|
|
1371 |
"Nodule Detected at slice# 138 with actual coord [139, 96, 282]\n", |
|
|
1372 |
"Nodule Detected at slice# 139 with actual coord [139, 96, 282]\n", |
|
|
1373 |
"Nodule Detected at slice# 140 with actual coord [139, 96, 282]\n", |
|
|
1374 |
"Nodule Detected at slice# 165 with actual coord [166, 113, 421]\n", |
|
|
1375 |
"Nodule Detected at slice# 166 with actual coord [166, 113, 421]\n", |
|
|
1376 |
"Nodule Detected at slice# 167 with actual coord [166, 113, 421]\n", |
|
|
1377 |
"Nodule Detected at slice# 89 with actual coord [90, 295, 378]\n", |
|
|
1378 |
"Nodule Detected at slice# 90 with actual coord [90, 295, 378]\n", |
|
|
1379 |
"Nodule Detected at slice# 91 with actual coord [90, 295, 378]\n", |
|
|
1380 |
"Sensitivity: 0.4233576642335766\n", |
|
|
1381 |
"Specificity: 0.07907098121085596\n", |
|
|
1382 |
"Processing patient# 301 ETA: -1.2614309130803207 hrs\n" |
|
|
1383 |
] |
|
|
1384 |
}, |
|
|
1385 |
{ |
|
|
1386 |
"name": "stdout", |
|
|
1387 |
"output_type": "stream", |
|
|
1388 |
"text": [ |
|
|
1389 |
"[[94, 111, 362]]\n", |
|
|
1390 |
"2025 6.325\n", |
|
|
1391 |
"Name: eq. diam., dtype: float64\n", |
|
|
1392 |
"Nodule Detected at slice# 93 with actual coord [94, 111, 362]\n", |
|
|
1393 |
"Nodule Detected at slice# 94 with actual coord [94, 111, 362]\n", |
|
|
1394 |
"Nodule Detected at slice# 95 with actual coord [94, 111, 362]\n", |
|
|
1395 |
"Sensitivity: 0.4254545454545455\n", |
|
|
1396 |
"Specificity: 0.07854209445585215\n", |
|
|
1397 |
"Processing patient# 302 ETA: -1.2831493301344234 hrs\n", |
|
|
1398 |
"[[35, 194, 194], [34, 333, 327]]\n", |
|
|
1399 |
"2026 16.635\n", |
|
|
1400 |
"2027 30.818\n", |
|
|
1401 |
"Name: eq. diam., dtype: float64\n", |
|
|
1402 |
"Nodule Detected at slice# 34 with actual coord [35, 194, 194]\n", |
|
|
1403 |
"Nodule Detected at slice# 35 with actual coord [35, 194, 194]\n", |
|
|
1404 |
"Nodule Detected at slice# 36 with actual coord [35, 194, 194]\n", |
|
|
1405 |
"Nodule Detected at slice# 33 with actual coord [34, 333, 327]\n", |
|
|
1406 |
"Nodule Detected at slice# 34 with actual coord [34, 333, 327]\n", |
|
|
1407 |
"Nodule Detected at slice# 35 with actual coord [34, 333, 327]\n", |
|
|
1408 |
"Sensitivity: 0.4296028880866426\n", |
|
|
1409 |
"Specificity: 0.07874015748031496\n", |
|
|
1410 |
"Processing patient# 303 ETA: -1.2988921113892007 hrs\n", |
|
|
1411 |
"[[22, 133, 249], [54, 144, 319], [61, 374, 342], [65, 114, 216], [50, 356, 266], [23, 122, 317]]\n", |
|
|
1412 |
"2028 21.273\n", |
|
|
1413 |
"2029 5.113\n", |
|
|
1414 |
"2030 6.716\n", |
|
|
1415 |
"2031 5.094\n", |
|
|
1416 |
"2032 5.075\n", |
|
|
1417 |
"2033 8.756\n", |
|
|
1418 |
"Name: eq. diam., dtype: float64\n", |
|
|
1419 |
"Nodule Detected at slice# 21 with actual coord [22, 133, 249]\n", |
|
|
1420 |
"Nodule Detected at slice# 22 with actual coord [22, 133, 249]\n", |
|
|
1421 |
"Nodule Detected at slice# 23 with actual coord [22, 133, 249]\n", |
|
|
1422 |
"Nodule Detected at slice# 61 with actual coord [61, 374, 342]\n", |
|
|
1423 |
"Nodule Detected at slice# 22 with actual coord [23, 122, 317]\n", |
|
|
1424 |
"Nodule Detected at slice# 23 with actual coord [23, 122, 317]\n", |
|
|
1425 |
"Nodule Detected at slice# 24 with actual coord [23, 122, 317]\n", |
|
|
1426 |
"Sensitivity: 0.43109540636042404\n", |
|
|
1427 |
"Specificity: 0.07962588473205258\n", |
|
|
1428 |
"Processing patient# 304 ETA: -1.312506511129482 hrs\n", |
|
|
1429 |
"Processing patient# 305 ETA: -1.3207822793885007 hrs\n", |
|
|
1430 |
"[[249, 112, 419], [79, 137, 365], [92, 81, 249], [50, 157, 296], [78, 293, 330], [125, 215, 374], [229, 111, 348], [118, 91, 217], [236, 419, 290], [170, 148, 173], [157, 113, 330]]\n", |
|
|
1431 |
"2034 4.435\n", |
|
|
1432 |
"2035 4.019\n", |
|
|
1433 |
"2036 3.704\n", |
|
|
1434 |
"2037 3.978\n", |
|
|
1435 |
"2038 5.908\n", |
|
|
1436 |
"2039 6.180\n", |
|
|
1437 |
"2040 7.348\n", |
|
|
1438 |
"2041 7.628\n", |
|
|
1439 |
"2042 22.907\n", |
|
|
1440 |
"2043 8.543\n", |
|
|
1441 |
"2044 6.417\n", |
|
|
1442 |
"Name: eq. diam., dtype: float64\n", |
|
|
1443 |
"Nodule Detected at slice# 77 with actual coord [78, 293, 330]\n", |
|
|
1444 |
"Nodule Detected at slice# 78 with actual coord [78, 293, 330]\n", |
|
|
1445 |
"Nodule Detected at slice# 79 with actual coord [78, 293, 330]\n", |
|
|
1446 |
"Nodule Detected at slice# 124 with actual coord [125, 215, 374]\n", |
|
|
1447 |
"Nodule Detected at slice# 125 with actual coord [125, 215, 374]\n", |
|
|
1448 |
"Nodule Detected at slice# 126 with actual coord [125, 215, 374]\n", |
|
|
1449 |
"Nodule Detected at slice# 228 with actual coord [229, 111, 348]\n", |
|
|
1450 |
"Nodule Detected at slice# 229 with actual coord [229, 111, 348]\n", |
|
|
1451 |
"Nodule Detected at slice# 230 with actual coord [229, 111, 348]\n", |
|
|
1452 |
"Nodule Detected at slice# 117 with actual coord [118, 91, 217]\n", |
|
|
1453 |
"Nodule Detected at slice# 118 with actual coord [118, 91, 217]\n", |
|
|
1454 |
"Nodule Detected at slice# 119 with actual coord [118, 91, 217]\n", |
|
|
1455 |
"Nodule Detected at slice# 235 with actual coord [236, 419, 290]\n", |
|
|
1456 |
"Nodule Detected at slice# 236 with actual coord [236, 419, 290]\n", |
|
|
1457 |
"Nodule Detected at slice# 237 with actual coord [236, 419, 290]\n", |
|
|
1458 |
"Nodule Detected at slice# 169 with actual coord [170, 148, 173]\n", |
|
|
1459 |
"Nodule Detected at slice# 170 with actual coord [170, 148, 173]\n", |
|
|
1460 |
"Nodule Detected at slice# 171 with actual coord [170, 148, 173]\n", |
|
|
1461 |
"Nodule Detected at slice# 156 with actual coord [157, 113, 330]\n", |
|
|
1462 |
"Nodule Detected at slice# 157 with actual coord [157, 113, 330]\n", |
|
|
1463 |
"Nodule Detected at slice# 158 with actual coord [157, 113, 330]\n", |
|
|
1464 |
"Sensitivity: 0.4387755102040816\n", |
|
|
1465 |
"Specificity: 0.08335400645001241\n", |
|
|
1466 |
"Processing patient# 306 ETA: -1.3450457502952415 hrs\n", |
|
|
1467 |
"[[200, 301, 286], [111, 328, 363], [157, 392, 288], [187, 72, 322]]\n", |
|
|
1468 |
"2045 8.737\n", |
|
|
1469 |
"2046 4.263\n", |
|
|
1470 |
"2047 12.609\n", |
|
|
1471 |
"2048 4.405\n", |
|
|
1472 |
"Name: eq. diam., dtype: float64\n", |
|
|
1473 |
"Nodule Detected at slice# 199 with actual coord [200, 301, 286]\n", |
|
|
1474 |
"Nodule Detected at slice# 200 with actual coord [200, 301, 286]\n", |
|
|
1475 |
"Nodule Detected at slice# 201 with actual coord [200, 301, 286]\n", |
|
|
1476 |
"Nodule Detected at slice# 156 with actual coord [157, 392, 288]\n", |
|
|
1477 |
"Nodule Detected at slice# 157 with actual coord [157, 392, 288]\n", |
|
|
1478 |
"Nodule Detected at slice# 158 with actual coord [157, 392, 288]\n", |
|
|
1479 |
"Sensitivity: 0.4395973154362416\n", |
|
|
1480 |
"Specificity: 0.08409146791246619\n", |
|
|
1481 |
"Processing patient# 307 ETA: -1.3713638908231855 hrs\n", |
|
|
1482 |
"[[109, 436, 294], [72, 166, 201], [30, 212, 281], [53, 365, 357], [113, 414, 335], [16, 161, 267], [61, 407, 186], [29, 294, 293]]\n", |
|
|
1483 |
"2049 5.195\n", |
|
|
1484 |
"2050 5.314\n", |
|
|
1485 |
"2051 5.437\n", |
|
|
1486 |
"2052 6.282\n", |
|
|
1487 |
"2053 3.758\n", |
|
|
1488 |
"2054 6.389\n", |
|
|
1489 |
"2055 5.619\n", |
|
|
1490 |
"2056 4.355\n", |
|
|
1491 |
"Name: eq. diam., dtype: float64\n", |
|
|
1492 |
"Nodule Detected at slice# 109 with actual coord [109, 436, 294]\n", |
|
|
1493 |
"Nodule Detected at slice# 110 with actual coord [109, 436, 294]\n", |
|
|
1494 |
"Sensitivity: 0.43137254901960786\n", |
|
|
1495 |
"Specificity: 0.08431372549019608\n", |
|
|
1496 |
"Processing patient# 308 ETA: -1.389509897487504 hrs\n", |
|
|
1497 |
"[[149, 313, 366]]\n", |
|
|
1498 |
"2057 3.629\n", |
|
|
1499 |
"Name: eq. diam., dtype: float64\n", |
|
|
1500 |
"Sensitivity: 0.42996742671009774\n", |
|
|
1501 |
"Specificity: 0.08371866634217572\n", |
|
|
1502 |
"Processing patient# 309 ETA: -1.4223142139980665 hrs\n", |
|
|
1503 |
"[[38, 405, 316]]\n", |
|
|
1504 |
"2058 5.071\n", |
|
|
1505 |
"Name: eq. diam., dtype: float64\n", |
|
|
1506 |
"Sensitivity: 0.42857142857142855\n", |
|
|
1507 |
"Specificity: 0.08313194780086998\n", |
|
|
1508 |
"Processing patient# 310 ETA: -1.4394842782264115 hrs\n", |
|
|
1509 |
"[[113, 209, 335], [194, 401, 230], [131, 109, 186]]\n", |
|
|
1510 |
"2059 4.160\n", |
|
|
1511 |
"2060 4.946\n", |
|
|
1512 |
"2061 17.130\n", |
|
|
1513 |
"Name: eq. diam., dtype: float64\n", |
|
|
1514 |
"Nodule Detected at slice# 130 with actual coord [131, 109, 186]\n", |
|
|
1515 |
"Nodule Detected at slice# 131 with actual coord [131, 109, 186]\n", |
|
|
1516 |
"Nodule Detected at slice# 132 with actual coord [131, 109, 186]\n", |
|
|
1517 |
"Sensitivity: 0.42765273311897106\n", |
|
|
1518 |
"Specificity: 0.08295481711690174\n", |
|
|
1519 |
"Processing patient# 311 ETA: -1.4672522982280993 hrs\n", |
|
|
1520 |
"[[66, 403, 312]]\n", |
|
|
1521 |
"2062 4.422\n", |
|
|
1522 |
"Name: eq. diam., dtype: float64\n", |
|
|
1523 |
"Sensitivity: 0.42628205128205127\n", |
|
|
1524 |
"Specificity: 0.0818010372465818\n", |
|
|
1525 |
"Processing patient# 312 ETA: -1.4948357845948972 hrs\n", |
|
|
1526 |
"[[117, 132, 152]]\n", |
|
|
1527 |
"2063 4.946\n", |
|
|
1528 |
"Name: eq. diam., dtype: float64\n", |
|
|
1529 |
"Sensitivity: 0.4249201277955272\n", |
|
|
1530 |
"Specificity: 0.08118858212447357\n", |
|
|
1531 |
"Processing patient# 313 ETA: -1.5178912255835526 hrs\n", |
|
|
1532 |
"[[110, 166, 396]]\n", |
|
|
1533 |
"2064 4.282\n", |
|
|
1534 |
"Name: eq. diam., dtype: float64\n", |
|
|
1535 |
"Sensitivity: 0.42356687898089174\n", |
|
|
1536 |
"Specificity: 0.08047309833024119\n", |
|
|
1537 |
"Processing patient# 314 ETA: -1.5437265551128208 hrs\n", |
|
|
1538 |
"Processing patient# 315 ETA: -1.5523245109662387 hrs\n", |
|
|
1539 |
"[[75, 333, 206], [60, 148, 347], [61, 375, 288], [143, 385, 255], [121, 313, 205], [62, 376, 267], [116, 299, 184], [50, 349, 213], [130, 164, 165]]\n", |
|
|
1540 |
"2065 23.414\n", |
|
|
1541 |
"2066 4.437\n", |
|
|
1542 |
"2067 8.552\n", |
|
|
1543 |
"2068 4.913\n", |
|
|
1544 |
"2069 4.114\n", |
|
|
1545 |
"2070 3.614\n", |
|
|
1546 |
"2071 12.915\n", |
|
|
1547 |
"2072 5.109\n", |
|
|
1548 |
"2073 5.220\n", |
|
|
1549 |
"Name: eq. diam., dtype: float64\n", |
|
|
1550 |
"Nodule Detected at slice# 74 with actual coord [75, 333, 206]\n", |
|
|
1551 |
"Nodule Detected at slice# 75 with actual coord [75, 333, 206]\n", |
|
|
1552 |
"Nodule Detected at slice# 76 with actual coord [75, 333, 206]\n", |
|
|
1553 |
"Nodule Detected at slice# 60 with actual coord [61, 375, 288]\n", |
|
|
1554 |
"Nodule Detected at slice# 61 with actual coord [61, 375, 288]\n", |
|
|
1555 |
"Nodule Detected at slice# 62 with actual coord [61, 375, 288]\n", |
|
|
1556 |
"Nodule Detected at slice# 115 with actual coord [116, 299, 184]\n", |
|
|
1557 |
"Nodule Detected at slice# 116 with actual coord [116, 299, 184]\n", |
|
|
1558 |
"Nodule Detected at slice# 117 with actual coord [116, 299, 184]\n", |
|
|
1559 |
"Nodule Detected at slice# 49 with actual coord [50, 349, 213]\n", |
|
|
1560 |
"Nodule Detected at slice# 50 with actual coord [50, 349, 213]\n", |
|
|
1561 |
"Nodule Detected at slice# 51 with actual coord [50, 349, 213]\n", |
|
|
1562 |
"Nodule Detected at slice# 129 with actual coord [130, 164, 165]\n", |
|
|
1563 |
"Nodule Detected at slice# 130 with actual coord [130, 164, 165]\n", |
|
|
1564 |
"Nodule Detected at slice# 131 with actual coord [130, 164, 165]\n", |
|
|
1565 |
"Sensitivity: 0.42724458204334365\n", |
|
|
1566 |
"Specificity: 0.08270504912040211\n", |
|
|
1567 |
"Processing patient# 316 ETA: -1.5749615946013884 hrs\n", |
|
|
1568 |
"[[55, 110, 299]]\n", |
|
|
1569 |
"2074 2.907\n", |
|
|
1570 |
"Name: eq. diam., dtype: float64\n", |
|
|
1571 |
"Sensitivity: 0.42592592592592593\n", |
|
|
1572 |
"Specificity: 0.0823288605867637\n", |
|
|
1573 |
"Processing patient# 317 ETA: -1.5920844926085758 hrs\n", |
|
|
1574 |
"[[90, 455, 272], [94, 146, 360], [101, 420, 369]]\n", |
|
|
1575 |
"2075 4.722\n", |
|
|
1576 |
"2076 3.119\n", |
|
|
1577 |
"2077 3.738\n", |
|
|
1578 |
"Name: eq. diam., dtype: float64\n", |
|
|
1579 |
"Sensitivity: 0.42201834862385323\n", |
|
|
1580 |
"Specificity: 0.08201178069777978\n", |
|
|
1581 |
"Processing patient# 318 ETA: -1.6090465639876286 hrs\n", |
|
|
1582 |
"[[30, 166, 306], [101, 382, 162], [99, 72, 260], [124, 172, 382]]\n", |
|
|
1583 |
"2078 10.323\n", |
|
|
1584 |
"2079 4.843\n", |
|
|
1585 |
"2080 4.796\n", |
|
|
1586 |
"2081 4.596\n", |
|
|
1587 |
"Name: eq. diam., dtype: float64\n", |
|
|
1588 |
"Nodule Detected at slice# 29 with actual coord [30, 166, 306]\n", |
|
|
1589 |
"Nodule Detected at slice# 30 with actual coord [30, 166, 306]\n", |
|
|
1590 |
"Nodule Detected at slice# 31 with actual coord [30, 166, 306]\n", |
|
|
1591 |
"Sensitivity: 0.4199395770392749\n", |
|
|
1592 |
"Specificity: 0.08218869623958568\n", |
|
|
1593 |
"Processing patient# 319 ETA: -1.6284042104348948 hrs\n" |
|
|
1594 |
] |
|
|
1595 |
}, |
|
|
1596 |
{ |
|
|
1597 |
"name": "stdout", |
|
|
1598 |
"output_type": "stream", |
|
|
1599 |
"text": [ |
|
|
1600 |
"[[261, 148, 142]]\n", |
|
|
1601 |
"2082 4.669\n", |
|
|
1602 |
"Name: eq. diam., dtype: float64\n", |
|
|
1603 |
"Sensitivity: 0.4186746987951807\n", |
|
|
1604 |
"Specificity: 0.08172861621137484\n", |
|
|
1605 |
"Processing patient# 320 ETA: -1.6654085892438888 hrs\n", |
|
|
1606 |
"[[143, 347, 369], [104, 372, 135]]\n", |
|
|
1607 |
"2083 10.763\n", |
|
|
1608 |
"2084 26.356\n", |
|
|
1609 |
"Name: eq. diam., dtype: float64\n", |
|
|
1610 |
"Nodule Detected at slice# 142 with actual coord [143, 347, 369]\n", |
|
|
1611 |
"Nodule Detected at slice# 144 with actual coord [143, 347, 369]\n", |
|
|
1612 |
"Nodule Detected at slice# 103 with actual coord [104, 372, 135]\n", |
|
|
1613 |
"Nodule Detected at slice# 104 with actual coord [104, 372, 135]\n", |
|
|
1614 |
"Nodule Detected at slice# 105 with actual coord [104, 372, 135]\n", |
|
|
1615 |
"Sensitivity: 0.4221556886227545\n", |
|
|
1616 |
"Specificity: 0.08214920071047957\n", |
|
|
1617 |
"Processing patient# 321 ETA: -1.690273597471109 hrs\n", |
|
|
1618 |
"[[195, 119, 320]]\n", |
|
|
1619 |
"2085 15.408\n", |
|
|
1620 |
"Name: eq. diam., dtype: float64\n", |
|
|
1621 |
"Nodule Detected at slice# 194 with actual coord [195, 119, 320]\n", |
|
|
1622 |
"Nodule Detected at slice# 195 with actual coord [195, 119, 320]\n", |
|
|
1623 |
"Nodule Detected at slice# 196 with actual coord [195, 119, 320]\n", |
|
|
1624 |
"Sensitivity: 0.42388059701492536\n", |
|
|
1625 |
"Specificity: 0.08103410819031066\n", |
|
|
1626 |
"Processing patient# 322 ETA: -1.7222911129354033 hrs\n", |
|
|
1627 |
"[[113, 345, 356], [121, 323, 374], [68, 91, 281], [154, 79, 307]]\n", |
|
|
1628 |
"2086 5.108\n", |
|
|
1629 |
"2087 4.252\n", |
|
|
1630 |
"2088 4.071\n", |
|
|
1631 |
"2089 3.588\n", |
|
|
1632 |
"Name: eq. diam., dtype: float64\n", |
|
|
1633 |
"Nodule Detected at slice# 112 with actual coord [113, 345, 356]\n", |
|
|
1634 |
"Nodule Detected at slice# 113 with actual coord [113, 345, 356]\n", |
|
|
1635 |
"Nodule Detected at slice# 114 with actual coord [113, 345, 356]\n", |
|
|
1636 |
"Sensitivity: 0.4218289085545723\n", |
|
|
1637 |
"Specificity: 0.08037622915775973\n", |
|
|
1638 |
"Processing patient# 323 ETA: -1.7560242365628205 hrs\n", |
|
|
1639 |
"[[180, 176, 375], [173, 164, 359]]\n", |
|
|
1640 |
"2090 5.764\n", |
|
|
1641 |
"2091 10.315\n", |
|
|
1642 |
"Name: eq. diam., dtype: float64\n", |
|
|
1643 |
"Nodule Detected at slice# 179 with actual coord [180, 176, 375]\n", |
|
|
1644 |
"Nodule Detected at slice# 180 with actual coord [180, 176, 375]\n", |
|
|
1645 |
"Nodule Detected at slice# 181 with actual coord [180, 176, 375]\n", |
|
|
1646 |
"Nodule Detected at slice# 172 with actual coord [173, 164, 359]\n", |
|
|
1647 |
"Nodule Detected at slice# 173 with actual coord [173, 164, 359]\n", |
|
|
1648 |
"Nodule Detected at slice# 174 with actual coord [173, 164, 359]\n", |
|
|
1649 |
"Sensitivity: 0.4252199413489736\n", |
|
|
1650 |
"Specificity: 0.08127659574468085\n", |
|
|
1651 |
"Processing patient# 324 ETA: -1.7881466622852986 hrs\n", |
|
|
1652 |
"[[294, 158, 282], [122, 399, 337]]\n", |
|
|
1653 |
"2092 7.186\n", |
|
|
1654 |
"2093 5.476\n", |
|
|
1655 |
"Name: eq. diam., dtype: float64\n", |
|
|
1656 |
"Nodule Detected at slice# 293 with actual coord [294, 158, 282]\n", |
|
|
1657 |
"Nodule Detected at slice# 294 with actual coord [294, 158, 282]\n", |
|
|
1658 |
"Nodule Detected at slice# 295 with actual coord [294, 158, 282]\n", |
|
|
1659 |
"Nodule Detected at slice# 121 with actual coord [122, 399, 337]\n", |
|
|
1660 |
"Nodule Detected at slice# 122 with actual coord [122, 399, 337]\n", |
|
|
1661 |
"Nodule Detected at slice# 123 with actual coord [122, 399, 337]\n", |
|
|
1662 |
"Sensitivity: 0.42857142857142855\n", |
|
|
1663 |
"Specificity: 0.08068205448118111\n", |
|
|
1664 |
"Processing patient# 325 ETA: -1.8192087536438915 hrs\n", |
|
|
1665 |
"[[72, 135, 290], [48, 353, 319]]\n", |
|
|
1666 |
"2094 7.106\n", |
|
|
1667 |
"2095 3.841\n", |
|
|
1668 |
"Name: eq. diam., dtype: float64\n", |
|
|
1669 |
"Nodule Detected at slice# 71 with actual coord [72, 135, 290]\n", |
|
|
1670 |
"Nodule Detected at slice# 72 with actual coord [72, 135, 290]\n", |
|
|
1671 |
"Nodule Detected at slice# 73 with actual coord [72, 135, 290]\n", |
|
|
1672 |
"Sensitivity: 0.4289855072463768\n", |
|
|
1673 |
"Specificity: 0.08085194375516956\n", |
|
|
1674 |
"Processing patient# 326 ETA: -1.8369306185567302 hrs\n", |
|
|
1675 |
"[[81, 352, 202]]\n", |
|
|
1676 |
"2096 17.409\n", |
|
|
1677 |
"Name: eq. diam., dtype: float64\n", |
|
|
1678 |
"Nodule Detected at slice# 80 with actual coord [81, 352, 202]\n", |
|
|
1679 |
"Nodule Detected at slice# 81 with actual coord [81, 352, 202]\n", |
|
|
1680 |
"Nodule Detected at slice# 82 with actual coord [81, 352, 202]\n", |
|
|
1681 |
"Sensitivity: 0.430635838150289\n", |
|
|
1682 |
"Specificity: 0.08073770491803278\n", |
|
|
1683 |
"Processing patient# 327 ETA: -1.8630767037323288 hrs\n", |
|
|
1684 |
"[[145, 147, 392]]\n", |
|
|
1685 |
"2097 4.628\n", |
|
|
1686 |
"Name: eq. diam., dtype: float64\n", |
|
|
1687 |
"Sensitivity: 0.42939481268011526\n", |
|
|
1688 |
"Specificity: 0.07996752587781611\n", |
|
|
1689 |
"Processing patient# 328 ETA: -1.8904273674352383 hrs\n", |
|
|
1690 |
"[[44, 328, 381], [41, 217, 307], [20, 375, 287]]\n", |
|
|
1691 |
"2098 6.388\n", |
|
|
1692 |
"2099 10.325\n", |
|
|
1693 |
"2100 17.008\n", |
|
|
1694 |
"Name: eq. diam., dtype: float64\n", |
|
|
1695 |
"Nodule Detected at slice# 43 with actual coord [44, 328, 381]\n", |
|
|
1696 |
"Nodule Detected at slice# 44 with actual coord [44, 328, 381]\n", |
|
|
1697 |
"Nodule Detected at slice# 19 with actual coord [20, 375, 287]\n", |
|
|
1698 |
"Nodule Detected at slice# 20 with actual coord [20, 375, 287]\n", |
|
|
1699 |
"Nodule Detected at slice# 21 with actual coord [20, 375, 287]\n", |
|
|
1700 |
"Sensitivity: 0.43142857142857144\n", |
|
|
1701 |
"Specificity: 0.08058977984245606\n", |
|
|
1702 |
"Processing patient# 329 ETA: -1.9057568196485832 hrs\n", |
|
|
1703 |
"[[37, 205, 275]]\n", |
|
|
1704 |
"2101 5.868\n", |
|
|
1705 |
"Name: eq. diam., dtype: float64\n", |
|
|
1706 |
"Sensitivity: 0.4301994301994302\n", |
|
|
1707 |
"Specificity: 0.08045977011494253\n", |
|
|
1708 |
"Processing patient# 330 ETA: -1.931154639223208 hrs\n", |
|
|
1709 |
"[[59, 406, 202], [19, 337, 289], [18, 328, 320]]\n", |
|
|
1710 |
"2102 4.469\n", |
|
|
1711 |
"2103 10.870\n", |
|
|
1712 |
"2104 4.613\n", |
|
|
1713 |
"Name: eq. diam., dtype: float64\n", |
|
|
1714 |
"Nodule Detected at slice# 18 with actual coord [19, 337, 289]\n", |
|
|
1715 |
"Nodule Detected at slice# 19 with actual coord [19, 337, 289]\n", |
|
|
1716 |
"Nodule Detected at slice# 20 with actual coord [19, 337, 289]\n", |
|
|
1717 |
"Sensitivity: 0.4293785310734463\n", |
|
|
1718 |
"Specificity: 0.08031968031968031\n", |
|
|
1719 |
"Processing patient# 331 ETA: -1.9491273069467752 hrs\n", |
|
|
1720 |
"[[42, 130, 352], [22, 318, 364], [158, 400, 361], [190, 342, 471]]\n", |
|
|
1721 |
"2105 2.569\n", |
|
|
1722 |
"2106 6.282\n", |
|
|
1723 |
"2107 6.627\n", |
|
|
1724 |
"2108 6.028\n", |
|
|
1725 |
"Name: eq. diam., dtype: float64\n", |
|
|
1726 |
"Nodule Detected at slice# 21 with actual coord [22, 318, 364]\n", |
|
|
1727 |
"Nodule Detected at slice# 22 with actual coord [22, 318, 364]\n", |
|
|
1728 |
"Nodule Detected at slice# 23 with actual coord [22, 318, 364]\n", |
|
|
1729 |
"Sensitivity: 0.4273743016759777\n", |
|
|
1730 |
"Specificity: 0.08040500297796307\n", |
|
|
1731 |
"Processing patient# 332 ETA: -1.986476611913926 hrs\n", |
|
|
1732 |
"[[56, 409, 237]]\n", |
|
|
1733 |
"2109 3.553\n", |
|
|
1734 |
"Name: eq. diam., dtype: float64\n", |
|
|
1735 |
"Sensitivity: 0.42618384401114207\n", |
|
|
1736 |
"Specificity: 0.08018214215006929\n", |
|
|
1737 |
"Processing patient# 333 ETA: -2.013454695883933 hrs\n", |
|
|
1738 |
"[[132, 439, 279]]\n", |
|
|
1739 |
"2110 3.811\n", |
|
|
1740 |
"Name: eq. diam., dtype: float64\n", |
|
|
1741 |
"Sensitivity: 0.425\n", |
|
|
1742 |
"Specificity: 0.07988165680473373\n", |
|
|
1743 |
"Processing patient# 334 ETA: -2.0410690262233584 hrs\n", |
|
|
1744 |
"Processing patient# 335 ETA: -2.0501630088820386 hrs\n", |
|
|
1745 |
"[[34, 319, 236], [51, 139, 200]]\n", |
|
|
1746 |
"2111 6.066\n", |
|
|
1747 |
"2112 8.039\n", |
|
|
1748 |
"Name: eq. diam., dtype: float64\n", |
|
|
1749 |
"Sensitivity: 0.42265193370165743\n", |
|
|
1750 |
"Specificity: 0.07958341520927491\n", |
|
|
1751 |
"Processing patient# 336 ETA: -2.0773469060706713 hrs\n", |
|
|
1752 |
"[[148, 368, 165], [161, 148, 201], [225, 343, 127], [182, 124, 393], [175, 87, 264], [88, 414, 303], [145, 218, 179], [217, 317, 386], [228, 422, 363], [366, 61, 353], [231, 296, 119], [49, 137, 317], [157, 392, 194]]\n", |
|
|
1753 |
"2113 6.224\n", |
|
|
1754 |
"2114 6.030\n", |
|
|
1755 |
"2115 3.375\n", |
|
|
1756 |
"2116 6.215\n", |
|
|
1757 |
"2117 5.608\n", |
|
|
1758 |
"2118 3.845\n", |
|
|
1759 |
"2119 4.069\n", |
|
|
1760 |
"2120 6.318\n", |
|
|
1761 |
"2121 4.300\n", |
|
|
1762 |
"2122 3.605\n", |
|
|
1763 |
"2123 4.337\n", |
|
|
1764 |
"2124 4.807\n", |
|
|
1765 |
"2125 4.499\n", |
|
|
1766 |
"Name: eq. diam., dtype: float64\n", |
|
|
1767 |
"Nodule Detected at slice# 147 with actual coord [148, 368, 165]\n", |
|
|
1768 |
"Nodule Detected at slice# 148 with actual coord [148, 368, 165]\n", |
|
|
1769 |
"Nodule Detected at slice# 149 with actual coord [148, 368, 165]\n", |
|
|
1770 |
"Nodule Detected at slice# 181 with actual coord [182, 124, 393]\n", |
|
|
1771 |
"Nodule Detected at slice# 182 with actual coord [182, 124, 393]\n", |
|
|
1772 |
"Nodule Detected at slice# 183 with actual coord [182, 124, 393]\n", |
|
|
1773 |
"Nodule Detected at slice# 216 with actual coord [217, 317, 386]\n", |
|
|
1774 |
"Nodule Detected at slice# 217 with actual coord [217, 317, 386]\n", |
|
|
1775 |
"Nodule Detected at slice# 218 with actual coord [217, 317, 386]\n", |
|
|
1776 |
"Sensitivity: 0.416\n", |
|
|
1777 |
"Specificity: 0.07967667436489607\n", |
|
|
1778 |
"Processing patient# 337 ETA: -2.1175451011312623 hrs\n", |
|
|
1779 |
"[[307, 425, 245], [282, 110, 394], [417, 420, 397], [285, 426, 262], [239, 131, 198], [297, 67, 208]]\n", |
|
|
1780 |
"2126 4.202\n", |
|
|
1781 |
"2127 4.082\n", |
|
|
1782 |
"2128 3.526\n", |
|
|
1783 |
"2129 10.595\n", |
|
|
1784 |
"2130 4.959\n", |
|
|
1785 |
"2131 6.096\n", |
|
|
1786 |
"Name: eq. diam., dtype: float64\n", |
|
|
1787 |
"Nodule Detected at slice# 284 with actual coord [285, 426, 262]\n", |
|
|
1788 |
"Nodule Detected at slice# 285 with actual coord [285, 426, 262]\n", |
|
|
1789 |
"Nodule Detected at slice# 286 with actual coord [285, 426, 262]\n", |
|
|
1790 |
"Nodule Detected at slice# 296 with actual coord [297, 67, 208]\n", |
|
|
1791 |
"Nodule Detected at slice# 297 with actual coord [297, 67, 208]\n", |
|
|
1792 |
"Nodule Detected at slice# 298 with actual coord [297, 67, 208]\n", |
|
|
1793 |
"Sensitivity: 0.4146981627296588\n", |
|
|
1794 |
"Specificity: 0.0794251134644478\n", |
|
|
1795 |
"Processing patient# 338 ETA: -2.160758105053234 hrs\n", |
|
|
1796 |
"Processing patient# 339 ETA: -2.169995894762423 hrs\n", |
|
|
1797 |
"[[143, 55, 294]]\n", |
|
|
1798 |
"2132 6.85\n", |
|
|
1799 |
"Name: eq. diam., dtype: float64\n", |
|
|
1800 |
"Nodule Detected at slice# 142 with actual coord [143, 55, 294]\n", |
|
|
1801 |
"Nodule Detected at slice# 143 with actual coord [143, 55, 294]\n", |
|
|
1802 |
"Nodule Detected at slice# 144 with actual coord [143, 55, 294]\n", |
|
|
1803 |
"Sensitivity: 0.4162303664921466\n", |
|
|
1804 |
"Specificity: 0.07954118089507334\n", |
|
|
1805 |
"Processing patient# 340 ETA: -2.1903565393982367 hrs\n" |
|
|
1806 |
] |
|
|
1807 |
}, |
|
|
1808 |
{ |
|
|
1809 |
"name": "stdout", |
|
|
1810 |
"output_type": "stream", |
|
|
1811 |
"text": [ |
|
|
1812 |
"[[53, 206, 239], [212, 87, 230], [76, 140, 297]]\n", |
|
|
1813 |
"2133 7.367\n", |
|
|
1814 |
"2134 3.389\n", |
|
|
1815 |
"2135 4.956\n", |
|
|
1816 |
"Name: eq. diam., dtype: float64\n", |
|
|
1817 |
"Nodule Detected at slice# 52 with actual coord [53, 206, 239]\n", |
|
|
1818 |
"Nodule Detected at slice# 53 with actual coord [53, 206, 239]\n", |
|
|
1819 |
"Nodule Detected at slice# 54 with actual coord [53, 206, 239]\n", |
|
|
1820 |
"Sensitivity: 0.4155844155844156\n", |
|
|
1821 |
"Specificity: 0.07953696788648244\n", |
|
|
1822 |
"Processing patient# 341 ETA: -2.2257796875699873 hrs\n", |
|
|
1823 |
"[[125, 153, 354]]\n", |
|
|
1824 |
"2136 23.587\n", |
|
|
1825 |
"Name: eq. diam., dtype: float64\n", |
|
|
1826 |
"Nodule Detected at slice# 124 with actual coord [125, 153, 354]\n", |
|
|
1827 |
"Nodule Detected at slice# 125 with actual coord [125, 153, 354]\n", |
|
|
1828 |
"Nodule Detected at slice# 126 with actual coord [125, 153, 354]\n", |
|
|
1829 |
"Sensitivity: 0.4170984455958549\n", |
|
|
1830 |
"Specificity: 0.07887479316050745\n", |
|
|
1831 |
"Processing patient# 342 ETA: -2.262423532506024 hrs\n", |
|
|
1832 |
"[[76, 423, 358]]\n", |
|
|
1833 |
"2137 4.803\n", |
|
|
1834 |
"Name: eq. diam., dtype: float64\n", |
|
|
1835 |
"Sensitivity: 0.4160206718346253\n", |
|
|
1836 |
"Specificity: 0.07857142857142857\n", |
|
|
1837 |
"Processing patient# 343 ETA: -2.2803060747249093 hrs\n", |
|
|
1838 |
"[[73, 163, 362], [34, 303, 153], [67, 383, 269]]\n", |
|
|
1839 |
"2138 3.390\n", |
|
|
1840 |
"2139 4.037\n", |
|
|
1841 |
"2140 6.002\n", |
|
|
1842 |
"Name: eq. diam., dtype: float64\n", |
|
|
1843 |
"Nodule Detected at slice# 67 with actual coord [67, 383, 269]\n", |
|
|
1844 |
"Nodule Detected at slice# 68 with actual coord [67, 383, 269]\n", |
|
|
1845 |
"Sensitivity: 0.4153846153846154\n", |
|
|
1846 |
"Specificity: 0.07853498542274052\n", |
|
|
1847 |
"Processing patient# 344 ETA: -2.2991284793476723 hrs\n", |
|
|
1848 |
"[[102, 399, 168], [133, 176, 129]]\n", |
|
|
1849 |
"2141 4.596\n", |
|
|
1850 |
"2142 4.338\n", |
|
|
1851 |
"Name: eq. diam., dtype: float64\n", |
|
|
1852 |
"Sensitivity: 0.413265306122449\n", |
|
|
1853 |
"Specificity: 0.077825929938606\n", |
|
|
1854 |
"Processing patient# 345 ETA: -2.3214763074163076 hrs\n", |
|
|
1855 |
"[[111, 136, 340]]\n", |
|
|
1856 |
"2143 9.118\n", |
|
|
1857 |
"Name: eq. diam., dtype: float64\n", |
|
|
1858 |
"Nodule Detected at slice# 110 with actual coord [111, 136, 340]\n", |
|
|
1859 |
"Nodule Detected at slice# 111 with actual coord [111, 136, 340]\n", |
|
|
1860 |
"Nodule Detected at slice# 112 with actual coord [111, 136, 340]\n", |
|
|
1861 |
"Sensitivity: 0.41475826972010177\n", |
|
|
1862 |
"Specificity: 0.07725169099323603\n", |
|
|
1863 |
"Processing patient# 346 ETA: -2.3474992018329384 hrs\n", |
|
|
1864 |
"[[87, 86, 250], [32, 159, 311]]\n", |
|
|
1865 |
"2144 3.948\n", |
|
|
1866 |
"2145 6.494\n", |
|
|
1867 |
"Name: eq. diam., dtype: float64\n", |
|
|
1868 |
"Nodule Detected at slice# 31 with actual coord [32, 159, 311]\n", |
|
|
1869 |
"Nodule Detected at slice# 32 with actual coord [32, 159, 311]\n", |
|
|
1870 |
"Nodule Detected at slice# 33 with actual coord [32, 159, 311]\n", |
|
|
1871 |
"Sensitivity: 0.4151898734177215\n", |
|
|
1872 |
"Specificity: 0.07722212405018554\n", |
|
|
1873 |
"Processing patient# 347 ETA: -2.37587370918704 hrs\n", |
|
|
1874 |
"[[59, 350, 271]]\n", |
|
|
1875 |
"2146 7.155\n", |
|
|
1876 |
"Name: eq. diam., dtype: float64\n", |
|
|
1877 |
"Sensitivity: 0.41414141414141414\n", |
|
|
1878 |
"Specificity: 0.07707231040564375\n", |
|
|
1879 |
"Processing patient# 348 ETA: -2.399350373549327 hrs\n", |
|
|
1880 |
"[[18, 210, 321]]\n", |
|
|
1881 |
"2147 4.544\n", |
|
|
1882 |
"Name: eq. diam., dtype: float64\n", |
|
|
1883 |
"Sensitivity: 0.41309823677581864\n", |
|
|
1884 |
"Specificity: 0.07614566997734797\n", |
|
|
1885 |
"Processing patient# 349 ETA: -2.4194342114713985 hrs\n", |
|
|
1886 |
"[[101, 172, 340], [96, 157, 322], [67, 130, 288]]\n", |
|
|
1887 |
"2148 6.336\n", |
|
|
1888 |
"2149 3.462\n", |
|
|
1889 |
"2150 17.520\n", |
|
|
1890 |
"Name: eq. diam., dtype: float64\n", |
|
|
1891 |
"Nodule Detected at slice# 100 with actual coord [101, 172, 340]\n", |
|
|
1892 |
"Nodule Detected at slice# 101 with actual coord [101, 172, 340]\n", |
|
|
1893 |
"Nodule Detected at slice# 102 with actual coord [101, 172, 340]\n", |
|
|
1894 |
"Nodule Detected at slice# 66 with actual coord [67, 130, 288]\n", |
|
|
1895 |
"Nodule Detected at slice# 67 with actual coord [67, 130, 288]\n", |
|
|
1896 |
"Nodule Detected at slice# 68 with actual coord [67, 130, 288]\n", |
|
|
1897 |
"Sensitivity: 0.415\n", |
|
|
1898 |
"Specificity: 0.07585616438356164\n", |
|
|
1899 |
"Processing patient# 350 ETA: -2.453822374400638 hrs\n", |
|
|
1900 |
"[[104, 118, 218], [145, 184, 240], [21, 301, 253], [26, 228, 262], [122, 169, 159]]\n", |
|
|
1901 |
"2151 3.490\n", |
|
|
1902 |
"2152 4.754\n", |
|
|
1903 |
"2153 5.124\n", |
|
|
1904 |
"2154 5.603\n", |
|
|
1905 |
"2155 3.994\n", |
|
|
1906 |
"Name: eq. diam., dtype: float64\n", |
|
|
1907 |
"Sensitivity: 0.40987654320987654\n", |
|
|
1908 |
"Specificity: 0.07539142273655548\n", |
|
|
1909 |
"Processing patient# 351 ETA: -2.47779455808606 hrs\n", |
|
|
1910 |
"[[70, 331, 212], [74, 132, 215]]\n", |
|
|
1911 |
"2156 7.202\n", |
|
|
1912 |
"2157 4.233\n", |
|
|
1913 |
"Name: eq. diam., dtype: float64\n", |
|
|
1914 |
"Nodule Detected at slice# 69 with actual coord [70, 331, 212]\n", |
|
|
1915 |
"Nodule Detected at slice# 70 with actual coord [70, 331, 212]\n", |
|
|
1916 |
"Nodule Detected at slice# 71 with actual coord [70, 331, 212]\n", |
|
|
1917 |
"Sensitivity: 0.4103194103194103\n", |
|
|
1918 |
"Specificity: 0.0752361673414305\n", |
|
|
1919 |
"Processing patient# 352 ETA: -2.516836094949583 hrs\n", |
|
|
1920 |
"[[148, 389, 286], [240, 429, 185], [184, 119, 149], [114, 141, 181], [257, 458, 298], [63, 177, 307], [158, 98, 318], [229, 433, 209]]\n", |
|
|
1921 |
"2158 5.153\n", |
|
|
1922 |
"2159 3.869\n", |
|
|
1923 |
"2160 3.550\n", |
|
|
1924 |
"2161 6.922\n", |
|
|
1925 |
"2162 4.799\n", |
|
|
1926 |
"2163 4.322\n", |
|
|
1927 |
"2164 5.006\n", |
|
|
1928 |
"2165 3.809\n", |
|
|
1929 |
"Name: eq. diam., dtype: float64\n", |
|
|
1930 |
"Nodule Detected at slice# 147 with actual coord [148, 389, 286]\n", |
|
|
1931 |
"Nodule Detected at slice# 148 with actual coord [148, 389, 286]\n", |
|
|
1932 |
"Nodule Detected at slice# 149 with actual coord [148, 389, 286]\n", |
|
|
1933 |
"Nodule Detected at slice# 113 with actual coord [114, 141, 181]\n", |
|
|
1934 |
"Nodule Detected at slice# 114 with actual coord [114, 141, 181]\n", |
|
|
1935 |
"Nodule Detected at slice# 115 with actual coord [114, 141, 181]\n", |
|
|
1936 |
"Sensitivity: 0.4072289156626506\n", |
|
|
1937 |
"Specificity: 0.07604306864064603\n", |
|
|
1938 |
"Processing patient# 353 ETA: -2.5453680088212742 hrs\n", |
|
|
1939 |
"[[65, 133, 399]]\n", |
|
|
1940 |
"2166 5.63\n", |
|
|
1941 |
"Name: eq. diam., dtype: float64\n", |
|
|
1942 |
"Nodule Detected at slice# 64 with actual coord [65, 133, 399]\n", |
|
|
1943 |
"Nodule Detected at slice# 65 with actual coord [65, 133, 399]\n", |
|
|
1944 |
"Sensitivity: 0.40865384615384615\n", |
|
|
1945 |
"Specificity: 0.0761744966442953\n", |
|
|
1946 |
"Processing patient# 354 ETA: -2.563256074702747 hrs\n", |
|
|
1947 |
"[[71, 96, 165], [79, 162, 387]]\n", |
|
|
1948 |
"2167 4.660\n", |
|
|
1949 |
"2168 5.103\n", |
|
|
1950 |
"Name: eq. diam., dtype: float64\n", |
|
|
1951 |
"Sensitivity: 0.40669856459330145\n", |
|
|
1952 |
"Specificity: 0.07611064543168483\n", |
|
|
1953 |
"Processing patient# 355 ETA: -2.582472086877144 hrs\n", |
|
|
1954 |
"[[156, 353, 408]]\n", |
|
|
1955 |
"2169 6.306\n", |
|
|
1956 |
"Name: eq. diam., dtype: float64\n", |
|
|
1957 |
"Nodule Detected at slice# 155 with actual coord [156, 353, 408]\n", |
|
|
1958 |
"Nodule Detected at slice# 156 with actual coord [156, 353, 408]\n", |
|
|
1959 |
"Nodule Detected at slice# 157 with actual coord [156, 353, 408]\n", |
|
|
1960 |
"Sensitivity: 0.4081145584725537\n", |
|
|
1961 |
"Specificity: 0.07541254125412541\n", |
|
|
1962 |
"Processing patient# 356 ETA: -2.611665942405493 hrs\n", |
|
|
1963 |
"[[105, 145, 297], [121, 160, 327]]\n", |
|
|
1964 |
"2170 5.923\n", |
|
|
1965 |
"2171 5.217\n", |
|
|
1966 |
"Name: eq. diam., dtype: float64\n", |
|
|
1967 |
"Nodule Detected at slice# 104 with actual coord [105, 145, 297]\n", |
|
|
1968 |
"Nodule Detected at slice# 105 with actual coord [105, 145, 297]\n", |
|
|
1969 |
"Nodule Detected at slice# 106 with actual coord [105, 145, 297]\n", |
|
|
1970 |
"Nodule Detected at slice# 120 with actual coord [121, 160, 327]\n", |
|
|
1971 |
"Nodule Detected at slice# 121 with actual coord [121, 160, 327]\n", |
|
|
1972 |
"Nodule Detected at slice# 122 with actual coord [121, 160, 327]\n", |
|
|
1973 |
"Sensitivity: 0.41092636579572445\n", |
|
|
1974 |
"Specificity: 0.07526007802340702\n", |
|
|
1975 |
"Processing patient# 357 ETA: -2.65487501386 hrs\n", |
|
|
1976 |
"[[295, 153, 166], [316, 424, 271], [75, 402, 298], [185, 106, 363]]\n", |
|
|
1977 |
"2172 4.915\n", |
|
|
1978 |
"2173 3.534\n", |
|
|
1979 |
"2174 6.169\n", |
|
|
1980 |
"2175 4.367\n", |
|
|
1981 |
"Name: eq. diam., dtype: float64\n", |
|
|
1982 |
"Nodule Detected at slice# 74 with actual coord [75, 402, 298]\n", |
|
|
1983 |
"Nodule Detected at slice# 75 with actual coord [75, 402, 298]\n", |
|
|
1984 |
"Nodule Detected at slice# 76 with actual coord [75, 402, 298]\n", |
|
|
1985 |
"Sensitivity: 0.40941176470588236\n", |
|
|
1986 |
"Specificity: 0.07454807230843065\n", |
|
|
1987 |
"Processing patient# 358 ETA: -2.6930751167125835 hrs\n", |
|
|
1988 |
"[[122, 419, 337]]\n", |
|
|
1989 |
"2176 5.079\n", |
|
|
1990 |
"Name: eq. diam., dtype: float64\n", |
|
|
1991 |
"Nodule Detected at slice# 121 with actual coord [122, 419, 337]\n", |
|
|
1992 |
"Nodule Detected at slice# 122 with actual coord [122, 419, 337]\n", |
|
|
1993 |
"Sensitivity: 0.4107981220657277\n", |
|
|
1994 |
"Specificity: 0.07474844274077623\n", |
|
|
1995 |
"Processing patient# 359 ETA: -2.721961952400296 hrs\n", |
|
|
1996 |
"[[88, 314, 169]]\n", |
|
|
1997 |
"2177 22.661\n", |
|
|
1998 |
"Name: eq. diam., dtype: float64\n", |
|
|
1999 |
"Nodule Detected at slice# 87 with actual coord [88, 314, 169]\n", |
|
|
2000 |
"Nodule Detected at slice# 88 with actual coord [88, 314, 169]\n", |
|
|
2001 |
"Nodule Detected at slice# 89 with actual coord [88, 314, 169]\n", |
|
|
2002 |
"Sensitivity: 0.41217798594847777\n", |
|
|
2003 |
"Specificity: 0.07426679280983917\n", |
|
|
2004 |
"Processing patient# 360 ETA: -2.752537683057196 hrs\n", |
|
|
2005 |
"[[79, 173, 348], [92, 122, 325]]\n", |
|
|
2006 |
"2178 3.414\n", |
|
|
2007 |
"2179 4.225\n", |
|
|
2008 |
"Name: eq. diam., dtype: float64\n", |
|
|
2009 |
"Sensitivity: 0.41025641025641024\n", |
|
|
2010 |
"Specificity: 0.07358225277300422\n", |
|
|
2011 |
"Processing patient# 361 ETA: -2.7808586135718523 hrs\n", |
|
|
2012 |
"[[95, 78, 278]]\n", |
|
|
2013 |
"2180 4.249\n", |
|
|
2014 |
"Name: eq. diam., dtype: float64\n", |
|
|
2015 |
"Sensitivity: 0.40930232558139534\n", |
|
|
2016 |
"Specificity: 0.07233911841499002\n", |
|
|
2017 |
"Processing patient# 362 ETA: -2.8235655456715523 hrs\n", |
|
|
2018 |
"[[66, 57, 284], [78, 449, 374], [57, 441, 355]]\n", |
|
|
2019 |
"2181 4.742\n", |
|
|
2020 |
"2182 3.198\n", |
|
|
2021 |
"2183 4.809\n", |
|
|
2022 |
"Name: eq. diam., dtype: float64\n", |
|
|
2023 |
"Sensitivity: 0.4064665127020785\n", |
|
|
2024 |
"Specificity: 0.07208448117539026\n", |
|
|
2025 |
"Processing patient# 363 ETA: -2.8415355438119887 hrs\n", |
|
|
2026 |
"[[135, 143, 267]]\n", |
|
|
2027 |
"2184 5.017\n", |
|
|
2028 |
"Name: eq. diam., dtype: float64\n", |
|
|
2029 |
"Sensitivity: 0.4055299539170507\n", |
|
|
2030 |
"Specificity: 0.07146108329540282\n", |
|
|
2031 |
"Processing patient# 364 ETA: -2.869065261079278 hrs\n" |
|
|
2032 |
] |
|
|
2033 |
}, |
|
|
2034 |
{ |
|
|
2035 |
"name": "stdout", |
|
|
2036 |
"output_type": "stream", |
|
|
2037 |
"text": [ |
|
|
2038 |
"[[146, 386, 337], [158, 134, 229], [225, 182, 299]]\n", |
|
|
2039 |
"2185 4.280\n", |
|
|
2040 |
"2186 3.888\n", |
|
|
2041 |
"2187 38.148\n", |
|
|
2042 |
"Name: eq. diam., dtype: float64\n", |
|
|
2043 |
"Nodule Detected at slice# 224 with actual coord [225, 182, 299]\n", |
|
|
2044 |
"Nodule Detected at slice# 225 with actual coord [225, 182, 299]\n", |
|
|
2045 |
"Nodule Detected at slice# 226 with actual coord [225, 182, 299]\n", |
|
|
2046 |
"Sensitivity: 0.40503432494279173\n", |
|
|
2047 |
"Specificity: 0.0704204427276779\n", |
|
|
2048 |
"Processing patient# 365 ETA: -2.8986850076315065 hrs\n", |
|
|
2049 |
"[[156, 124, 169], [130, 140, 310]]\n", |
|
|
2050 |
"2188 4.790\n", |
|
|
2051 |
"2189 7.062\n", |
|
|
2052 |
"Name: eq. diam., dtype: float64\n", |
|
|
2053 |
"Nodule Detected at slice# 129 with actual coord [130, 140, 310]\n", |
|
|
2054 |
"Nodule Detected at slice# 130 with actual coord [130, 140, 310]\n", |
|
|
2055 |
"Nodule Detected at slice# 131 with actual coord [130, 140, 310]\n", |
|
|
2056 |
"Sensitivity: 0.4054669703872437\n", |
|
|
2057 |
"Specificity: 0.06995160580730313\n", |
|
|
2058 |
"Processing patient# 366 ETA: -2.9261916415048645 hrs\n", |
|
|
2059 |
"[[84, 80, 257], [35, 338, 321]]\n", |
|
|
2060 |
"2190 4.677\n", |
|
|
2061 |
"2191 4.120\n", |
|
|
2062 |
"Name: eq. diam., dtype: float64\n", |
|
|
2063 |
"Sensitivity: 0.4036281179138322\n", |
|
|
2064 |
"Specificity: 0.06963503649635036\n", |
|
|
2065 |
"Processing patient# 367 ETA: -2.9470381484371297 hrs\n", |
|
|
2066 |
"[[184, 145, 400], [109, 95, 358], [215, 396, 199]]\n", |
|
|
2067 |
"2192 4.481\n", |
|
|
2068 |
"2193 11.861\n", |
|
|
2069 |
"2194 13.805\n", |
|
|
2070 |
"Name: eq. diam., dtype: float64\n", |
|
|
2071 |
"Nodule Detected at slice# 108 with actual coord [109, 95, 358]\n", |
|
|
2072 |
"Nodule Detected at slice# 109 with actual coord [109, 95, 358]\n", |
|
|
2073 |
"Nodule Detected at slice# 110 with actual coord [109, 95, 358]\n", |
|
|
2074 |
"Nodule Detected at slice# 214 with actual coord [215, 396, 199]\n", |
|
|
2075 |
"Nodule Detected at slice# 215 with actual coord [215, 396, 199]\n", |
|
|
2076 |
"Nodule Detected at slice# 216 with actual coord [215, 396, 199]\n", |
|
|
2077 |
"Sensitivity: 0.40540540540540543\n", |
|
|
2078 |
"Specificity: 0.06939655172413793\n", |
|
|
2079 |
"Processing patient# 368 ETA: -2.9880874305704372 hrs\n", |
|
|
2080 |
"[[224, 381, 414], [365, 335, 401], [309, 437, 373], [224, 421, 333], [363, 461, 315]]\n", |
|
|
2081 |
"2195 2.876\n", |
|
|
2082 |
"2196 12.983\n", |
|
|
2083 |
"2197 4.747\n", |
|
|
2084 |
"2198 5.187\n", |
|
|
2085 |
"2199 4.229\n", |
|
|
2086 |
"Name: eq. diam., dtype: float64\n", |
|
|
2087 |
"Nodule Detected at slice# 364 with actual coord [365, 335, 401]\n", |
|
|
2088 |
"Nodule Detected at slice# 365 with actual coord [365, 335, 401]\n", |
|
|
2089 |
"Nodule Detected at slice# 366 with actual coord [365, 335, 401]\n", |
|
|
2090 |
"Nodule Detected at slice# 223 with actual coord [224, 421, 333]\n", |
|
|
2091 |
"Nodule Detected at slice# 224 with actual coord [224, 421, 333]\n", |
|
|
2092 |
"Nodule Detected at slice# 225 with actual coord [224, 421, 333]\n", |
|
|
2093 |
"Sensitivity: 0.4053452115812918\n", |
|
|
2094 |
"Specificity: 0.06962836394703119\n", |
|
|
2095 |
"Processing patient# 369 ETA: -3.03107933963702 hrs\n", |
|
|
2096 |
"Processing patient# 370 ETA: -3.0407743953172863 hrs\n", |
|
|
2097 |
"[[29, 392, 242]]\n", |
|
|
2098 |
"2200 4.461\n", |
|
|
2099 |
"Name: eq. diam., dtype: float64\n", |
|
|
2100 |
"Sensitivity: 0.40444444444444444\n", |
|
|
2101 |
"Specificity: 0.06950959488272922\n", |
|
|
2102 |
"Processing patient# 371 ETA: -3.0625835187865715 hrs\n", |
|
|
2103 |
"[[69, 413, 257]]\n", |
|
|
2104 |
"2201 4.584\n", |
|
|
2105 |
"Name: eq. diam., dtype: float64\n", |
|
|
2106 |
"Sensitivity: 0.4035476718403548\n", |
|
|
2107 |
"Specificity: 0.06940107862617088\n", |
|
|
2108 |
"Processing patient# 372 ETA: -3.083073799907093 hrs\n", |
|
|
2109 |
"[[48, 325, 146], [51, 380, 292]]\n", |
|
|
2110 |
"2202 3.486\n", |
|
|
2111 |
"2203 3.344\n", |
|
|
2112 |
"Name: eq. diam., dtype: float64\n", |
|
|
2113 |
"Sensitivity: 0.40176600441501104\n", |
|
|
2114 |
"Specificity: 0.06918505942275043\n", |
|
|
2115 |
"Processing patient# 373 ETA: -3.1024945414307785 hrs\n", |
|
|
2116 |
"[[229, 139, 215], [136, 228, 349], [276, 195, 178], [296, 108, 397], [288, 417, 362], [181, 344, 185], [264, 129, 179], [331, 402, 379]]\n", |
|
|
2117 |
"2204 7.517\n", |
|
|
2118 |
"2205 4.342\n", |
|
|
2119 |
"2206 8.418\n", |
|
|
2120 |
"2207 6.075\n", |
|
|
2121 |
"2208 6.924\n", |
|
|
2122 |
"2209 3.943\n", |
|
|
2123 |
"2210 5.080\n", |
|
|
2124 |
"2211 4.133\n", |
|
|
2125 |
"Name: eq. diam., dtype: float64\n", |
|
|
2126 |
"Nodule Detected at slice# 228 with actual coord [229, 139, 215]\n", |
|
|
2127 |
"Nodule Detected at slice# 229 with actual coord [229, 139, 215]\n", |
|
|
2128 |
"Nodule Detected at slice# 230 with actual coord [229, 139, 215]\n", |
|
|
2129 |
"Nodule Detected at slice# 275 with actual coord [276, 195, 178]\n", |
|
|
2130 |
"Nodule Detected at slice# 276 with actual coord [276, 195, 178]\n", |
|
|
2131 |
"Nodule Detected at slice# 277 with actual coord [276, 195, 178]\n", |
|
|
2132 |
"Nodule Detected at slice# 295 with actual coord [296, 108, 397]\n", |
|
|
2133 |
"Nodule Detected at slice# 296 with actual coord [296, 108, 397]\n", |
|
|
2134 |
"Nodule Detected at slice# 297 with actual coord [296, 108, 397]\n", |
|
|
2135 |
"Nodule Detected at slice# 287 with actual coord [288, 417, 362]\n", |
|
|
2136 |
"Nodule Detected at slice# 288 with actual coord [288, 417, 362]\n", |
|
|
2137 |
"Nodule Detected at slice# 289 with actual coord [288, 417, 362]\n", |
|
|
2138 |
"Nodule Detected at slice# 263 with actual coord [264, 129, 179]\n", |
|
|
2139 |
"Nodule Detected at slice# 264 with actual coord [264, 129, 179]\n", |
|
|
2140 |
"Nodule Detected at slice# 265 with actual coord [264, 129, 179]\n", |
|
|
2141 |
"Sensitivity: 0.40563991323210413\n", |
|
|
2142 |
"Specificity: 0.07061790668348046\n", |
|
|
2143 |
"Processing patient# 374 ETA: -3.1503513261436775 hrs\n", |
|
|
2144 |
"[[132, 321, 272], [293, 413, 166], [182, 166, 266]]\n", |
|
|
2145 |
"2212 4.579\n", |
|
|
2146 |
"2213 3.763\n", |
|
|
2147 |
"2214 10.749\n", |
|
|
2148 |
"Name: eq. diam., dtype: float64\n", |
|
|
2149 |
"Nodule Detected at slice# 181 with actual coord [182, 166, 266]\n", |
|
|
2150 |
"Nodule Detected at slice# 182 with actual coord [182, 166, 266]\n", |
|
|
2151 |
"Nodule Detected at slice# 183 with actual coord [182, 166, 266]\n", |
|
|
2152 |
"Sensitivity: 0.4051724137931034\n", |
|
|
2153 |
"Specificity: 0.07057349665924276\n", |
|
|
2154 |
"Processing patient# 375 ETA: -3.192826619232142 hrs\n", |
|
|
2155 |
"[[87, 297, 176], [211, 116, 151]]\n", |
|
|
2156 |
"2215 3.895\n", |
|
|
2157 |
"2216 6.987\n", |
|
|
2158 |
"Name: eq. diam., dtype: float64\n", |
|
|
2159 |
"Nodule Detected at slice# 210 with actual coord [211, 116, 151]\n", |
|
|
2160 |
"Nodule Detected at slice# 211 with actual coord [211, 116, 151]\n", |
|
|
2161 |
"Nodule Detected at slice# 212 with actual coord [211, 116, 151]\n", |
|
|
2162 |
"Sensitivity: 0.4055793991416309\n", |
|
|
2163 |
"Specificity: 0.0691619202603743\n", |
|
|
2164 |
"Processing patient# 376 ETA: -3.237334467527714 hrs\n", |
|
|
2165 |
"[[24, 401, 291], [28, 360, 208]]\n", |
|
|
2166 |
"2217 3.898\n", |
|
|
2167 |
"2218 4.726\n", |
|
|
2168 |
"Name: eq. diam., dtype: float64\n", |
|
|
2169 |
"Sensitivity: 0.40384615384615385\n", |
|
|
2170 |
"Specificity: 0.06911505624068302\n", |
|
|
2171 |
"Processing patient# 377 ETA: -3.2596919145134042 hrs\n", |
|
|
2172 |
"[[60, 323, 395]]\n", |
|
|
2173 |
"2219 4.095\n", |
|
|
2174 |
"Name: eq. diam., dtype: float64\n", |
|
|
2175 |
"Sensitivity: 0.40298507462686567\n", |
|
|
2176 |
"Specificity: 0.06900284129346503\n", |
|
|
2177 |
"Processing patient# 378 ETA: -3.278818171113327 hrs\n", |
|
|
2178 |
"[[89, 111, 367]]\n", |
|
|
2179 |
"2220 5.201\n", |
|
|
2180 |
"Name: eq. diam., dtype: float64\n", |
|
|
2181 |
"Nodule Detected at slice# 88 with actual coord [89, 111, 367]\n", |
|
|
2182 |
"Nodule Detected at slice# 89 with actual coord [89, 111, 367]\n", |
|
|
2183 |
"Nodule Detected at slice# 90 with actual coord [89, 111, 367]\n", |
|
|
2184 |
"Sensitivity: 0.40425531914893614\n", |
|
|
2185 |
"Specificity: 0.06932432432432432\n", |
|
|
2186 |
"Processing patient# 379 ETA: -3.3091597370383536 hrs\n", |
|
|
2187 |
"[[196, 371, 137], [155, 290, 243], [399, 39, 283], [210, 64, 233], [158, 397, 293], [332, 436, 352], [154, 304, 261]]\n", |
|
|
2188 |
"2221 3.744\n", |
|
|
2189 |
"2222 8.259\n", |
|
|
2190 |
"2223 4.911\n", |
|
|
2191 |
"2224 3.658\n", |
|
|
2192 |
"2225 6.005\n", |
|
|
2193 |
"2226 5.015\n", |
|
|
2194 |
"2227 9.895\n", |
|
|
2195 |
"Name: eq. diam., dtype: float64\n", |
|
|
2196 |
"Nodule Detected at slice# 157 with actual coord [158, 397, 293]\n", |
|
|
2197 |
"Nodule Detected at slice# 158 with actual coord [158, 397, 293]\n", |
|
|
2198 |
"Nodule Detected at slice# 159 with actual coord [158, 397, 293]\n", |
|
|
2199 |
"Nodule Detected at slice# 331 with actual coord [332, 436, 352]\n", |
|
|
2200 |
"Nodule Detected at slice# 332 with actual coord [332, 436, 352]\n", |
|
|
2201 |
"Nodule Detected at slice# 333 with actual coord [332, 436, 352]\n", |
|
|
2202 |
"Nodule Detected at slice# 155 with actual coord [154, 304, 261]\n", |
|
|
2203 |
"Sensitivity: 0.40461215932914046\n", |
|
|
2204 |
"Specificity: 0.06970509383378017\n", |
|
|
2205 |
"Processing patient# 380 ETA: -3.3505196650718387 hrs\n", |
|
|
2206 |
"[[150, 418, 153], [99, 126, 287], [189, 91, 175]]\n", |
|
|
2207 |
"2228 3.140\n", |
|
|
2208 |
"2229 5.016\n", |
|
|
2209 |
"2230 16.141\n", |
|
|
2210 |
"Name: eq. diam., dtype: float64\n", |
|
|
2211 |
"Nodule Detected at slice# 188 with actual coord [189, 91, 175]\n", |
|
|
2212 |
"Nodule Detected at slice# 189 with actual coord [189, 91, 175]\n", |
|
|
2213 |
"Nodule Detected at slice# 190 with actual coord [189, 91, 175]\n", |
|
|
2214 |
"Sensitivity: 0.4041666666666667\n", |
|
|
2215 |
"Specificity: 0.069826435246996\n", |
|
|
2216 |
"Processing patient# 381 ETA: -3.382899270853623 hrs\n", |
|
|
2217 |
"[[121, 154, 339], [149, 138, 331], [151, 151, 313], [151, 352, 301]]\n", |
|
|
2218 |
"2231 4.183\n", |
|
|
2219 |
"2232 4.997\n", |
|
|
2220 |
"2233 6.015\n", |
|
|
2221 |
"2234 4.857\n", |
|
|
2222 |
"Name: eq. diam., dtype: float64\n", |
|
|
2223 |
"Nodule Detected at slice# 150 with actual coord [151, 151, 313]\n", |
|
|
2224 |
"Nodule Detected at slice# 151 with actual coord [151, 151, 313]\n", |
|
|
2225 |
"Nodule Detected at slice# 152 with actual coord [151, 151, 313]\n", |
|
|
2226 |
"Sensitivity: 0.40289256198347106\n", |
|
|
2227 |
"Specificity: 0.06992821058229194\n", |
|
|
2228 |
"Processing patient# 382 ETA: -3.412722591825042 hrs\n", |
|
|
2229 |
"[[77, 102, 223], [38, 126, 341]]\n", |
|
|
2230 |
"2235 4.836\n", |
|
|
2231 |
"2236 6.953\n", |
|
|
2232 |
"Name: eq. diam., dtype: float64\n", |
|
|
2233 |
"Nodule Detected at slice# 37 with actual coord [38, 126, 341]\n", |
|
|
2234 |
"Nodule Detected at slice# 38 with actual coord [38, 126, 341]\n", |
|
|
2235 |
"Sensitivity: 0.40329218106995884\n", |
|
|
2236 |
"Specificity: 0.07000795544948289\n", |
|
|
2237 |
"Processing patient# 383 ETA: -3.4360059995605594 hrs\n", |
|
|
2238 |
"Processing patient# 384 ETA: -3.44578555987389 hrs\n", |
|
|
2239 |
"[[266, 81, 177], [198, 378, 150], [279, 99, 175], [308, 85, 162], [305, 451, 257], [249, 84, 209]]\n", |
|
|
2240 |
"2237 4.149\n", |
|
|
2241 |
"2238 2.869\n", |
|
|
2242 |
"2239 6.631\n", |
|
|
2243 |
"2240 4.205\n", |
|
|
2244 |
"2241 5.773\n", |
|
|
2245 |
"2242 3.171\n", |
|
|
2246 |
"Name: eq. diam., dtype: float64\n" |
|
|
2247 |
] |
|
|
2248 |
}, |
|
|
2249 |
{ |
|
|
2250 |
"name": "stdout", |
|
|
2251 |
"output_type": "stream", |
|
|
2252 |
"text": [ |
|
|
2253 |
"Nodule Detected at slice# 278 with actual coord [279, 99, 175]\n", |
|
|
2254 |
"Nodule Detected at slice# 279 with actual coord [279, 99, 175]\n", |
|
|
2255 |
"Nodule Detected at slice# 280 with actual coord [279, 99, 175]\n", |
|
|
2256 |
"Nodule Detected at slice# 304 with actual coord [305, 451, 257]\n", |
|
|
2257 |
"Nodule Detected at slice# 305 with actual coord [305, 451, 257]\n", |
|
|
2258 |
"Nodule Detected at slice# 306 with actual coord [305, 451, 257]\n", |
|
|
2259 |
"Sensitivity: 0.4024390243902439\n", |
|
|
2260 |
"Specificity: 0.07042067783199261\n", |
|
|
2261 |
"Processing patient# 385 ETA: -3.4872073284286094 hrs\n", |
|
|
2262 |
"[[73, 192, 122], [43, 75, 310], [60, 173, 137], [12, 191, 295], [57, 85, 302], [17, 335, 305], [19, 195, 315], [41, 203, 344], [33, 109, 265], [79, 460, 229], [47, 411, 310], [41, 185, 349], [41, 393, 322], [67, 453, 242], [60, 381, 396], [77, 450, 309]]\n", |
|
|
2263 |
"2243 4.555\n", |
|
|
2264 |
"2244 4.732\n", |
|
|
2265 |
"2245 5.739\n", |
|
|
2266 |
"2246 5.051\n", |
|
|
2267 |
"2247 4.995\n", |
|
|
2268 |
"2248 5.089\n", |
|
|
2269 |
"2249 5.636\n", |
|
|
2270 |
"2250 4.732\n", |
|
|
2271 |
"2251 4.975\n", |
|
|
2272 |
"2252 8.312\n", |
|
|
2273 |
"2253 4.207\n", |
|
|
2274 |
"2254 5.465\n", |
|
|
2275 |
"2255 5.301\n", |
|
|
2276 |
"2256 7.478\n", |
|
|
2277 |
"2257 4.645\n", |
|
|
2278 |
"2258 8.586\n", |
|
|
2279 |
"Name: eq. diam., dtype: float64\n", |
|
|
2280 |
"Nodule Detected at slice# 60 with actual coord [60, 173, 137]\n", |
|
|
2281 |
"Nodule Detected at slice# 12 with actual coord [12, 191, 295]\n", |
|
|
2282 |
"Nodule Detected at slice# 13 with actual coord [12, 191, 295]\n", |
|
|
2283 |
"Nodule Detected at slice# 17 with actual coord [17, 335, 305]\n", |
|
|
2284 |
"Nodule Detected at slice# 19 with actual coord [19, 195, 315]\n", |
|
|
2285 |
"Nodule Detected at slice# 20 with actual coord [19, 195, 315]\n", |
|
|
2286 |
"Nodule Detected at slice# 79 with actual coord [79, 460, 229]\n", |
|
|
2287 |
"Nodule Detected at slice# 80 with actual coord [79, 460, 229]\n", |
|
|
2288 |
"Nodule Detected at slice# 41 with actual coord [41, 185, 349]\n", |
|
|
2289 |
"Nodule Detected at slice# 67 with actual coord [67, 453, 242]\n", |
|
|
2290 |
"Nodule Detected at slice# 76 with actual coord [77, 450, 309]\n", |
|
|
2291 |
"Nodule Detected at slice# 77 with actual coord [77, 450, 309]\n", |
|
|
2292 |
"Nodule Detected at slice# 78 with actual coord [77, 450, 309]\n", |
|
|
2293 |
"Sensitivity: 0.40551181102362205\n", |
|
|
2294 |
"Specificity: 0.07189800210304942\n", |
|
|
2295 |
"Processing patient# 386 ETA: -3.5051857701391755 hrs\n", |
|
|
2296 |
"[[47, 363, 268]]\n", |
|
|
2297 |
"2259 3.259\n", |
|
|
2298 |
"Name: eq. diam., dtype: float64\n", |
|
|
2299 |
"Sensitivity: 0.40471512770137524\n", |
|
|
2300 |
"Specificity: 0.07170009175514484\n", |
|
|
2301 |
"Processing patient# 387 ETA: -3.5533651142227494 hrs\n", |
|
|
2302 |
"[[269, 119, 178], [215, 410, 367]]\n", |
|
|
2303 |
"2260 5.003\n", |
|
|
2304 |
"2261 2.032\n", |
|
|
2305 |
"Name: eq. diam., dtype: float64\n", |
|
|
2306 |
"Nodule Detected at slice# 268 with actual coord [269, 119, 178]\n", |
|
|
2307 |
"Nodule Detected at slice# 269 with actual coord [269, 119, 178]\n", |
|
|
2308 |
"Nodule Detected at slice# 270 with actual coord [269, 119, 178]\n", |
|
|
2309 |
"Sensitivity: 0.4050880626223092\n", |
|
|
2310 |
"Specificity: 0.07167991659064252\n", |
|
|
2311 |
"Processing patient# 388 ETA: -3.5894986695249194 hrs\n", |
|
|
2312 |
"[[180, 388, 183], [132, 185, 155], [173, 157, 309], [107, 368, 207], [133, 398, 257], [247, 427, 297], [173, 364, 286], [199, 112, 181], [125, 185, 395], [269, 94, 321], [237, 135, 325], [74, 145, 278], [170, 411, 235]]\n", |
|
|
2313 |
"2262 4.745\n", |
|
|
2314 |
"2263 3.171\n", |
|
|
2315 |
"2264 4.736\n", |
|
|
2316 |
"2265 2.916\n", |
|
|
2317 |
"2266 4.544\n", |
|
|
2318 |
"2267 7.341\n", |
|
|
2319 |
"2268 6.286\n", |
|
|
2320 |
"2269 3.994\n", |
|
|
2321 |
"2270 8.685\n", |
|
|
2322 |
"2271 3.228\n", |
|
|
2323 |
"2272 9.013\n", |
|
|
2324 |
"2273 4.386\n", |
|
|
2325 |
"2274 2.962\n", |
|
|
2326 |
"Name: eq. diam., dtype: float64\n", |
|
|
2327 |
"Nodule Detected at slice# 246 with actual coord [247, 427, 297]\n", |
|
|
2328 |
"Nodule Detected at slice# 247 with actual coord [247, 427, 297]\n", |
|
|
2329 |
"Nodule Detected at slice# 248 with actual coord [247, 427, 297]\n", |
|
|
2330 |
"Nodule Detected at slice# 124 with actual coord [125, 185, 395]\n", |
|
|
2331 |
"Nodule Detected at slice# 125 with actual coord [125, 185, 395]\n", |
|
|
2332 |
"Nodule Detected at slice# 126 with actual coord [125, 185, 395]\n", |
|
|
2333 |
"Nodule Detected at slice# 236 with actual coord [237, 135, 325]\n", |
|
|
2334 |
"Nodule Detected at slice# 237 with actual coord [237, 135, 325]\n", |
|
|
2335 |
"Nodule Detected at slice# 238 with actual coord [237, 135, 325]\n", |
|
|
2336 |
"Sensitivity: 0.40076335877862596\n", |
|
|
2337 |
"Specificity: 0.07214765100671142\n", |
|
|
2338 |
"Processing patient# 389 ETA: -3.637720636394459 hrs\n", |
|
|
2339 |
"[[88, 435, 238]]\n", |
|
|
2340 |
"2275 3.644\n", |
|
|
2341 |
"Name: eq. diam., dtype: float64\n", |
|
|
2342 |
"Sensitivity: 0.4\n", |
|
|
2343 |
"Specificity: 0.07190635451505016\n", |
|
|
2344 |
"Processing patient# 390 ETA: -3.6674616115096628 hrs\n", |
|
|
2345 |
"[[103, 357, 356], [33, 327, 305]]\n", |
|
|
2346 |
"2276 7.922\n", |
|
|
2347 |
"2277 8.351\n", |
|
|
2348 |
"Name: eq. diam., dtype: float64\n", |
|
|
2349 |
"Nodule Detected at slice# 102 with actual coord [103, 357, 356]\n", |
|
|
2350 |
"Nodule Detected at slice# 103 with actual coord [103, 357, 356]\n", |
|
|
2351 |
"Nodule Detected at slice# 104 with actual coord [103, 357, 356]\n", |
|
|
2352 |
"Nodule Detected at slice# 32 with actual coord [33, 327, 305]\n", |
|
|
2353 |
"Nodule Detected at slice# 33 with actual coord [33, 327, 305]\n", |
|
|
2354 |
"Nodule Detected at slice# 34 with actual coord [33, 327, 305]\n", |
|
|
2355 |
"Sensitivity: 0.40227703984819735\n", |
|
|
2356 |
"Specificity: 0.07247306310928682\n", |
|
|
2357 |
"Processing patient# 391 ETA: -3.6925366023981496 hrs\n", |
|
|
2358 |
"[[47, 213, 294], [63, 323, 402]]\n", |
|
|
2359 |
"2278 18.213\n", |
|
|
2360 |
"2279 5.824\n", |
|
|
2361 |
"Name: eq. diam., dtype: float64\n", |
|
|
2362 |
"Nodule Detected at slice# 46 with actual coord [47, 213, 294]\n", |
|
|
2363 |
"Nodule Detected at slice# 47 with actual coord [47, 213, 294]\n", |
|
|
2364 |
"Nodule Detected at slice# 48 with actual coord [47, 213, 294]\n", |
|
|
2365 |
"Nodule Detected at slice# 63 with actual coord [63, 323, 402]\n", |
|
|
2366 |
"Nodule Detected at slice# 64 with actual coord [63, 323, 402]\n", |
|
|
2367 |
"Sensitivity: 0.4045368620037807\n", |
|
|
2368 |
"Specificity: 0.072992700729927\n", |
|
|
2369 |
"Processing patient# 392 ETA: -3.7106697891845184 hrs\n", |
|
|
2370 |
"Processing patient# 393 ETA: -3.7205055191205454 hrs\n", |
|
|
2371 |
"[[185, 136, 238], [235, 74, 207]]\n", |
|
|
2372 |
"2280 5.004\n", |
|
|
2373 |
"2281 7.739\n", |
|
|
2374 |
"Name: eq. diam., dtype: float64\n", |
|
|
2375 |
"Nodule Detected at slice# 234 with actual coord [235, 74, 207]\n", |
|
|
2376 |
"Nodule Detected at slice# 235 with actual coord [235, 74, 207]\n", |
|
|
2377 |
"Nodule Detected at slice# 236 with actual coord [235, 74, 207]\n", |
|
|
2378 |
"Sensitivity: 0.4048964218455744\n", |
|
|
2379 |
"Specificity: 0.07286368260427263\n", |
|
|
2380 |
"Processing patient# 394 ETA: -3.7636868399398447 hrs\n", |
|
|
2381 |
"[[157, 469, 294], [129, 72, 183], [100, 434, 375]]\n", |
|
|
2382 |
"2282 5.358\n", |
|
|
2383 |
"2283 5.803\n", |
|
|
2384 |
"2284 3.977\n", |
|
|
2385 |
"Name: eq. diam., dtype: float64\n", |
|
|
2386 |
"Nodule Detected at slice# 156 with actual coord [157, 469, 294]\n", |
|
|
2387 |
"Nodule Detected at slice# 157 with actual coord [157, 469, 294]\n", |
|
|
2388 |
"Nodule Detected at slice# 158 with actual coord [157, 469, 294]\n", |
|
|
2389 |
"Sensitivity: 0.4044943820224719\n", |
|
|
2390 |
"Specificity: 0.07307789901040346\n", |
|
|
2391 |
"Processing patient# 395 ETA: -3.7904552509915477 hrs\n", |
|
|
2392 |
"[[98, 189, 265]]\n", |
|
|
2393 |
"2285 20.686\n", |
|
|
2394 |
"Name: eq. diam., dtype: float64\n", |
|
|
2395 |
"Nodule Detected at slice# 98 with actual coord [98, 189, 265]\n", |
|
|
2396 |
"Nodule Detected at slice# 99 with actual coord [98, 189, 265]\n", |
|
|
2397 |
"Sensitivity: 0.405607476635514\n", |
|
|
2398 |
"Specificity: 0.07309978500063236\n", |
|
|
2399 |
"Processing patient# 396 ETA: -3.8098674097078553 hrs\n", |
|
|
2400 |
"[[51, 164, 214], [45, 211, 334], [89, 400, 182], [188, 456, 267], [187, 461, 324], [72, 126, 230], [23, 192, 264], [114, 146, 168], [134, 378, 397]]\n", |
|
|
2401 |
"2286 4.477\n", |
|
|
2402 |
"2287 4.205\n", |
|
|
2403 |
"2288 3.424\n", |
|
|
2404 |
"2289 6.038\n", |
|
|
2405 |
"2290 5.367\n", |
|
|
2406 |
"2291 4.137\n", |
|
|
2407 |
"2292 5.124\n", |
|
|
2408 |
"2293 4.292\n", |
|
|
2409 |
"2294 5.658\n", |
|
|
2410 |
"Name: eq. diam., dtype: float64\n", |
|
|
2411 |
"Nodule Detected at slice# 187 with actual coord [188, 456, 267]\n", |
|
|
2412 |
"Nodule Detected at slice# 188 with actual coord [188, 456, 267]\n", |
|
|
2413 |
"Nodule Detected at slice# 189 with actual coord [188, 456, 267]\n", |
|
|
2414 |
"Nodule Detected at slice# 186 with actual coord [187, 461, 324]\n", |
|
|
2415 |
"Nodule Detected at slice# 187 with actual coord [187, 461, 324]\n", |
|
|
2416 |
"Nodule Detected at slice# 133 with actual coord [134, 378, 397]\n", |
|
|
2417 |
"Nodule Detected at slice# 134 with actual coord [134, 378, 397]\n", |
|
|
2418 |
"Nodule Detected at slice# 135 with actual coord [134, 378, 397]\n", |
|
|
2419 |
"Sensitivity: 0.40441176470588236\n", |
|
|
2420 |
"Specificity: 0.0736404833836858\n", |
|
|
2421 |
"Processing patient# 397 ETA: -3.841024845880585 hrs\n", |
|
|
2422 |
"[[198, 136, 313], [233, 161, 202]]\n", |
|
|
2423 |
"2295 7.710\n", |
|
|
2424 |
"2296 4.552\n", |
|
|
2425 |
"Name: eq. diam., dtype: float64\n", |
|
|
2426 |
"Nodule Detected at slice# 197 with actual coord [198, 136, 313]\n", |
|
|
2427 |
"Nodule Detected at slice# 198 with actual coord [198, 136, 313]\n", |
|
|
2428 |
"Nodule Detected at slice# 199 with actual coord [198, 136, 313]\n", |
|
|
2429 |
"Sensitivity: 0.40476190476190477\n", |
|
|
2430 |
"Specificity: 0.07355516637478109\n", |
|
|
2431 |
"Processing patient# 398 ETA: -3.890861464127823 hrs\n", |
|
|
2432 |
"[[74, 93, 155], [49, 346, 298]]\n", |
|
|
2433 |
"2297 4.938\n", |
|
|
2434 |
"2298 4.805\n", |
|
|
2435 |
"Name: eq. diam., dtype: float64\n", |
|
|
2436 |
"Sensitivity: 0.4032846715328467\n", |
|
|
2437 |
"Specificity: 0.07354596622889306\n", |
|
|
2438 |
"Processing patient# 399 ETA: -3.911309088614617 hrs\n", |
|
|
2439 |
"[[174, 171, 252], [192, 165, 212], [211, 116, 296], [180, 112, 414]]\n", |
|
|
2440 |
"2299 5.342\n", |
|
|
2441 |
"2300 20.904\n", |
|
|
2442 |
"2301 4.450\n", |
|
|
2443 |
"2302 12.865\n", |
|
|
2444 |
"Name: eq. diam., dtype: float64\n", |
|
|
2445 |
"Nodule Detected at slice# 191 with actual coord [192, 165, 212]\n", |
|
|
2446 |
"Nodule Detected at slice# 192 with actual coord [192, 165, 212]\n", |
|
|
2447 |
"Nodule Detected at slice# 193 with actual coord [192, 165, 212]\n", |
|
|
2448 |
"Nodule Detected at slice# 179 with actual coord [180, 112, 414]\n", |
|
|
2449 |
"Nodule Detected at slice# 180 with actual coord [180, 112, 414]\n", |
|
|
2450 |
"Nodule Detected at slice# 181 with actual coord [180, 112, 414]\n", |
|
|
2451 |
"Sensitivity: 0.40398550724637683\n", |
|
|
2452 |
"Specificity: 0.07374301675977654\n", |
|
|
2453 |
"28390.67985391617\n" |
|
|
2454 |
] |
|
|
2455 |
} |
|
|
2456 |
], |
|
|
2457 |
"source": [ |
|
|
2458 |
"#maskedtumor=pix_resampled[int(coord[0])]*cmw_patient\n", |
|
|
2459 |
"start_time=time.time()\n", |
|
|
2460 |
"elapsed_time=0\n", |
|
|
2461 |
"totaltime=50000\n", |
|
|
2462 |
"noduleimages=np.ndarray([10000,512,512],dtype=np.float32)\n", |
|
|
2463 |
"#predictedemasks=np.ndarray([len(patients)*8,512,512],dtype=np.float32)\n", |
|
|
2464 |
"nodulelabels=[]\n", |
|
|
2465 |
"nodulesensitivity=[]\n", |
|
|
2466 |
"index=0\n", |
|
|
2467 |
"coordcount=0\n", |
|
|
2468 |
"coordtruecount=0\n", |
|
|
2469 |
"nodulecount=0\n", |
|
|
2470 |
"noduletruecount=0\n", |
|
|
2471 |
"slicecounts=[]\n", |
|
|
2472 |
"thresh=-500 #lower HU threshold for nodule segmentation\n", |
|
|
2473 |
"for i in range(197,400):\n", |
|
|
2474 |
" print(\"Processing patient#\",i,\"ETA:\",(totaltime-elapsed_time)/3600,\"hrs\")\n", |
|
|
2475 |
" if len(nodule_coordinates(nodulelocations,meta.iloc[i]))>0:\n", |
|
|
2476 |
" patient_scan=load_scan(patients[i])\n", |
|
|
2477 |
" slicecounts.append(len(patient_scan))\n", |
|
|
2478 |
" patient_pix=get_pixels_hu(patient_scan)\n", |
|
|
2479 |
" processed_pix = processimagefromfile(patient_pix)\n", |
|
|
2480 |
" coord = nodule_coordinates(nodulelocations,meta.iloc[i])\n", |
|
|
2481 |
" print(coord)\n", |
|
|
2482 |
" radius = nodulelocations[\"eq. diam.\"][nodulelocations.index[nodulelocations[\"case\"]==int(meta[\"Patient Id\"][i][-4:])]]\n", |
|
|
2483 |
" print(radius)\n", |
|
|
2484 |
" mask = predictmask(processed_pix)\n", |
|
|
2485 |
" noduleindex = getnoduleindex(mask) \n", |
|
|
2486 |
" labels = np.zeros(len(noduleindex)).astype(np.bool)\n", |
|
|
2487 |
" cordlabels=np.zeros(len(coord)).astype(np.bool)\n", |
|
|
2488 |
" for j,cord in enumerate(coord): #loop through labeled nodules\n", |
|
|
2489 |
" if radius.iloc[j]>5:\n", |
|
|
2490 |
" nodulemask = cmw.cell_magic_wand(-patient_pix[int(cord[0])],[int(cord[2]),int(cord[1])],2,int(radius.iloc[j])+2)\n", |
|
|
2491 |
" nodulepix=nodulemask*patient_pix[cord[0]]\n", |
|
|
2492 |
" nodulepix[nodulepix<thresh]=0\n", |
|
|
2493 |
" nodulepix[nodulepix!=0]=1\n", |
|
|
2494 |
" nodulemask=nodulepix.astype(np.bool)\n", |
|
|
2495 |
" for k,ind in enumerate(noduleindex): #loop through detected nodules\n", |
|
|
2496 |
" if abs(ind-cord[0])<2:\n", |
|
|
2497 |
" if np.sum(nodulemask*mask[ind][0])>1:\n", |
|
|
2498 |
" print(\"Nodule Detected at slice#\",ind,\"with actual coord\",cord)\n", |
|
|
2499 |
" labels[k] = True\n", |
|
|
2500 |
" cordlabels[j] = True\n", |
|
|
2501 |
"\n", |
|
|
2502 |
" for j in range(len(coord)):\n", |
|
|
2503 |
" nodulesensitivity.append(cordlabels[j])\n", |
|
|
2504 |
" \n", |
|
|
2505 |
" for k in range(len(noduleindex)):\n", |
|
|
2506 |
" nodulelabels.append(labels[k])\n", |
|
|
2507 |
" noduleimages[index]=processed_pix[noduleindex[k]]\n", |
|
|
2508 |
" index+=1\n", |
|
|
2509 |
" coordtruecount+=len(cordlabels[cordlabels==True])\n", |
|
|
2510 |
" noduletruecount+=len(labels[labels==True])\n", |
|
|
2511 |
" coordcount+=len(coord)\n", |
|
|
2512 |
" nodulecount+=len(noduleindex)\n", |
|
|
2513 |
" print(\"Sensitivity:\",coordtruecount/coordcount)\n", |
|
|
2514 |
" print(\"Specificity:\",noduletruecount/nodulecount)\n", |
|
|
2515 |
" elapsed_time=time.time()-start_time\n", |
|
|
2516 |
" totaltime=elapsed_time/(i+1)*200\n", |
|
|
2517 |
"print(elapsed_time)\n", |
|
|
2518 |
"noduleimages=noduleimages[:len(nodulelabels)]" |
|
|
2519 |
] |
|
|
2520 |
}, |
|
|
2521 |
{ |
|
|
2522 |
"cell_type": "code", |
|
|
2523 |
"execution_count": 8, |
|
|
2524 |
"metadata": { |
|
|
2525 |
"collapsed": true |
|
|
2526 |
}, |
|
|
2527 |
"outputs": [], |
|
|
2528 |
"source": [ |
|
|
2529 |
"noduleimages=noduleimages[:len(nodulelabels)]\n", |
|
|
2530 |
"noduleimages=noduleimages.reshape([noduleimages.shape[0],1,512,512])\n", |
|
|
2531 |
"nodulelabels=np.array(nodulelabels)\n", |
|
|
2532 |
"np.save(\"noduleimages197-399.npy\",noduleimages)\n", |
|
|
2533 |
"np.save(\"nodulelabels197-399.npy\",nodulelabels)" |
|
|
2534 |
] |
|
|
2535 |
}, |
|
|
2536 |
{ |
|
|
2537 |
"cell_type": "code", |
|
|
2538 |
"execution_count": 7, |
|
|
2539 |
"metadata": { |
|
|
2540 |
"collapsed": true |
|
|
2541 |
}, |
|
|
2542 |
"outputs": [], |
|
|
2543 |
"source": [ |
|
|
2544 |
"#noduleimages=np.load(\"noduleimages0-192.npy\")\n", |
|
|
2545 |
"nodulelabels=np.load(\"nodulelabels0-192.npy\")\n", |
|
|
2546 |
"#noduleimages=np.concatenate((noduleimages,np.load(\"noduleimages197-399.npy\")))\n", |
|
|
2547 |
"nodulelabels=np.concatenate((nodulelabels,np.load(\"nodulelabels197-399.npy\")))" |
|
|
2548 |
] |
|
|
2549 |
}, |
|
|
2550 |
{ |
|
|
2551 |
"cell_type": "code", |
|
|
2552 |
"execution_count": 12, |
|
|
2553 |
"metadata": {}, |
|
|
2554 |
"outputs": [ |
|
|
2555 |
{ |
|
|
2556 |
"name": "stdout", |
|
|
2557 |
"output_type": "stream", |
|
|
2558 |
"text": [ |
|
|
2559 |
"Number of True Positive nodules: 1336\n", |
|
|
2560 |
"Number of False Positive nodules: 14856\n", |
|
|
2561 |
"# of FPs per TP 11.119760479041917\n" |
|
|
2562 |
] |
|
|
2563 |
} |
|
|
2564 |
], |
|
|
2565 |
"source": [ |
|
|
2566 |
"TP=len([nl for nl in nodulelabels if nl==True])\n", |
|
|
2567 |
"FP=len([nl for nl in nodulelabels if nl==False])\n", |
|
|
2568 |
"print(\"Number of True Positive nodules:\",TP)\n", |
|
|
2569 |
"print(\"Number of False Positive nodules:\",FP)\n", |
|
|
2570 |
"print(\"# of FPs per TP\",FP/TP)\n" |
|
|
2571 |
] |
|
|
2572 |
}, |
|
|
2573 |
{ |
|
|
2574 |
"cell_type": "code", |
|
|
2575 |
"execution_count": 84, |
|
|
2576 |
"metadata": { |
|
|
2577 |
"collapsed": true |
|
|
2578 |
}, |
|
|
2579 |
"outputs": [], |
|
|
2580 |
"source": [ |
|
|
2581 |
"noduleimagestrue=np.load(\"noduleimagesv3.npy\")\n", |
|
|
2582 |
"falseind=[i for i in range(len(nodulelabels)) if nodulelabels[i]==False]\n", |
|
|
2583 |
"random.shuffle(falseind)\n", |
|
|
2584 |
"falseind=falseind[:noduleimagestrue.shape[0]]\n", |
|
|
2585 |
"noduleimagesfalse=np.array([noduleimages[i] for i in falseind])\n", |
|
|
2586 |
"del noduleimages\n", |
|
|
2587 |
"noduleimagesbalanced=np.concatenate((noduleimagestrue,noduleimagesfalse.reshape(noduleimagesfalse.shape[0],1,512,512)),axis=0)\n", |
|
|
2588 |
"nodulelabelsbalanced=[True]*noduleimagestrue.shape[0]+[False]*noduleimagesfalse.shape[0]\n", |
|
|
2589 |
"nodulelabelsbalanced=to_categorical(nodulelabelsbalanced,2)\n", |
|
|
2590 |
"del noduleimagestrue,noduleimagesfalse\n", |
|
|
2591 |
"Xtrain, Xtest, Ytrain, Ytest = train_test_split(noduleimagesbalanced,nodulelabelsbalanced,test_size=.30)\n", |
|
|
2592 |
"del noduleimagesbalanced, nodulelabelsbalanced" |
|
|
2593 |
] |
|
|
2594 |
}, |
|
|
2595 |
{ |
|
|
2596 |
"cell_type": "code", |
|
|
2597 |
"execution_count": 90, |
|
|
2598 |
"metadata": { |
|
|
2599 |
"scrolled": false |
|
|
2600 |
}, |
|
|
2601 |
"outputs": [ |
|
|
2602 |
{ |
|
|
2603 |
"name": "stdout", |
|
|
2604 |
"output_type": "stream", |
|
|
2605 |
"text": [ |
|
|
2606 |
"Train on 7032 samples, validate on 3014 samples\n", |
|
|
2607 |
"Epoch 1/20\n", |
|
|
2608 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.6701 - acc: 0.5709Epoch 00000: loss improved from inf to 0.67013, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2609 |
"7032/7032 [==============================] - 463s - loss: 0.6701 - acc: 0.5708 - val_loss: 0.6254 - val_acc: 0.6676\n", |
|
|
2610 |
"Epoch 2/20\n", |
|
|
2611 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.6036 - acc: 0.6505Epoch 00001: loss improved from 0.67013 to 0.60376, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2612 |
"7032/7032 [==============================] - 461s - loss: 0.6038 - acc: 0.6503 - val_loss: 0.5821 - val_acc: 0.6981\n", |
|
|
2613 |
"Epoch 3/20\n", |
|
|
2614 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.5434 - acc: 0.6982Epoch 00002: loss improved from 0.60376 to 0.54359, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2615 |
"7032/7032 [==============================] - 458s - loss: 0.5436 - acc: 0.6981 - val_loss: 0.5493 - val_acc: 0.7283\n", |
|
|
2616 |
"Epoch 4/20\n", |
|
|
2617 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.4905 - acc: 0.7462Epoch 00003: loss improved from 0.54359 to 0.49050, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2618 |
"7032/7032 [==============================] - 457s - loss: 0.4905 - acc: 0.7460 - val_loss: 0.5110 - val_acc: 0.7565\n", |
|
|
2619 |
"Epoch 5/20\n", |
|
|
2620 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.4400 - acc: 0.7830Epoch 00004: loss improved from 0.49050 to 0.43996, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2621 |
"7032/7032 [==============================] - 456s - loss: 0.4400 - acc: 0.7831 - val_loss: 0.4842 - val_acc: 0.7704\n", |
|
|
2622 |
"Epoch 6/20\n", |
|
|
2623 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.3978 - acc: 0.8068Epoch 00005: loss improved from 0.43996 to 0.39774, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2624 |
"7032/7032 [==============================] - 455s - loss: 0.3977 - acc: 0.8069 - val_loss: 0.4702 - val_acc: 0.7731\n", |
|
|
2625 |
"Epoch 7/20\n", |
|
|
2626 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.3501 - acc: 0.8368Epoch 00006: loss improved from 0.39774 to 0.35043, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2627 |
"7032/7032 [==============================] - 455s - loss: 0.3504 - acc: 0.8365 - val_loss: 0.4465 - val_acc: 0.7906\n", |
|
|
2628 |
"Epoch 8/20\n", |
|
|
2629 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.3224 - acc: 0.8586Epoch 00007: loss improved from 0.35043 to 0.32226, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2630 |
"7032/7032 [==============================] - 455s - loss: 0.3223 - acc: 0.8586 - val_loss: 0.4299 - val_acc: 0.8019\n", |
|
|
2631 |
"Epoch 9/20\n", |
|
|
2632 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.2871 - acc: 0.8717Epoch 00008: loss improved from 0.32226 to 0.28703, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2633 |
"7032/7032 [==============================] - 455s - loss: 0.2870 - acc: 0.8717 - val_loss: 0.4381 - val_acc: 0.7960\n", |
|
|
2634 |
"Epoch 10/20\n", |
|
|
2635 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.2671 - acc: 0.8796Epoch 00009: loss improved from 0.28703 to 0.26707, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2636 |
"7032/7032 [==============================] - 455s - loss: 0.2671 - acc: 0.8797 - val_loss: 0.4083 - val_acc: 0.8149\n", |
|
|
2637 |
"Epoch 11/20\n", |
|
|
2638 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.2485 - acc: 0.8900Epoch 00010: loss improved from 0.26707 to 0.24853, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2639 |
"7032/7032 [==============================] - 455s - loss: 0.2485 - acc: 0.8901 - val_loss: 0.4103 - val_acc: 0.8162\n", |
|
|
2640 |
"Epoch 12/20\n", |
|
|
2641 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.2226 - acc: 0.9051Epoch 00011: loss improved from 0.24853 to 0.22252, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2642 |
"7032/7032 [==============================] - 456s - loss: 0.2225 - acc: 0.9051 - val_loss: 0.4034 - val_acc: 0.8275\n", |
|
|
2643 |
"Epoch 13/20\n", |
|
|
2644 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.2103 - acc: 0.9099Epoch 00012: loss improved from 0.22252 to 0.21038, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2645 |
"7032/7032 [==============================] - 456s - loss: 0.2104 - acc: 0.9098 - val_loss: 0.4086 - val_acc: 0.8321\n", |
|
|
2646 |
"Epoch 14/20\n", |
|
|
2647 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.1949 - acc: 0.9169Epoch 00013: loss improved from 0.21038 to 0.19480, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2648 |
"7032/7032 [==============================] - 456s - loss: 0.1948 - acc: 0.9170 - val_loss: 0.4247 - val_acc: 0.8235\n", |
|
|
2649 |
"Epoch 15/20\n", |
|
|
2650 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.1785 - acc: 0.9287Epoch 00014: loss improved from 0.19480 to 0.17869, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2651 |
"7032/7032 [==============================] - 455s - loss: 0.1787 - acc: 0.9285 - val_loss: 0.4020 - val_acc: 0.8328\n", |
|
|
2652 |
"Epoch 16/20\n", |
|
|
2653 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.1606 - acc: 0.9368Epoch 00015: loss improved from 0.17869 to 0.16055, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2654 |
"7032/7032 [==============================] - 455s - loss: 0.1606 - acc: 0.9369 - val_loss: 0.4224 - val_acc: 0.8301\n", |
|
|
2655 |
"Epoch 17/20\n", |
|
|
2656 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.1600 - acc: 0.9347Epoch 00016: loss improved from 0.16055 to 0.15991, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2657 |
"7032/7032 [==============================] - 455s - loss: 0.1599 - acc: 0.9347 - val_loss: 0.4110 - val_acc: 0.8374\n", |
|
|
2658 |
"Epoch 18/20\n", |
|
|
2659 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.1463 - acc: 0.9407Epoch 00017: loss improved from 0.15991 to 0.14649, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2660 |
"7032/7032 [==============================] - 455s - loss: 0.1465 - acc: 0.9406 - val_loss: 0.4141 - val_acc: 0.8361\n", |
|
|
2661 |
"Epoch 19/20\n", |
|
|
2662 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.1413 - acc: 0.9405Epoch 00018: loss improved from 0.14649 to 0.14119, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2663 |
"7032/7032 [==============================] - 455s - loss: 0.1412 - acc: 0.9406 - val_loss: 0.4146 - val_acc: 0.8454\n", |
|
|
2664 |
"Epoch 20/20\n", |
|
|
2665 |
"7028/7032 [============================>.] - ETA: 0s - loss: 0.1333 - acc: 0.9459Epoch 00019: loss improved from 0.14119 to 0.13350, saving model to truenodule-cnn-weights-improvement2.hdf5\n", |
|
|
2666 |
"7032/7032 [==============================] - 455s - loss: 0.1335 - acc: 0.9458 - val_loss: 0.4118 - val_acc: 0.8437\n" |
|
|
2667 |
] |
|
|
2668 |
} |
|
|
2669 |
], |
|
|
2670 |
"source": [ |
|
|
2671 |
"#classify as nodule or non-nodule\n", |
|
|
2672 |
"input_shape=(1,512,512)\n", |
|
|
2673 |
"num_classes=2\n", |
|
|
2674 |
"model = Sequential()\n", |
|
|
2675 |
"model.add(Conv2D(8, kernel_size=(3, 3),\n", |
|
|
2676 |
" activation='relu',\n", |
|
|
2677 |
" input_shape=input_shape))\n", |
|
|
2678 |
"model.add(Conv2D(16, (3, 3), activation='relu'))\n", |
|
|
2679 |
"model.add(MaxPooling2D(pool_size=(2, 2)))\n", |
|
|
2680 |
"model.add(Dropout(0.25))\n", |
|
|
2681 |
"model.add(Flatten())\n", |
|
|
2682 |
"model.add(Dense(32, activation='relu'))\n", |
|
|
2683 |
"model.add(Dropout(0.5))\n", |
|
|
2684 |
"model.add(Dense(num_classes, activation='softmax'))\n", |
|
|
2685 |
"\n", |
|
|
2686 |
"model.compile(loss=keras.losses.binary_crossentropy,\n", |
|
|
2687 |
" optimizer=Adam(lr=1e-5),\n", |
|
|
2688 |
" metrics=['accuracy'])\n", |
|
|
2689 |
"\n", |
|
|
2690 |
"\n", |
|
|
2691 |
"#model.load_weights(truenoduleweightspath)\n", |
|
|
2692 |
"\n", |
|
|
2693 |
"checkpoint = ModelCheckpoint(truenoduleweightspath, monitor='loss', verbose=1, save_best_only=True)\n", |
|
|
2694 |
"\n", |
|
|
2695 |
"history=model.fit(Xtrain, Ytrain, batch_size=4, epochs=20, verbose=1, shuffle=True, callbacks=[checkpoint], validation_data=(Xtest,Ytest))" |
|
|
2696 |
] |
|
|
2697 |
}, |
|
|
2698 |
{ |
|
|
2699 |
"cell_type": "code", |
|
|
2700 |
"execution_count": 101, |
|
|
2701 |
"metadata": {}, |
|
|
2702 |
"outputs": [ |
|
|
2703 |
{ |
|
|
2704 |
"data": { |
|
|
2705 |
"image/png": "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\narKkh6vq0QAAAABJRU5ErkJggg==\n", |
|
|
2706 |
"text/plain": [ |
|
|
2707 |
"<matplotlib.figure.Figure at 0x134b27f0>" |
|
|
2708 |
] |
|
|
2709 |
}, |
|
|
2710 |
"metadata": {}, |
|
|
2711 |
"output_type": "display_data" |
|
|
2712 |
}, |
|
|
2713 |
{ |
|
|
2714 |
"data": { |
|
|
2715 |
"image/png": "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\n6tHg5wAAAABJRU5ErkJggg==\n", |
|
|
2716 |
"text/plain": [ |
|
|
2717 |
"<matplotlib.figure.Figure at 0x13499dd8>" |
|
|
2718 |
] |
|
|
2719 |
}, |
|
|
2720 |
"metadata": {}, |
|
|
2721 |
"output_type": "display_data" |
|
|
2722 |
} |
|
|
2723 |
], |
|
|
2724 |
"source": [ |
|
|
2725 |
"plt.plot(history.history['loss'], color='b')\n", |
|
|
2726 |
"plt.plot(history.history['val_loss'], color='g')\n", |
|
|
2727 |
"plt.xlabel(\"Epoch\")\n", |
|
|
2728 |
"plt.ylabel(\"Log Loss\")\n", |
|
|
2729 |
"plt.legend([\"Train\", \"Validation\"])\n", |
|
|
2730 |
"plt.show()\n", |
|
|
2731 |
"plt.plot(history.history['acc'], color='b')\n", |
|
|
2732 |
"plt.plot(history.history['val_acc'], color='g')\n", |
|
|
2733 |
"plt.xlabel(\"Epoch\")\n", |
|
|
2734 |
"plt.ylabel(\"Accuracy\")\n", |
|
|
2735 |
"plt.legend([\"Train\", \"Validation\"])\n", |
|
|
2736 |
"plt.show()" |
|
|
2737 |
] |
|
|
2738 |
}, |
|
|
2739 |
{ |
|
|
2740 |
"cell_type": "code", |
|
|
2741 |
"execution_count": 99, |
|
|
2742 |
"metadata": {}, |
|
|
2743 |
"outputs": [ |
|
|
2744 |
{ |
|
|
2745 |
"name": "stdout", |
|
|
2746 |
"output_type": "stream", |
|
|
2747 |
"text": [ |
|
|
2748 |
"1531/1531 [==============================] - 8s \n", |
|
|
2749 |
"1483/1483 [==============================] - 8s \n" |
|
|
2750 |
] |
|
|
2751 |
} |
|
|
2752 |
], |
|
|
2753 |
"source": [ |
|
|
2754 |
"XtestTrue=np.array([Xtest[i] for i in range(Ytest.shape[0]) if Ytest[i,1]==1])\n", |
|
|
2755 |
"YtestTrue=np.array([Ytest[i] for i in range(Ytest.shape[0]) if Ytest[i,1]==1])\n", |
|
|
2756 |
"XtestFalse=np.array([Xtest[i] for i in range(Ytest.shape[0]) if Ytest[i,1]==0])\n", |
|
|
2757 |
"YtestFalse=np.array([Ytest[i] for i in range(Ytest.shape[0]) if Ytest[i,1]==0])\n", |
|
|
2758 |
"\n", |
|
|
2759 |
"scoretrue=model.evaluate(XtestTrue,YtestTrue)\n", |
|
|
2760 |
"scorefalse=model.evaluate(XtestFalse,YtestFalse)" |
|
|
2761 |
] |
|
|
2762 |
}, |
|
|
2763 |
{ |
|
|
2764 |
"cell_type": "code", |
|
|
2765 |
"execution_count": 100, |
|
|
2766 |
"metadata": {}, |
|
|
2767 |
"outputs": [ |
|
|
2768 |
{ |
|
|
2769 |
"name": "stdout", |
|
|
2770 |
"output_type": "stream", |
|
|
2771 |
"text": [ |
|
|
2772 |
"Sensitivity: 0.7477\n", |
|
|
2773 |
"FP Rate/slice: 0.06030808390063514\n", |
|
|
2774 |
"FP Rate/slice after nodule classification: 0.0110205601612\n", |
|
|
2775 |
"Sensitivity after nodule classification: 0.650025277771\n" |
|
|
2776 |
] |
|
|
2777 |
} |
|
|
2778 |
], |
|
|
2779 |
"source": [ |
|
|
2780 |
"print(\"Sensitivity:\", 0.7477) #Evaluated from 2TrainUnet.ipynb\n", |
|
|
2781 |
"print(\"FP Rate/slice:\", len(falseind)/(sum(slicecounts+slicecounts2)))\n", |
|
|
2782 |
"print(\"FP Rate/slice after nodule classification:\", len(falseind)*(1-scorefalse[1])/(sum(slicecounts+slicecounts2)))\n", |
|
|
2783 |
"print(\"Sensitivity after nodule classification:\", 0.7477*scoretrue[1])" |
|
|
2784 |
] |
|
|
2785 |
} |
|
|
2786 |
], |
|
|
2787 |
"metadata": { |
|
|
2788 |
"kernelspec": { |
|
|
2789 |
"display_name": "Python 3", |
|
|
2790 |
"language": "python", |
|
|
2791 |
"name": "python3" |
|
|
2792 |
}, |
|
|
2793 |
"language_info": { |
|
|
2794 |
"codemirror_mode": { |
|
|
2795 |
"name": "ipython", |
|
|
2796 |
"version": 3 |
|
|
2797 |
}, |
|
|
2798 |
"file_extension": ".py", |
|
|
2799 |
"mimetype": "text/x-python", |
|
|
2800 |
"name": "python", |
|
|
2801 |
"nbconvert_exporter": "python", |
|
|
2802 |
"pygments_lexer": "ipython3", |
|
|
2803 |
"version": "3.6.1" |
|
|
2804 |
} |
|
|
2805 |
}, |
|
|
2806 |
"nbformat": 4, |
|
|
2807 |
"nbformat_minor": 2 |
|
|
2808 |
} |