In [34]:
import matplotlib.pyplot as plt
import pylab
import numpy as np
from skimage.transform import rotate
from scipy.spatial.distance import pdist
from scipy.spatial.distance import squareform
import os
import pickle
import shutil

#Rotation: RS140_x5_0000_gabor-blueNisslWide-segm-blueNisslRegular_spMaxDirAngle.npys
#RAW:   "/oasis/projects/nsf/csd181/yuncong/DavidData2014tif/RS140/x5/0000/RS140_x5_0000.tif"
#PATH: " /oasis/projects/nsf/csd181/yuncong/DavidData2014results/RS140/0000/"
#Example: "/oasis/projects/nsf/csd181/yuncong/DavidData2014v4/RS141/x5/0001/pipelineResults/RS141_x5_0001_segm-blueNissl_segmentation.npy"

In [35]:
IMG_PATH    = "/oasis/projects/nsf/csd181/yuncong/DavidData2014tif/RS140/x5/0000/RS140_x5_0000.tif"
DATA_PATH = "/oasis/projects/nsf/csd181/yuncong/DavidData2014results/RS140/0000/"
PROC_PATH = "RS140/x5/0000"
CODE_NAME = "blueNisslRegular"

FNAMES = PROC_PATH.replace("/", "_")
FPATH = DATA_PATH

In [106]:
# Load segments data
SEGMENTS  = FPATH + FNAMES + "_segm-" + CODE_NAME + "_segmentation.npy" 
ROTATIONS = FPATH + FNAMES + "_gabor-blueNisslWide-segm-" + CODE_NAME + "_spMaxDirAngle.npy" 
NEIBRS         = FPATH + FNAMES + "_segm-" + CODE_NAME + "_neighbors.npy"
TEXT_DIST   = FPATH + FNAMES + "_gabor-blueNisslWide-segm-" + CODE_NAME + "-vq-blueNissl_texHistPairwiseDist.npy" 
TEXT_MAP   = FPATH + FNAMES + "_gabor-blueNisslWide-vq-blueNissl_texMap.npy"
PROPS          = FPATH + FNAMES + "_segm-" + CODE_NAME + "_spProps.npy"
data = np.load(SEGMENTS)
rotData = np.load(ROTATIONS)
nbrs = np.load(NEIBRS)
texton_dist = np.load(TEXT_DIST)
texton_map = np.load(TEXT_MAP)
sp_props = np.load(PROPS)

In [107]:
print texton_map.min(), texton_map.max()


-1 7

In [108]:
# Input image
img = plt.imread(IMG_PATH)
plt.imshow(img)


Out[108]:
<matplotlib.image.AxesImage at 0x54fd310>

In [109]:
try:
    os.stat("images")
except:
    os.mkdir("images")

In [110]:
center_dists = pdist(sp_props[:, :2])
center_dist_matrix = squareform(center_dists)
k = 8
k_neighbors = np.argsort(center_dist_matrix, axis=1)[:, 1:k+1]

In [176]:
def getXYwithNbrs(v, trsh):
    minY, minX, maxY, maxX = sp_props[v, 4:]
    
    for o in k_neighbors[v]:
        if texton_dist[v, o] > trsh:
            return True, 0, 0, 0, 0
        
        minoY, minoX, maxoY, maxoX = sp_props[o, 4:]
        
        minX = min(minX, minoX)
        maxX = max(maxX, maxoX)
        minY = min(minY, minoY)
        maxY = max(maxY, maxoY)
        
    return False, minX, maxX, minY, maxY

In [190]:
lenX, lenY = len(img), len(img[0])
mapped = {}
N = data.max() + 1
T = 0.07

for v in range(0, N):
    if v == -1: 
        continue
    
    # Mark all values equal to v
    b, minX, maxX, minY, maxY = getXYwithNbrs(v, T)
    if b:
        continue
    
    # Crop patch
    degree = np.degrees(rotData[v])
    H = maxX - minX
    W = maxY - minY
    buffX = H / 2 #np.min((np.max((20, minX - 1)), lenX - maxX - 1))
    buffY = W / 2 #np.min((np.max((20, minY - 1)), lenY - maxY - 1))
    patch = img[minY - buffY: maxY + buffY, minX - buffX : maxX + buffX]
    #patch2 = img[minX : maxX, minY : maxY]
    #imshow(patch2)
    #break

    if patch.shape[0] == 0 or patch.shape[1] == 0:
        continue
    patch = rotate(patch, degree, True)
    #imshow(patch)
    #break
    
    nCY, nCX, _ = patch.shape
    patch = patch[(nCY - W) / 2 : (nCY + W) / 2, (nCX - H) / 2 : (nCX + H) / 2]
    nCY, nCX, _ = patch.shape
    
    radius = int(np.sqrt((nCX / 2) ** 2 + (nCY / 2) ** 2) / 2)
    pointX = int(maxX - H / 2);
    pointY = int(maxY - W / 2);
    
    textons = [0] * 8
    '''for r in range(0, radius + 1):
        for x in range(0, radius + 1):
            for y in range(0, radius + 1):
                if x ** 2 + y ** 2 == r ** 2:
                    rx = minX + x
                    ry = minY + y
                    val = texton_map[ry, rx]
                    if val >= 0:
                        textons[val] += 1'''

    for x in range(int(minX), int(maxX)):
        for y in range(int(minY), int(maxY)):
            val = texton_map[y, x]
            if val >= 0:
                textons[val] += 1
    
    suffixName = str(v) + "_" + str(pointX) + "_" + str(pointY) + "_" + str(radius)
    imgName = "WebStem/photos/" + suffixName
    mapped[v] = suffixName  + ".png"
    plt.imsave(imgName + ".png", patch)
    
    plt.hist(range(8), bins=8, weights=textons, normed = True, label=None)
    plt.axes().get_xaxis().set_visible(False)
    plt.axes().get_yaxis().set_visible(False)
    plt.savefig(imgName + '_hist.png')
    plt.cla()


Create Cover


In [191]:
# save the map in case of a crash
#file = open("images/v2name.pck", "w")
#pickle.dump(mapped, file)
#file.close()
print "done"


done

In [192]:
# load the map in case of a crash
#file  = open ("images/v2name.pck")
#mapped = pickle.load(file)
#file.close();
print "done"


done

In [192]:


In [193]:
maxKey = max(mapped.keys())
potential = mapped.copy()
index = 1
T = 0.1
S = []
nS = set()

while potential:
    folderName = "WebStem/photos/group_" + str(index) + "/"
    shutil.rmtree(folderName, True)

    candidate = potential.popitem()
    nS.add(candidate)
    
    iter = potential.iteritems()
    remove = set()
    
    
    while True:
        try:
            next = iter.next()
        except:
            break
        succ = True
        v1 = next[0]
        for k in nS:
            v2 = k[0]
          #  print v1, v2
            if texton_dist[v1, v2] > T:
                succ = False
                break
        
        if succ:
            remove.add(next[0])
            nS.add(next)
            
    for i in remove:
        del potential[i]
        
    if (len(nS) >= 8):
        os.mkdir(folderName)
        #os.mkdir(folderName + "images")
        for n in nS:
            print n[1], folderName + n[1]
            os.symlink(n[1], folderName + n[1])
        index = index + 1
        S.append(nS)
    nS = set()
    
for s in S:
    print s


