In [2]:
%matplotlib inline

from matplotlib import pyplot as plt
import matplotlib.mlab as mlab
import csv
from scipy.stats import norm
import numpy as np
import scipy.stats as stats

In [3]:
data = open('../data/data.csv', 'r').readlines()
fieldnames = ['x', 'y', 'z', 'unmasked', 'synapses']
reader = csv.reader(data)
reader.next()

rows = [[int(col) for col in row] for row in reader]

In [43]:
sorted_y = sorted(list(set([r[1] for r in rows])))
sorted_z = sorted(list(set([r[2] for r in rows])))
# y vals = [1369, 1408, 1447, 1486, 1525, 1564, 1603, 1642, 1681, 
            #1720, 1759, 1798, 1837, 1876, 1915, 1954, 1993, 2032, 
            #2071, 2110, 2149, 2188, 2227, 2266, 2305, 2344, 2383, 
            #2422, 2461, 2500, 2539, 2578, 2617, 2656, 2695, 2734, 
            #2773, 2812, 2851, 2890, 2929, 2968, 3007, 3046, 3085, 
            #3124, 3163, 3202, 3241, 3280, 3319, 3358]

In [5]:
for i in sorted_y:
    unmaskedSynapsesNoZero = ([r[-1] for r in rows if r[-2] != 0 if r[-1] !=0 if r[1] == i])
    mean = np.mean(unmaskedSynapsesNoZero)
    variance = np.var(unmaskedSynapsesNoZero)
    plt.hist(unmaskedSynapsesNoZero, bins=50)
    plt.title("Layer " + str(i))
    plt.show()
    print "Layer " + str(i) + " has a mean: " + str(mean) + " and variance: " + str(variance)


Layer 1369 has a mean: 172.90655885 and variance: 6352.09908546
Layer 1408 has a mean: 169.21217547 and variance: 6661.21639607
Layer 1447 has a mean: 168.855734767 and variance: 6611.02488647
Layer 1486 has a mean: 174.01170117 and variance: 6911.43190629
Layer 1525 has a mean: 176.261301989 and variance: 6257.14058203
Layer 1564 has a mean: 176.981046931 and variance: 6650.63411732
Layer 1603 has a mean: 176.452898551 and variance: 6950.61734667
Layer 1642 has a mean: 180.980108499 and variance: 6360.64155731
Layer 1681 has a mean: 185.218181818 and variance: 6529.25966942
Layer 1720 has a mean: 186.479564033 and variance: 6469.62832897
Layer 1759 has a mean: 185.626811594 and variance: 6191.14152752
Layer 1798 has a mean: 177.955575703 and variance: 5969.19022956
Layer 1837 has a mean: 172.568949772 and variance: 5907.67355643
Layer 1876 has a mean: 175.453467153 and variance: 5842.77520696
Layer 1915 has a mean: 178.257064722 and variance: 5756.02689859
Layer 1954 has a mean: 175.255454545 and variance: 5803.31383388
Layer 1993 has a mean: 171.575342466 and variance: 5749.0571089
Layer 2032 has a mean: 163.039233577 and variance: 5724.03951912
Layer 2071 has a mean: 161.126142596 and variance: 5691.29670231
Layer 2110 has a mean: 167.531934307 and variance: 5467.55007509
Layer 2149 has a mean: 169.118874773 and variance: 5467.93595953
Layer 2188 has a mean: 172.001814882 and variance: 5078.99636694
Layer 2227 has a mean: 165.93715847 and variance: 5164.74559557
Layer 2266 has a mean: 157.211050725 and variance: 5149.05600107
Layer 2305 has a mean: 153.248860529 and variance: 5381.16596269
Layer 2344 has a mean: 157.020128088 and variance: 4993.5476278
Layer 2383 has a mean: 160.717925387 and variance: 5055.91861408
Layer 2422 has a mean: 157.729261623 and variance: 4913.31867885
Layer 2461 has a mean: 154.058394161 and variance: 4619.36520326
Layer 2500 has a mean: 149.732664234 and variance: 4826.30353159
Layer 2539 has a mean: 144.028362306 and variance: 4449.58839961
Layer 2578 has a mean: 149.671875 and variance: 4313.72045898
Layer 2617 has a mean: 147.722120658 and variance: 4349.4492913
Layer 2656 has a mean: 140.963302752 and variance: 4186.54727717
Layer 2695 has a mean: 138.975183824 and variance: 4319.83853857
Layer 2734 has a mean: 141.383194829 and variance: 3885.83746459
Layer 2773 has a mean: 135.741219963 and variance: 3865.90530646
Layer 2812 has a mean: 129.258953168 and variance: 4144.07252085
Layer 2851 has a mean: 125.985347985 and variance: 3874.71407103
Layer 2890 has a mean: 122.108555658 and variance: 3722.07837206
Layer 2929 has a mean: 117.620593692 and variance: 3686.00725679
Layer 2968 has a mean: 111.225621415 and variance: 3869.58389421
Layer 3007 has a mean: 100.810218978 and variance: 3974.72310725
Layer 3046 has a mean: 103.269230769 and variance: 4474.30972633
Layer 3085 has a mean: 97.0806223479 and variance: 4458.22970937
Layer 3124 has a mean: 82.3756432247 and variance: 3982.13504997
Layer 3163 has a mean: 66.625 and variance: 3622.60279605
Layer 3202 has a mean: 61.7955390335 and variance: 3243.32250798
Layer 3241 has a mean: 35.5898876404 and variance: 1299.2194483
Layer 3280 has a mean: 9.50526315789 and variance: 64.6499722992
Layer 3319 has a mean: 3.93181818182 and variance: 8.79080578512
Layer 3358 has a mean: 1.4 and variance: 0.24

