--- a
+++ b/sandbox/test_data.py
@@ -0,0 +1,118 @@
+import matplotlib.pyplot as plt
+import numpy as np
+import scipy
+import scipy.ndimage
+import data_transforms
+import pathfinder
+import utils
+import utils_lung
+import logger
+import sys
+import collections
+
+
+def resample(image, spacing, new_spacing=[1, 1, 1]):
+    # Determine current pixel spacing
+    spacing = np.array(spacing)
+    resize_factor = spacing / new_spacing
+    new_real_shape = image.shape * resize_factor
+    new_shape = np.round(new_real_shape)
+    real_resize_factor = new_shape / image.shape
+    new_spacing = spacing / real_resize_factor
+    image = scipy.ndimage.interpolation.zoom(image, real_resize_factor)
+    return image, new_spacing
+
+
+def plot_2d(image3d, axis, pid, img_dir):
+    fig = plt.figure()
+    fig.canvas.set_window_title(pid)
+    ax = fig.add_subplot(111)
+    idx = image3d.shape[axis] / 2
+    if axis == 0:  # sax
+        ax.imshow(image3d[idx, :, :], cmap=plt.cm.gray)
+    if axis == 1:  # 2 lungs
+        ax.imshow(image3d[:, idx, :], cmap=plt.cm.gray)
+    if axis == 2:  # side view
+        ax.imshow(image3d[:, :, idx], cmap=plt.cm.gray)
+    plt.show()
+    fig.savefig(img_dir + '/%s.png' % pid, bbox_inches='tight')
+    fig.clf()
+    plt.close('all')
+
+
+def test1():
+    image_dir = utils.get_dir_path('analysis', pathfinder.METADATA_PATH)
+    image_dir = image_dir + '/test_1/'
+    utils.auto_make_dir(image_dir)
+
+    sys.stdout = logger.Logger(image_dir + '/%s.log' % 'test1_log')
+    sys.stderr = sys.stdout
+
+    patient_data_paths = utils_lung.get_patient_data_paths(pathfinder.DATA_PATH)
+    print len(patient_data_paths)
+
+    for k, p in enumerate(patient_data_paths):
+        pid = utils_lung.extract_pid_dir(p)
+        try:
+            sid2data, sid2metadata = utils_lung.get_patient_data(p)
+            sids_sorted = utils_lung.sort_sids_by_position(sid2metadata)
+            sids_sorted_jonas = utils_lung.sort_slices_jonas(sid2metadata)
+            sid2position = utils_lung.slice_location_finder(sid2metadata)
+
+            try:
+                slice_thickness_pos = np.abs(sid2metadata[sids_sorted[0]]['ImagePositionPatient'][2] -
+                                             sid2metadata[sids_sorted[1]]['ImagePositionPatient'][2])
+            except:
+                print 'This patient has no ImagePosition!'
+                slice_thickness_pos = 0.
+            try:
+                slice_thickness_loc = np.abs(
+                    sid2metadata[sids_sorted[0]]['SliceLocation'] - sid2metadata[sids_sorted[1]]['SliceLocation'])
+            except:
+                print 'This patient has no SliceLocation!'
+                slice_thickness_loc = 0.
+
+            jonas_slicethick = []
+            for i in xrange(len(sids_sorted_jonas) - 1):
+                s = np.abs(sid2position[sids_sorted_jonas[i + 1]] - sid2position[sids_sorted_jonas[i]])
+                jonas_slicethick.append(s)
+
+            full_img = np.stack([data_transforms.ct2normHU(sid2data[sid], sid2metadata[sid]) for sid in sids_sorted])
+            del sid2data, sid2metadata
+            print np.min(full_img), np.max(full_img)
+            # spacing = sid2metadata[sids_sorted[0]]['PixelSpacing']
+            # spacing = [slice_thickness, spacing[0], spacing[1]]
+            # resampled_image, _ = resample(full_img, spacing)
+            plot_2d(full_img, axis=0, pid=pid + 'ax0', img_dir=image_dir)
+            plot_2d(full_img, axis=1, pid=pid + 'ax1', img_dir=image_dir)
+            plot_2d(full_img, axis=2, pid=pid + 'ax2', img_dir=image_dir)
+            print k, pid, full_img.shape, slice_thickness_pos, slice_thickness_loc, set(jonas_slicethick)
+            del full_img
+        except:
+            print 'exception!!!', pid
+
+
+def test2():
+    patient_data_paths = utils_lung.get_patient_data_paths(pathfinder.DATA_PATH)
+    print len(patient_data_paths)
+    pixel_spacings_xy = []
+    n_slices = []
+
+    for k, p in enumerate(patient_data_paths):
+        pid = utils_lung.extract_pid_dir(p)
+        sid2data, sid2metadata = utils_lung.get_patient_data(p)
+        mtd = sid2metadata.itervalues().next()
+
+        assert mtd['PixelSpacing'][0] == mtd['PixelSpacing'][1]
+        pixel_spacings_xy.append(mtd['PixelSpacing'][0])
+        n_slices.append(len(sid2metadata))
+        print pid, pixel_spacings_xy[-1], n_slices[-1]
+
+    print 'nslices', np.max(n_slices), np.min(n_slices), np.mean(n_slices)
+    counts = collections.Counter(pixel_spacings_xy)
+    new_list = sorted(pixel_spacings_xy, key=counts.get, reverse=True)
+    print 'spacing', new_list
+
+
+if __name__ == '__main__':
+    test1()