renamed file master
authorHenry Amrhein <hamrhein@caltech.edu>
Wed, 16 Nov 2016 01:11:45 +0000 (17:11 -0800)
committerHenry Amrhein <hamrhein@caltech.edu>
Wed, 16 Nov 2016 01:11:45 +0000 (17:11 -0800)
dots.py [new file with mode: 0644]
dots_v0.1.py [deleted file]

diff --git a/dots.py b/dots.py
new file mode 100644 (file)
index 0000000..3a42aac
--- /dev/null
+++ b/dots.py
@@ -0,0 +1,85 @@
+
+import pandas as pd
+import numpy as np
+import libtiff
+import skimage.exposure
+import skimage.feature
+import skimage.filters
+import skimage.morphology
+
+def make_mask(zstack, nbins=32768):
+    thresh = skimage.filters.threshold_otsu(zstack, nbins=32768)
+    return zstack > thresh
+
+def build_blob_array(stack):
+    data = [[[False for i in range(len(stack[0][0]))] for j in range(len(stack[0]))] for k in range(len(stack))]
+    for im in range(len(stack))): #was stack
+        print "processing " + str(im)
+        yx = skimage.exposure.equalize_adapthist(stack[im], clip_limit=0.00025, nbins=32768)
+
+        zmx = np.max(yx)
+        zmn = np.min(yx)
+        yx = (yx - zmn) / (zmx - zmn)
+
+        blobs_log = skimage.feature.blob_log(yx, min_sigma=1, max_sigma=3, num_sigma=20, threshold=0.025)
+        print str(len(blobs_log)) + " blobs found"
+        if len(blobs_log) > 1:
+            blobs_log[:, 2] = blobs_log[:, 2] * math.sqrt(2)
+            for i in blobs_log:
+                data[im][int(i[0])][int(i[1])] = True
+    return data
+
+def make_watershed(mask):
+    distance = ndi.distance_transform_edt(mask)
+    local_max = skimage.feature.peak_local_max(distance, indices=False, footprint=np.ones((31, 31)), labels=mask)
+    markers = ndi.label(local_max)[0]
+    labels = skimage.morphology.watershed(-distance, markers, mask=mask)
+    return labels
+
+def make_gene_layers(gene_tif):
+    gene_z = gene_tif.get_tiff_array()
+    gene_s = np.arange(0, len(gene_z)+1, len(gene_z) / 6)
+    gene_r = zip(gene_s[:-1], (gene_s + 1)[1:])
+    gene_y = np.array(gene_z[gene_r[2][0]:gene_r[2][1]], dtype=np.uint16)
+    return gene_y
+
+def make_nissl_watershed(nissl_tif):
+    nissl_z = nissl_tif.get_tiff_array()
+    nissl_s = np.arange(0, len(nissl_z)+1, len(nissl_z) / 6)
+    nissl_r = zip(nissl_s[:-1], (nissl_s + 1)[1:])
+    nissl_y = np.array(nissl_z[nissl_r[1][0]:nissl_r[1][1]], dtype=np.uint16)
+    nissl_watershed = [[] for k in range(len(nissl_y))]
+
+    for i in range(len(nissl_y)):
+        mask = make_mask(nissl_y[i])
+        watershed = make_watershed(mask)
+        nissl_watershed[i] = watershed
+    return nissl_watershed
+
+def correct_labels(nissl_watershed):
+    nissl_watershed_corrected = [[[0 for i in range(len(nissl_watershed[0][0]))] for j in range(len(nissl_watershed[0]))] for k in range(len(nissl_watershed))]
+    nissl_watershed_corrected[0] = [i for i in nissl_watershed[0]]
+    nissl_watershed_corrected = np.asarray(nissl_watershed_corrected)
+
+    for k in range(1, len(nissl_watershed_corrected)):
+        cell_number_max = nissl_watershed_corrected[k-1].max() #changed to corrected to keep accurate count
+        cell_number_two_max = nissl_watershed[k].max()
+        and_map = np.logical_and(nissl_watershed[k-1], nissl_watershed[k])
+        and_map_pos = np.where(and_map)
+        cell_set = set(nissl_watershed[k-1][np.where(and_map)])
+        inter_layer_dict = dict()
+        for i in range(len(and_map_pos[0])):
+            inter_layer_dict[nissl_watershed[k][and_map_pos[0][i]][and_map_pos[1][i]]] = nissl_watershed[k-1][and_map_pos[0][i]][and_map_pos[1][i]]
+        counter = 0
+        inter_layer_dict[0] = 0
+        for i in range(1, cell_number_two_max + 1):
+            if not i in inter_layer_dict:
+                counter += 1
+                inter_layer_dict[i] = cell_number_max + counter
+
+
+        for j in range(1024):
+            for i in range(1024):
+                nissl_watershed_corrected[k][i][j] = inter_layer_dict[nissl_watershed[k][i][j]]
+    
+    return nissl_watershed_corrected
diff --git a/dots_v0.1.py b/dots_v0.1.py
deleted file mode 100644 (file)
index 3a42aac..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-
-import pandas as pd
-import numpy as np
-import libtiff
-import skimage.exposure
-import skimage.feature
-import skimage.filters
-import skimage.morphology
-
-def make_mask(zstack, nbins=32768):
-    thresh = skimage.filters.threshold_otsu(zstack, nbins=32768)
-    return zstack > thresh
-
-def build_blob_array(stack):
-    data = [[[False for i in range(len(stack[0][0]))] for j in range(len(stack[0]))] for k in range(len(stack))]
-    for im in range(len(stack))): #was stack
-        print "processing " + str(im)
-        yx = skimage.exposure.equalize_adapthist(stack[im], clip_limit=0.00025, nbins=32768)
-
-        zmx = np.max(yx)
-        zmn = np.min(yx)
-        yx = (yx - zmn) / (zmx - zmn)
-
-        blobs_log = skimage.feature.blob_log(yx, min_sigma=1, max_sigma=3, num_sigma=20, threshold=0.025)
-        print str(len(blobs_log)) + " blobs found"
-        if len(blobs_log) > 1:
-            blobs_log[:, 2] = blobs_log[:, 2] * math.sqrt(2)
-            for i in blobs_log:
-                data[im][int(i[0])][int(i[1])] = True
-    return data
-
-def make_watershed(mask):
-    distance = ndi.distance_transform_edt(mask)
-    local_max = skimage.feature.peak_local_max(distance, indices=False, footprint=np.ones((31, 31)), labels=mask)
-    markers = ndi.label(local_max)[0]
-    labels = skimage.morphology.watershed(-distance, markers, mask=mask)
-    return labels
-
-def make_gene_layers(gene_tif):
-    gene_z = gene_tif.get_tiff_array()
-    gene_s = np.arange(0, len(gene_z)+1, len(gene_z) / 6)
-    gene_r = zip(gene_s[:-1], (gene_s + 1)[1:])
-    gene_y = np.array(gene_z[gene_r[2][0]:gene_r[2][1]], dtype=np.uint16)
-    return gene_y
-
-def make_nissl_watershed(nissl_tif):
-    nissl_z = nissl_tif.get_tiff_array()
-    nissl_s = np.arange(0, len(nissl_z)+1, len(nissl_z) / 6)
-    nissl_r = zip(nissl_s[:-1], (nissl_s + 1)[1:])
-    nissl_y = np.array(nissl_z[nissl_r[1][0]:nissl_r[1][1]], dtype=np.uint16)
-    nissl_watershed = [[] for k in range(len(nissl_y))]
-
-    for i in range(len(nissl_y)):
-        mask = make_mask(nissl_y[i])
-        watershed = make_watershed(mask)
-        nissl_watershed[i] = watershed
-    return nissl_watershed
-
-def correct_labels(nissl_watershed):
-    nissl_watershed_corrected = [[[0 for i in range(len(nissl_watershed[0][0]))] for j in range(len(nissl_watershed[0]))] for k in range(len(nissl_watershed))]
-    nissl_watershed_corrected[0] = [i for i in nissl_watershed[0]]
-    nissl_watershed_corrected = np.asarray(nissl_watershed_corrected)
-
-    for k in range(1, len(nissl_watershed_corrected)):
-        cell_number_max = nissl_watershed_corrected[k-1].max() #changed to corrected to keep accurate count
-        cell_number_two_max = nissl_watershed[k].max()
-        and_map = np.logical_and(nissl_watershed[k-1], nissl_watershed[k])
-        and_map_pos = np.where(and_map)
-        cell_set = set(nissl_watershed[k-1][np.where(and_map)])
-        inter_layer_dict = dict()
-        for i in range(len(and_map_pos[0])):
-            inter_layer_dict[nissl_watershed[k][and_map_pos[0][i]][and_map_pos[1][i]]] = nissl_watershed[k-1][and_map_pos[0][i]][and_map_pos[1][i]]
-        counter = 0
-        inter_layer_dict[0] = 0
-        for i in range(1, cell_number_two_max + 1):
-            if not i in inter_layer_dict:
-                counter += 1
-                inter_layer_dict[i] = cell_number_max + counter
-
-
-        for j in range(1024):
-            for i in range(1024):
-                nissl_watershed_corrected[k][i][j] = inter_layer_dict[nissl_watershed[k][i][j]]
-    
-    return nissl_watershed_corrected