In [7]:
for i in sorted_y:
    unmaskedSynapsesNoZero = ([r[-1] for r in rows if r[-2] != 0 if r[-1] !=0 if r[1] == i])
    # best fit of data
    (mu, sigma) = norm.fit(unmaskedSynapsesNoZero)

    # the histogram of the data
    n, bins, patches = plt.hist(unmaskedSynapsesNoZero, 60, normed=1, facecolor='green', alpha=0.75)

    # add a 'best fit' line
    y = mlab.normpdf( bins, mu, sigma)
    l = plt.plot(bins, y, 'r--', linewidth=2)

    #plot
    plt.xlabel("Layer " + str(i))
    plt.ylabel('Probability')
    plt.title(r'$\mathrm{Histogram\ of\ IQ:}\ \mu=%.3f,\ \sigma=%.3f$' %(mu, sigma))
    plt.grid(True)

    plt.show()



In [8]:
for i in sorted_y:
    unmaskedSynapsesNoZero = ([r[-1] for r in rows if r[-2] != 0 if r[-1] !=0 if r[1] == i])

    alpha, loc, beta=stats.gamma.fit(unmaskedSynapsesNoZero)

    rv = stats.gamma(alpha,loc,beta)

    h = plt.hist(unmaskedSynapsesNoZero, normed=True, bins=50)
    x = np.linspace(0,400)
    plt.plot(x, rv.pdf(x), lw=2)
    plt.show()



In [13]:
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

#print unmaskedSynapsesNoZero
x = []
y = []
z = []
val = []

for r in rows:
    if r[-2] != 0:
        if r[-1] !=0:
            x.append(r[0])
            y.append(r[1])
            z.append(r[2])
            
ax.scatter(x, y, z, c='b')
plt.show()



In [21]:
#take into account for combined data
s = []
for r in rows:
    if r[-2] != 0:
        if r[-1] !=0:
            s.append(float(r[-1])/float(r[-2]))
    
#GAUSSIAN
# best fit of data normal curve (gaussian)
(mu, sigma) = norm.fit(s)
# the histogram of the data
n, bins, patches = plt.hist(s, 60, normed=1, facecolor='green', alpha=0.75)
# add a 'best fit' line
y = mlab.normpdf( bins, mu, sigma)
l = plt.plot(bins, y, 'r--', linewidth=2)

plt.show()



In [24]:
#take into account unmasked for each layer

for i in sorted_y:
    s = []
    for r in rows:
        if r[-2] != 0:
            if r[-1] !=0:
                if r[1] == i:
                    s.append(float(r[-1])/float(r[-2]))
    
    #GAUSSIAN
    # best fit of data normal curve (gaussian)
    (mu, sigma) = norm.fit(s)
    # the histogram of the data
    n, bins, patches = plt.hist(s, 100, normed=1, facecolor='green', alpha=0.75)
    # add a 'best fit' line
    y = mlab.normpdf( bins, mu, sigma)
    l = plt.plot(bins, y, 'r--', linewidth=2)
    
    #GAMMA
    #alpha, loc, beta=stats.gamma.fit(s)
    #print alpha, loc, beta
    #rv = stats.gamma(alpha,loc,beta)
    #x = np.linspace(0,.005)
    #plt.plot(x, rv.pdf(x), lw=3)
    plt.title("Layer " + str(i))
    plt.show()



In [42]:
import matplotlib
#print unmaskedSynapsesNoZero

allVal = []
for r in rows:
    if r[-2] != 0:
            if r[-1] !=0:
                allVal.append(r[-1])
                
norm = matplotlib.colors.Normalize(vmin = np.min(allVal), vmax = np.max(allVal), clip = False)

for i in sorted_y:
    x = []
    z = []
    val = []

    for r in rows:
        if r[-2] != 0:
            if r[-1] !=0:
                if r[1] == i:
                    x.append(r[0])
                    z.append(r[2])
                    val.append(r[-1])
            
    plt.scatter(x,z,s = 100, c = val,norm=norm)
    plt.show()



In [50]:
allVal = []
for r in rows:
    if r[-2] != 0:
            if r[-1] !=0:
                allVal.append(float(r[-1])/r[-2])
                
norm = matplotlib.colors.Normalize(vmin = np.min(allVal), vmax = np.max(allVal), clip = False)

for i in sorted_z:
    x = []
    y = []
    val = []

    for r in rows:
        if r[-2] != 0:
            if r[-1] !=0:
                if r[2] == i:
                    x.append(r[0])
                    y.append(r[1])
                    val.append(float(r[-1])/r[-2])
            
    plt.scatter(x,y,s = 10, c = val,norm=norm)
    plt.show()



In [ ]: