#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import pickle
sys.path.extend(["..","../networks","../generators","../simulations"])
from OBNetwork import *
from stimuliConstants import * # has PULSE_SETTLETIME, pulsebins
from simset_odor import * # has ONLY_TWO_MITS
from pylab import * # part of matplotlib that depends on numpy but not scipy
def plot_pulse_responses(picklefile):
f = open(picklefile,'r')
(mitral_responses_list,mitral_responses_binned_list) = pickle.load(f)
f.close()
numpulses = RANDOM_PULSE_NUMS*2
pulsebindt = PULSE_RUNTIME/pulsebins
pulsetlist = arange(pulsebindt/2.0,PULSE_RUNTIME,pulsebindt)
numavgs = len(mitral_responses_list)
mitral_responses_avg = mean(mitral_responses_binned_list, axis=0)
mitral_responses_std = std(mitral_responses_binned_list, axis=0)
# since I plot the mean response, I must plot standard error of the mean
# = standard deviation of a repeat / sqrt(num of repeats).
mitral_responses_se = mitral_responses_std/sqrt(numavgs)
if ONLY_TWO_MITS: mitlist = range(MIT_SISTERS)
else: mitlist = range(NUM_GLOMS*MIT_SISTERS)
for mitnum in mitlist:
if mitnum%MIT_SISTERS == 0:
figure()
title('Glomerulus '+str(mitnum/MIT_SISTERS))
for pulsenum in range(numpulses):
sister_ratio = (mitnum%MIT_SISTERS)/float(MIT_SISTERS)
errorbar(pulsetlist,y=mitral_responses_avg[pulsenum,mitnum],\
yerr=mitral_responses_se[pulsenum,mitnum],\
color=(pulsenum/float(numpulses),1-pulsenum/float(numpulses),sister_ratio))
## compare responses of central sisters to odors A & B
figure()
mit0 = central_glom*2+0
mit1 = central_glom*2+1
title('Sisters of central glomerulus - odorA')
## first pulse
errorbar(pulsetlist,y=mitral_responses_avg[1,mit0],\
yerr=mitral_responses_se[1,mit0],\
color=(1,0,0),label='odorA_mit0')
errorbar(pulsetlist,y=mitral_responses_avg[1,mit1],\
yerr=mitral_responses_se[1,mit1],\
color=(1,0,1),label='odorA_mit1')
## second pulse
figure()
title('Sisters of central glomerulus - odorA')
errorbar(pulsetlist,y=mitral_responses_avg[3,mit0],\
yerr=mitral_responses_se[3,mit0],\
color=(1,0.5,0),label='odorA_mit0')
errorbar(pulsetlist,y=mitral_responses_avg[3,mit1],\
yerr=mitral_responses_se[3,mit1],\
color=(1,0.5,1),label='odorA_mit1')
figure()
title('Sisters of central glomerulus - odorB')
## first pulse
errorbar(pulsetlist,y=mitral_responses_avg[2,mit0],\
yerr=mitral_responses_se[2,mit0],\
color=(0,1,0),label='odorB_mit0')
errorbar(pulsetlist,y=mitral_responses_avg[2,mit1],\
yerr=mitral_responses_se[2,mit1],\
color=(0,1,1),label='odorB_mit1')
## second pulse
figure()
title('Sisters of central glomerulus - odorB')
errorbar(pulsetlist,y=mitral_responses_avg[4,mit0],\
yerr=mitral_responses_se[4,mit0],\
color=(0.5,1,0),label='odorB_mit0')
errorbar(pulsetlist,y=mitral_responses_avg[4,mit1],\
yerr=mitral_responses_se[4,mit1],\
color=(0.5,1,1),label='odorB_mit1')
if __name__ == "__main__":
if len(sys.argv)<2:
print "You need to specify the morph responses pickle filename."
sys.exit(1)
plot_pulse_responses(sys.argv[1])
show()