2067_173_1654_52.png WebStem/photos/group_1/2067_173_1654_52.png
118_2114_311_60.png WebStem/photos/group_1/118_2114_311_60.png
3149_1321_2233_50.png WebStem/photos/group_1/3149_1321_2233_50.png
2847_1321_2041_50.png WebStem/photos/group_1/2847_1321_2041_50.png
211_1987_506_54.png WebStem/photos/group_1/211_1987_506_54.png
230_2097_529_65.png WebStem/photos/group_1/230_2097_529_65.png
207_1934_506_55.png WebStem/photos/group_1/207_1934_506_55.png
3248_4252_2276_72.png WebStem/photos/group_1/3248_4252_2276_72.png
2085_221_1656_52.png WebStem/photos/group_1/2085_221_1656_52.png
3173_3526_2245_56.png WebStem/photos/group_1/3173_3526_2245_56.png
3242_1217_2295_59.png WebStem/photos/group_1/3242_1217_2295_59.png
186_2041_457_53.png WebStem/photos/group_1/186_2041_457_53.png
3172_4344_2234_55.png WebStem/photos/group_1/3172_4344_2234_55.png
3281_2426_2331_52.png WebStem/photos/group_1/3281_2426_2331_52.png
172_2089_410_51.png WebStem/photos/group_1/172_2089_410_51.png
3186_4365_2232_64.png WebStem/photos/group_1/3186_4365_2232_64.png
2926_1272_2089_51.png WebStem/photos/group_1/2926_1272_2089_51.png
2775_1610_1992_51.png WebStem/photos/group_1/2775_1610_1992_51.png
292_1959_648_60.png WebStem/photos/group_1/292_1959_648_60.png
319_2006_659_60.png WebStem/photos/group_1/319_2006_659_60.png
3195_1221_2295_58.png WebStem/photos/group_1/3195_1221_2295_58.png
74_2107_294_64.png WebStem/photos/group_1/74_2107_294_64.png
2584_1272_1896_50.png WebStem/photos/group_1/2584_1272_1896_50.png
2188_219_1707_53.png WebStem/photos/group_1/2188_219_1707_53.png
283_1993_605_56.png WebStem/photos/group_1/283_1993_605_56.png
124_1992_356_54.png WebStem/photos/group_1/124_1992_356_54.png
125_2041_356_53.png WebStem/photos/group_1/125_2041_356_53.png
3007_1419_2137_51.png WebStem/photos/group_1/3007_1419_2137_51.png
3082_1370_2185_51.png WebStem/photos/group_1/3082_1370_2185_51.png
3247_3623_2238_73.png WebStem/photos/group_1/3247_3623_2238_73.png
235_2076_552_65.png WebStem/photos/group_1/235_2076_552_65.png
233_1935_553_58.png WebStem/photos/group_1/233_1935_553_58.png
204_1903_505_71.png WebStem/photos/group_1/204_1903_505_71.png
304_1871_652_66.png WebStem/photos/group_1/304_1871_652_66.png
3313_2230_2380_53.png WebStem/photos/group_1/3313_2230_2380_53.png
93_2014_304_64.png WebStem/photos/group_1/93_2014_304_64.png
3264_2979_2287_64.png WebStem/photos/group_1/3264_2979_2287_64.png
3194_4298_2241_75.png WebStem/photos/group_1/3194_4298_2241_75.png
3315_2329_2380_53.png WebStem/photos/group_1/3315_2329_2380_53.png
2187_169_1707_55.png WebStem/photos/group_1/2187_169_1707_55.png
3130_1221_2239_56.png WebStem/photos/group_1/3130_1221_2239_56.png
3080_1272_2185_51.png WebStem/photos/group_1/3080_1272_2185_51.png
3174_3576_2238_55.png WebStem/photos/group_1/3174_3576_2238_55.png
392_1877_721_71.png WebStem/photos/group_1/392_1877_721_71.png
258_1868_618_71.png WebStem/photos/group_1/258_1868_618_71.png
3129_1221_2249_60.png WebStem/photos/group_1/3129_1221_2249_60.png
2671_1369_1945_50.png WebStem/photos/group_1/2671_1369_1945_50.png
783_3144_1031_53.png WebStem/photos/group_1/783_3144_1031_53.png
1872_211_1560_53.png WebStem/photos/group_1/1872_211_1560_53.png
159_2041_409_51.png WebStem/photos/group_1/159_2041_409_51.png
3051_1199_2164_70.png WebStem/photos/group_1/3051_1199_2164_70.png
2937_1897_2090_51.png WebStem/photos/group_1/2937_1897_2090_51.png
259_1889_599_58.png WebStem/photos/group_1/259_1889_599_58.png
398_1851_744_73.png WebStem/photos/group_1/398_1851_744_73.png
121_2138_365_74.png WebStem/photos/group_1/121_2138_365_74.png
2269_169_1757_55.png WebStem/photos/group_1/2269_169_1757_55.png
3298_1268_2325_54.png WebStem/photos/group_1/3298_1268_2325_54.png
3280_2378_2331_52.png WebStem/photos/group_1/3280_2378_2331_52.png
3010_1705_2137_50.png WebStem/photos/group_1/3010_1705_2137_50.png
268_2047_607_57.png WebStem/photos/group_1/268_2047_607_57.png
239_1989_555_55.png WebStem/photos/group_1/239_1989_555_55.png
2674_1513_1944_50.png WebStem/photos/group_1/2674_1513_1944_50.png
92_2107_293_63.png WebStem/photos/group_1/92_2107_293_63.png
146_1972_381_70.png WebStem/photos/group_1/146_1972_381_70.png
3005_1321_2137_50.png WebStem/photos/group_1/3005_1321_2137_50.png
94_2061_302_61.png WebStem/photos/group_1/94_2061_302_61.png
3257_4151_2282_73.png WebStem/photos/group_1/3257_4151_2282_73.png
3254_1218_2295_60.png WebStem/photos/group_1/3254_1218_2295_60.png
354_1847_699_61.png WebStem/photos/group_1/354_1847_699_61.png
2769_1321_1993_50.png WebStem/photos/group_1/2769_1321_1993_50.png
1731_129_1511_67.png WebStem/photos/group_1/1731_129_1511_67.png
359_1924_705_67.png WebStem/photos/group_1/359_1924_705_67.png
2670_1321_1945_50.png WebStem/photos/group_1/2670_1321_1945_50.png
145_2089_357_53.png WebStem/photos/group_1/145_2089_357_53.png
296_1891_652_59.png WebStem/photos/group_1/296_1891_652_59.png
3081_1321_2185_50.png WebStem/photos/group_1/3081_1321_2185_50.png
3171_3626_2238_54.png WebStem/photos/group_1/3171_3626_2238_54.png
3079_1222_2187_54.png WebStem/photos/group_1/3079_1222_2187_54.png
2450_5188_1785_73.png WebStem/photos/group_1/2450_5188_1785_73.png
3006_1370_2137_51.png WebStem/photos/group_1/3006_1370_2137_51.png
792_3193_1028_53.png WebStem/photos/group_1/792_3193_1028_53.png
287_1820_669_71.png WebStem/photos/group_1/287_1820_669_71.png
3305_2474_2381_55.png WebStem/photos/group_1/3305_2474_2381_55.png
117_1972_359_62.png WebStem/photos/group_1/117_1972_359_62.png
2927_1321_2089_50.png WebStem/photos/group_1/2927_1321_2089_50.png
2854_1656_2041_50.png WebStem/photos/group_1/2854_1656_2041_50.png
2031_388_1611_64.png WebStem/photos/group_1/2031_388_1611_64.png
68_2083_273_66.png WebStem/photos/group_1/68_2083_273_66.png
3297_1243_2325_64.png WebStem/photos/group_1/3297_1243_2325_64.png
330_2004_669_65.png WebStem/photos/group_1/330_2004_669_65.png
227_2041_507_54.png WebStem/photos/group_1/227_2041_507_54.png
119_2090_302_54.png WebStem/photos/group_1/119_2090_302_54.png
2379_2137_1799_51.png WebStem/photos/group_1/2379_2137_1799_51.png
2499_2040_1848_51.png WebStem/photos/group_1/2499_2040_1848_51.png
208_2097_505_56.png WebStem/photos/group_1/208_2097_505_56.png
2860_1945_2040_50.png WebStem/photos/group_1/2860_1945_2040_50.png
262_2055_583_68.png WebStem/photos/group_1/262_2055_583_68.png
152_1934_438_63.png WebStem/photos/group_1/152_1934_438_63.png
3325_2424_2381_53.png WebStem/photos/group_1/3325_2424_2381_53.png
350_1900_705_58.png WebStem/photos/group_1/350_1900_705_58.png
199_1934_458_56.png WebStem/photos/group_1/199_1934_458_56.png
261_1942_603_57.png WebStem/photos/group_1/261_1942_603_57.png
324_1948_676_65.png WebStem/photos/group_1/324_1948_676_65.png
3139_1271_2232_51.png WebStem/photos/group_1/3139_1271_2232_51.png
3042_1123_2136_72.png WebStem/photos/group_1/3042_1123_2136_72.png
2928_1370_2089_51.png WebStem/photos/group_1/2928_1370_2089_51.png
293_2047_634_67.png WebStem/photos/group_1/293_2047_634_67.png
2501_2137_1848_51.png WebStem/photos/group_1/2501_2137_1848_51.png
3244_3574_2245_74.png WebStem/photos/group_1/3244_3574_2245_74.png
3346_2231_2430_54.png WebStem/photos/group_1/3346_2231_2430_54.png
177_2097_458_55.png WebStem/photos/group_1/177_2097_458_55.png
2936_1849_2090_51.png WebStem/photos/group_1/2936_1849_2090_51.png
255_2046_555_56.png WebStem/photos/group_1/255_2046_555_56.png
327_1796_681_67.png WebStem/photos/group_1/327_1796_681_67.png
3245_3719_2240_71.png WebStem/photos/group_1/3245_3719_2240_71.png
3348_2330_2432_55.png WebStem/photos/group_1/3348_2330_2432_55.png
2934_1753_2089_50.png WebStem/photos/group_1/2934_1753_2089_50.png
3278_2281_2329_51.png WebStem/photos/group_1/3278_2281_2329_51.png
356_1982_691_66.png WebStem/photos/group_1/356_1982_691_66.png
2846_1272_2041_50.png WebStem/photos/group_1/2846_1272_2041_50.png
3237_4340_2241_71.png WebStem/photos/group_1/3237_4340_2241_71.png
155_1992_409_52.png WebStem/photos/group_1/155_1992_409_52.png
291_2024_658_67.png WebStem/photos/group_1/291_2024_658_67.png
174_1942_390_62.png WebStem/photos/group_1/174_1942_390_62.png
3336_2451_2381_64.png WebStem/photos/group_1/3336_2451_2381_64.png
185_1987_458_54.png WebStem/photos/group_1/185_1987_458_54.png
3148_3765_2240_55.png WebStem/photos/group_1/3148_3765_2240_55.png
69_2065_293_65.png WebStem/photos/group_1/69_2065_293_65.png
1947_213_1609_53.png WebStem/photos/group_1/1947_213_1609_53.png
2316_3241_1752_50.png WebStem/photos/group_2/2316_3241_1752_50.png
1984_696_1610_52.png WebStem/photos/group_2/1984_696_1610_52.png
3027_3337_2137_51.png WebStem/photos/group_2/3027_3337_2137_51.png
2108_3241_1654_51.png WebStem/photos/group_2/2108_3241_1654_51.png
2883_4345_2043_51.png WebStem/photos/group_2/2883_4345_2043_51.png
1877_697_1561_51.png WebStem/photos/group_2/1877_697_1561_51.png
2296_1848_1752_50.png WebStem/photos/group_2/2296_1848_1752_50.png
1886_1225_1562_51.png WebStem/photos/group_2/1886_1225_1562_51.png
1323_208_1320_54.png WebStem/photos/group_2/1323_208_1320_54.png
2311_2858_1753_51.png WebStem/photos/group_2/2311_2858_1753_51.png
1996_2185_1608_51.png WebStem/photos/group_2/1996_2185_1608_51.png
1374_1080_1321_50.png WebStem/photos/group_2/1374_1080_1321_50.png
306_360_648_51.png WebStem/photos/group_2/306_360_648_51.png
1861_2137_1562_52.png WebStem/photos/group_2/1861_2137_1562_52.png
3308_1895_2380_53.png WebStem/photos/group_2/3308_1895_2380_53.png
1373_1032_1322_51.png WebStem/photos/group_2/1373_1032_1322_51.png
2529_4249_1848_50.png WebStem/photos/group_2/2529_4249_1848_50.png
114_987_313_51.png WebStem/photos/group_2/114_987_313_51.png
2598_2377_1897_51.png WebStem/photos/group_2/2598_2377_1897_51.png
3273_1896_2330_51.png WebStem/photos/group_2/3273_1896_2330_51.png
385_888_745_51.png WebStem/photos/group_2/385_888_745_51.png
340_360_697_51.png WebStem/photos/group_2/340_360_697_51.png
2627_4249_1897_51.png WebStem/photos/group_2/2627_4249_1897_51.png
265_310_600_51.png WebStem/photos/group_2/265_310_600_51.png
2319_3385_1753_50.png WebStem/photos/group_2/2319_3385_1753_50.png
341_409_697_51.png WebStem/photos/group_2/341_409_697_51.png
610_223_936_67.png WebStem/photos/group_2/610_223_936_67.png
1163_649_1224_50.png WebStem/photos/group_2/1163_649_1224_50.png
312_696_648_51.png WebStem/photos/group_2/312_696_648_51.png
904_1992_1080_52.png WebStem/photos/group_2/904_1992_1080_52.png
2312_2905_1752_51.png WebStem/photos/group_2/2312_2905_1752_51.png
2056_645_1660_55.png WebStem/photos/group_2/2056_645_1660_55.png
2317_3289_1753_51.png WebStem/photos/group_2/2317_3289_1753_51.png
2414_2906_1800_51.png WebStem/photos/group_2/2414_2906_1800_51.png
979_696_1129_50.png WebStem/photos/group_2/979_696_1129_50.png
2171_1897_1703_51.png WebStem/photos/group_2/2171_1897_1703_51.png
1566_1080_1417_51.png WebStem/photos/group_2/1566_1080_1417_51.png
260_260_600_72.png WebStem/photos/group_2/260_260_600_72.png
129_505_360_51.png WebStem/photos/group_2/129_505_360_51.png
716_841_984_51.png WebStem/photos/group_2/716_841_984_51.png
271_359_601_51.png WebStem/photos/group_2/271_359_601_51.png
2198_1848_1702_51.png WebStem/photos/group_2/2198_1848_1702_51.png
2068_696_1659_52.png WebStem/photos/group_2/2068_696_1659_52.png
3272_1849_2331_51.png WebStem/photos/group_2/3272_1849_2331_51.png
2079_3193_1655_51.png WebStem/photos/group_2/2079_3193_1655_51.png
2884_4394_2043_51.png WebStem/photos/group_2/2884_4394_2043_51.png
2955_3385_2088_51.png WebStem/photos/group_2/2955_3385_2088_51.png
1164_697_1225_50.png WebStem/photos/group_2/1164_697_1225_50.png
134_456_360_51.png WebStem/photos/group_2/134_456_360_51.png
381_697_745_50.png WebStem/photos/group_2/381_697_745_50.png
1500_4489_1369_51.png WebStem/photos/group_3/1500_4489_1369_51.png
1602_4488_1418_52.png WebStem/photos/group_3/1602_4488_1418_52.png
2234_4584_1705_50.png WebStem/photos/group_3/2234_4584_1705_50.png
1498_4393_1371_51.png WebStem/photos/group_3/1498_4393_1371_51.png
1810_4778_1512_51.png WebStem/photos/group_3/1810_4778_1512_51.png
2236_4682_1705_51.png WebStem/photos/group_3/2236_4682_1705_51.png
1765_4105_1511_51.png WebStem/photos/group_3/1765_4105_1511_51.png
1398_4489_1319_51.png WebStem/photos/group_3/1398_4489_1319_51.png
127_307_361_53.png WebStem/photos/group_3/127_307_361_53.png
1499_4441_1371_51.png WebStem/photos/group_3/1499_4441_1371_51.png
2432_4297_1801_51.png WebStem/photos/group_3/2432_4297_1801_51.png
1682_2520_1465_51.png WebStem/photos/group_3/1682_2520_1465_51.png
1580_2472_1417_50.png WebStem/photos/group_3/1580_2472_1417_50.png
2190_840_1705_51.png WebStem/photos/group_3/2190_840_1705_51.png
1184_1946_1227_52.png WebStem/photos/group_3/1184_1946_1227_52.png
2235_4633_1705_50.png WebStem/photos/group_3/2235_4633_1705_50.png
1480_2520_1367_51.png WebStem/photos/group_3/1480_2520_1367_51.png
1085_1466_1176_51.png WebStem/photos/group_3/1085_1466_1176_51.png
2431_4249_1801_51.png WebStem/photos/group_3/2431_4249_1801_51.png
1581_2521_1416_50.png WebStem/photos/group_3/1581_2521_1416_50.png
635_984_937_51.png WebStem/photos/group_3/635_984_937_51.png
2336_4633_1753_50.png WebStem/photos/group_3/2336_4633_1753_50.png
1178_1418_1225_51.png WebStem/photos/group_3/1178_1418_1225_51.png
1063_3720_1176_52.png WebStem/photos/group_3/1063_3720_1176_52.png
1582_2569_1416_50.png WebStem/photos/group_3/1582_2569_1416_50.png
1368_4537_1319_51.png WebStem/photos/group_3/1368_4537_1319_51.png
2555_1034_1898_53.png WebStem/photos/group_3/2555_1034_1898_53.png
1084_1369_1175_51.png WebStem/photos/group_3/1084_1369_1175_51.png
2334_4537_1753_51.png WebStem/photos/group_3/2334_4537_1753_51.png
1064_3768_1176_51.png WebStem/photos/group_3/1064_3768_1176_51.png
2019_4537_1608_51.png WebStem/photos/group_3/2019_4537_1608_51.png
1292_3575_1274_52.png WebStem/photos/group_3/1292_3575_1274_52.png
1177_1369_1225_51.png WebStem/photos/group_3/1177_1369_1225_51.png
1544_2425_1416_51.png WebStem/photos/group_3/1544_2425_1416_51.png
1356_2473_1320_51.png WebStem/photos/group_3/1356_2473_1320_51.png
1605_4679_1415_52.png WebStem/photos/group_3/1605_4679_1415_52.png
1179_1467_1224_51.png WebStem/photos/group_3/1179_1467_1224_51.png
1083_1321_1177_51.png WebStem/photos/group_3/1083_1321_1177_51.png
2762_3673_1995_52.png WebStem/photos/group_3/2762_3673_1995_52.png
2438_4824_1803_51.png WebStem/photos/group_3/2438_4824_1803_51.png
2273_986_1752_52.png WebStem/photos/group_3/2273_986_1752_52.png
1448_2569_1367_51.png WebStem/photos/group_3/1448_2569_1367_51.png
2857_1801_2040_50.png WebStem/photos/group_4/2857_1801_2040_50.png
2940_2041_2089_51.png WebStem/photos/group_4/2940_2041_2089_51.png
2859_1897_2040_50.png WebStem/photos/group_4/2859_1897_2040_50.png
2406_2473_1801_50.png WebStem/photos/group_4/2406_2473_1801_50.png
1273_984_1274_51.png WebStem/photos/group_4/1273_984_1274_51.png
2407_2521_1801_50.png WebStem/photos/group_4/2407_2521_1801_50.png
1669_1080_1465_51.png WebStem/photos/group_4/1669_1080_1465_51.png
2404_2375_1800_51.png WebStem/photos/group_4/2404_2375_1800_51.png
891_696_1081_50.png WebStem/photos/group_4/891_696_1081_50.png
3118_4400_2210_66.png WebStem/photos/group_4/3118_4400_2210_66.png
2858_1849_2041_50.png WebStem/photos/group_4/2858_1849_2041_50.png
2597_2328_1897_51.png WebStem/photos/group_4/2597_2328_1897_51.png
812_2184_1032_53.png WebStem/photos/group_4/812_2184_1032_53.png
2217_3241_1704_51.png WebStem/photos/group_4/2217_3241_1704_51.png
2780_1897_1992_51.png WebStem/photos/group_4/2780_1897_1992_51.png
1522_888_1415_52.png WebStem/photos/group_5/1522_888_1415_52.png
133_407_361_52.png WebStem/photos/group_5/133_407_361_52.png
115_1036_314_52.png WebStem/photos/group_5/115_1036_314_52.png
1501_4538_1369_51.png WebStem/photos/group_5/1501_4538_1369_51.png
105_313_313_52.png WebStem/photos/group_5/105_313_313_52.png
3285_2041_2330_52.png WebStem/photos/group_5/3285_2041_2330_52.png
2012_4105_1609_50.png WebStem/photos/group_5/2012_4105_1609_50.png
1479_2472_1368_50.png WebStem/photos/group_5/1479_2472_1368_50.png
3339_1894_2431_55.png WebStem/photos/group_5/3339_1894_2431_55.png
170_938_409_51.png WebStem/photos/group_5/170_938_409_51.png
1241_2426_1270_52.png WebStem/photos/group_5/1241_2426_1270_52.png
2325_3961_1752_51.png WebStem/photos/group_5/2325_3961_1752_51.png
731_2666_984_51.png WebStem/photos/group_5/731_2666_984_51.png
3274_1945_2330_51.png WebStem/photos/group_5/3274_1945_2330_51.png
48_502_207_56.png WebStem/photos/group_5/48_502_207_56.png
2873_3192_2041_51.png WebStem/photos/group_5/2873_3192_2041_51.png
88_1035_264_53.png WebStem/photos/group_5/88_1035_264_53.png
634_936_936_51.png WebStem/photos/group_5/634_936_936_51.png
694_255_984_54.png WebStem/photos/group_5/694_255_984_54.png
912_2665_1081_51.png WebStem/photos/group_5/912_2665_1081_51.png
720_1033_984_50.png WebStem/photos/group_5/720_1033_984_50.png
91_458_259_53.png WebStem/photos/group_5/91_458_259_53.png
1176_1321_1226_51.png WebStem/photos/group_5/1176_1321_1226_51.png
2951_3192_2090_51.png WebStem/photos/group_5/2951_3192_2090_51.png
785_309_1033_53.png WebStem/photos/group_5/785_309_1033_53.png
113_938_313_51.png WebStem/photos/group_5/113_938_313_51.png
1251_2473_1272_51.png WebStem/photos/group_5/1251_2473_1272_51.png
2440_4922_1805_53.png WebStem/photos/group_6/2440_4922_1805_53.png
2342_4970_1755_51.png WebStem/photos/group_6/2342_4970_1755_51.png
2581_986_1897_52.png WebStem/photos/group_6/2581_986_1897_52.png
2389_4682_1802_51.png WebStem/photos/group_6/2389_4682_1802_51.png
2439_4872_1802_51.png WebStem/photos/group_6/2439_4872_1802_51.png
2343_5019_1754_53.png WebStem/photos/group_6/2343_5019_1754_53.png
2290_841_1754_51.png WebStem/photos/group_6/2290_841_1754_51.png
2458_1035_1849_52.png WebStem/photos/group_6/2458_1035_1849_52.png
1683_2569_1465_50.png WebStem/photos/group_6/1683_2569_1465_50.png
2340_4872_1753_51.png WebStem/photos/group_6/2340_4872_1753_51.png
set([(2067, '2067_173_1654_52.png'), (118, '118_2114_311_60.png'), (3149, '3149_1321_2233_50.png'), (2847, '2847_1321_2041_50.png'), (211, '211_1987_506_54.png'), (230, '230_2097_529_65.png'), (207, '207_1934_506_55.png'), (3248, '3248_4252_2276_72.png'), (2085, '2085_221_1656_52.png'), (3173, '3173_3526_2245_56.png'), (3242, '3242_1217_2295_59.png'), (186, '186_2041_457_53.png'), (3172, '3172_4344_2234_55.png'), (3281, '3281_2426_2331_52.png'), (172, '172_2089_410_51.png'), (3186, '3186_4365_2232_64.png'), (2926, '2926_1272_2089_51.png'), (2775, '2775_1610_1992_51.png'), (292, '292_1959_648_60.png'), (319, '319_2006_659_60.png'), (3195, '3195_1221_2295_58.png'), (74, '74_2107_294_64.png'), (2584, '2584_1272_1896_50.png'), (2188, '2188_219_1707_53.png'), (283, '283_1993_605_56.png'), (124, '124_1992_356_54.png'), (125, '125_2041_356_53.png'), (3007, '3007_1419_2137_51.png'), (3082, '3082_1370_2185_51.png'), (3247, '3247_3623_2238_73.png'), (235, '235_2076_552_65.png'), (233, '233_1935_553_58.png'), (204, '204_1903_505_71.png'), (304, '304_1871_652_66.png'), (3313, '3313_2230_2380_53.png'), (93, '93_2014_304_64.png'), (3264, '3264_2979_2287_64.png'), (3194, '3194_4298_2241_75.png'), (3315, '3315_2329_2380_53.png'), (2187, '2187_169_1707_55.png'), (3130, '3130_1221_2239_56.png'), (3080, '3080_1272_2185_51.png'), (3174, '3174_3576_2238_55.png'), (392, '392_1877_721_71.png'), (258, '258_1868_618_71.png'), (3129, '3129_1221_2249_60.png'), (2671, '2671_1369_1945_50.png'), (783, '783_3144_1031_53.png'), (1872, '1872_211_1560_53.png'), (159, '159_2041_409_51.png'), (3051, '3051_1199_2164_70.png'), (2937, '2937_1897_2090_51.png'), (259, '259_1889_599_58.png'), (398, '398_1851_744_73.png'), (121, '121_2138_365_74.png'), (2269, '2269_169_1757_55.png'), (3298, '3298_1268_2325_54.png'), (3280, '3280_2378_2331_52.png'), (3010, '3010_1705_2137_50.png'), (268, '268_2047_607_57.png'), (239, '239_1989_555_55.png'), (2674, '2674_1513_1944_50.png'), (92, '92_2107_293_63.png'), (146, '146_1972_381_70.png'), (3005, '3005_1321_2137_50.png'), (94, '94_2061_302_61.png'), (3257, '3257_4151_2282_73.png'), (3254, '3254_1218_2295_60.png'), (354, '354_1847_699_61.png'), (2769, '2769_1321_1993_50.png'), (1731, '1731_129_1511_67.png'), (359, '359_1924_705_67.png'), (2670, '2670_1321_1945_50.png'), (145, '145_2089_357_53.png'), (296, '296_1891_652_59.png'), (3081, '3081_1321_2185_50.png'), (3171, '3171_3626_2238_54.png'), (3079, '3079_1222_2187_54.png'), (2450, '2450_5188_1785_73.png'), (3006, '3006_1370_2137_51.png'), (792, '792_3193_1028_53.png'), (287, '287_1820_669_71.png'), (3305, '3305_2474_2381_55.png'), (117, '117_1972_359_62.png'), (2927, '2927_1321_2089_50.png'), (2854, '2854_1656_2041_50.png'), (2031, '2031_388_1611_64.png'), (68, '68_2083_273_66.png'), (3297, '3297_1243_2325_64.png'), (330, '330_2004_669_65.png'), (227, '227_2041_507_54.png'), (119, '119_2090_302_54.png'), (2379, '2379_2137_1799_51.png'), (2499, '2499_2040_1848_51.png'), (208, '208_2097_505_56.png'), (2860, '2860_1945_2040_50.png'), (262, '262_2055_583_68.png'), (152, '152_1934_438_63.png'), (3325, '3325_2424_2381_53.png'), (350, '350_1900_705_58.png'), (199, '199_1934_458_56.png'), (261, '261_1942_603_57.png'), (324, '324_1948_676_65.png'), (3139, '3139_1271_2232_51.png'), (3042, '3042_1123_2136_72.png'), (2928, '2928_1370_2089_51.png'), (293, '293_2047_634_67.png'), (2501, '2501_2137_1848_51.png'), (3244, '3244_3574_2245_74.png'), (3346, '3346_2231_2430_54.png'), (177, '177_2097_458_55.png'), (2936, '2936_1849_2090_51.png'), (255, '255_2046_555_56.png'), (327, '327_1796_681_67.png'), (3245, '3245_3719_2240_71.png'), (3348, '3348_2330_2432_55.png'), (2934, '2934_1753_2089_50.png'), (3278, '3278_2281_2329_51.png'), (356, '356_1982_691_66.png'), (2846, '2846_1272_2041_50.png'), (3237, '3237_4340_2241_71.png'), (155, '155_1992_409_52.png'), (291, '291_2024_658_67.png'), (174, '174_1942_390_62.png'), (3336, '3336_2451_2381_64.png'), (185, '185_1987_458_54.png'), (3148, '3148_3765_2240_55.png'), (69, '69_2065_293_65.png'), (1947, '1947_213_1609_53.png')])
set([(2316, '2316_3241_1752_50.png'), (1984, '1984_696_1610_52.png'), (3027, '3027_3337_2137_51.png'), (2108, '2108_3241_1654_51.png'), (2883, '2883_4345_2043_51.png'), (1877, '1877_697_1561_51.png'), (2296, '2296_1848_1752_50.png'), (1886, '1886_1225_1562_51.png'), (1323, '1323_208_1320_54.png'), (2311, '2311_2858_1753_51.png'), (1996, '1996_2185_1608_51.png'), (1374, '1374_1080_1321_50.png'), (306, '306_360_648_51.png'), (1861, '1861_2137_1562_52.png'), (3308, '3308_1895_2380_53.png'), (1373, '1373_1032_1322_51.png'), (2529, '2529_4249_1848_50.png'), (114, '114_987_313_51.png'), (2598, '2598_2377_1897_51.png'), (3273, '3273_1896_2330_51.png'), (385, '385_888_745_51.png'), (340, '340_360_697_51.png'), (2627, '2627_4249_1897_51.png'), (265, '265_310_600_51.png'), (2319, '2319_3385_1753_50.png'), (341, '341_409_697_51.png'), (610, '610_223_936_67.png'), (1163, '1163_649_1224_50.png'), (312, '312_696_648_51.png'), (904, '904_1992_1080_52.png'), (2312, '2312_2905_1752_51.png'), (2056, '2056_645_1660_55.png'), (2317, '2317_3289_1753_51.png'), (2414, '2414_2906_1800_51.png'), (979, '979_696_1129_50.png'), (2171, '2171_1897_1703_51.png'), (1566, '1566_1080_1417_51.png'), (260, '260_260_600_72.png'), (129, '129_505_360_51.png'), (716, '716_841_984_51.png'), (271, '271_359_601_51.png'), (2198, '2198_1848_1702_51.png'), (2068, '2068_696_1659_52.png'), (3272, '3272_1849_2331_51.png'), (2079, '2079_3193_1655_51.png'), (2884, '2884_4394_2043_51.png'), (2955, '2955_3385_2088_51.png'), (1164, '1164_697_1225_50.png'), (134, '134_456_360_51.png'), (381, '381_697_745_50.png')])
set([(1500, '1500_4489_1369_51.png'), (1602, '1602_4488_1418_52.png'), (2234, '2234_4584_1705_50.png'), (1498, '1498_4393_1371_51.png'), (1810, '1810_4778_1512_51.png'), (2236, '2236_4682_1705_51.png'), (1765, '1765_4105_1511_51.png'), (1398, '1398_4489_1319_51.png'), (127, '127_307_361_53.png'), (1499, '1499_4441_1371_51.png'), (2432, '2432_4297_1801_51.png'), (1682, '1682_2520_1465_51.png'), (1580, '1580_2472_1417_50.png'), (2190, '2190_840_1705_51.png'), (1184, '1184_1946_1227_52.png'), (2235, '2235_4633_1705_50.png'), (1480, '1480_2520_1367_51.png'), (1085, '1085_1466_1176_51.png'), (2431, '2431_4249_1801_51.png'), (1581, '1581_2521_1416_50.png'), (635, '635_984_937_51.png'), (2336, '2336_4633_1753_50.png'), (1178, '1178_1418_1225_51.png'), (1063, '1063_3720_1176_52.png'), (1582, '1582_2569_1416_50.png'), (1368, '1368_4537_1319_51.png'), (2555, '2555_1034_1898_53.png'), (1084, '1084_1369_1175_51.png'), (2334, '2334_4537_1753_51.png'), (1064, '1064_3768_1176_51.png'), (2019, '2019_4537_1608_51.png'), (1292, '1292_3575_1274_52.png'), (1177, '1177_1369_1225_51.png'), (1544, '1544_2425_1416_51.png'), (1356, '1356_2473_1320_51.png'), (1605, '1605_4679_1415_52.png'), (1179, '1179_1467_1224_51.png'), (1083, '1083_1321_1177_51.png'), (2762, '2762_3673_1995_52.png'), (2438, '2438_4824_1803_51.png'), (2273, '2273_986_1752_52.png'), (1448, '1448_2569_1367_51.png')])
set([(2857, '2857_1801_2040_50.png'), (2940, '2940_2041_2089_51.png'), (2859, '2859_1897_2040_50.png'), (2406, '2406_2473_1801_50.png'), (1273, '1273_984_1274_51.png'), (2407, '2407_2521_1801_50.png'), (1669, '1669_1080_1465_51.png'), (2404, '2404_2375_1800_51.png'), (891, '891_696_1081_50.png'), (3118, '3118_4400_2210_66.png'), (2858, '2858_1849_2041_50.png'), (2597, '2597_2328_1897_51.png'), (812, '812_2184_1032_53.png'), (2217, '2217_3241_1704_51.png'), (2780, '2780_1897_1992_51.png')])
set([(1522, '1522_888_1415_52.png'), (133, '133_407_361_52.png'), (115, '115_1036_314_52.png'), (1501, '1501_4538_1369_51.png'), (105, '105_313_313_52.png'), (3285, '3285_2041_2330_52.png'), (2012, '2012_4105_1609_50.png'), (1479, '1479_2472_1368_50.png'), (3339, '3339_1894_2431_55.png'), (170, '170_938_409_51.png'), (1241, '1241_2426_1270_52.png'), (2325, '2325_3961_1752_51.png'), (731, '731_2666_984_51.png'), (3274, '3274_1945_2330_51.png'), (48, '48_502_207_56.png'), (2873, '2873_3192_2041_51.png'), (88, '88_1035_264_53.png'), (634, '634_936_936_51.png'), (694, '694_255_984_54.png'), (912, '912_2665_1081_51.png'), (720, '720_1033_984_50.png'), (91, '91_458_259_53.png'), (1176, '1176_1321_1226_51.png'), (2951, '2951_3192_2090_51.png'), (785, '785_309_1033_53.png'), (113, '113_938_313_51.png'), (1251, '1251_2473_1272_51.png')])
set([(2440, '2440_4922_1805_53.png'), (2342, '2342_4970_1755_51.png'), (2581, '2581_986_1897_52.png'), (2389, '2389_4682_1802_51.png'), (2439, '2439_4872_1802_51.png'), (2343, '2343_5019_1754_53.png'), (2290, '2290_841_1754_51.png'), (2458, '2458_1035_1849_52.png'), (1683, '1683_2569_1465_50.png'), (2340, '2340_4872_1753_51.png')])

In [ ]:
print "Done"

In [ ]: