Ejemplo n.º 1
0
def flashgrating (datapath, logpath, modality, numbins, showflag):
    '''analysis for grating stimuli including: orientation, spatial frequency or temporal frequency'''
    print "loading data from:",datapath
    numberofshanks = 8
    '''get data'''    
    #sweeptiming = loadsweeptimes(datapath)
    (spiketimes, cellnumber) = loadclu(datapath, numberofshanks)
    nc = size(spiketimes,1)
    
    '''get log'''
    #(sweeporder, sweeptable, bgdimnames) = getSweepTimesEP(logpath)
    (stimc, duration, constring) = getSweepTimesEP(logpath, datapath, modality)    
    
    tfreq = stimc[0,3]  
    
    if (modality.find("sf")+1):
        tlabel = "Spatial frequency (Cyc/Deg)"
        ticks = np.arange(0, 0.62, 0.1)
        print tlabel
        print constring
        orivals = np.unique(stimc[:,1])
        orivals = np.delete(orivals, 3, 0)
        for i in range(len(orivals)):
            stimuluscondition = stimc[np.where(stimc[:,1] == orivals[i])]
            ostr = str(orivals[i])+"Deg"            
            constring = constring + " at " + ostr
            print ostr
            (tuning, f0mean, f0sem, f1mean, f1sem, f2mean, f2sem) = dotuning(stimuluscondition, spiketimes, cellnumber, 2, duration, tlabel, ticks, constring, ostr, numbins, showflag)                
    elif (modality.find("tf")+1):
        tlabel = "Temporal frequency (Cyc/Sec)"
        ticks = range(0,15,3)
        print tlabel
        print constring
        orivals = np.unique(stimc[:,1])
        orivals = np.delete(orivals, 3, 0)
        for i in range(len(orivals)):
            ostr = str(orivals[i])+"Deg"
            constring = constring + " at " + ostr
            stimuluscondition = stimc[np.where(stimc[:,1] == orivals[i])]
            print ostr
            (tuning, f0mean, f0sem, f1mean, f1sem, f2mean, f2sem) = dotuning(stimuluscondition, spiketimes, cellnumber, 3, duration, tlabel, ticks, constring, ostr, numbins, showflag)
    elif (modality.find("ori")+1):
        tlabel = "Orientation (Deg)"
        ticks = range(0,361,90)
        print tlabel
        print constring
        stimuluscondition = stimc
        ostr = "allori"
        (tuning, f0mean, f0sem, f1mean, f1sem, f2mean, f2sem) = dotuning(stimuluscondition, spiketimes, cellnumber, 1, duration, tlabel, ticks, constring, ostr, numbins, showflag)
    else:
        print "No modality specified"
    
    fileout = datapath+'_cellnumber.dat'    
    np.savetxt(fileout, cellnumber,'%f')
    
    return (cellnumber, tuning, f0mean, f0sem, f1mean, f1sem, f2mean, f2sem)
Ejemplo n.º 2
0
def sftf(datapath, logpath, numbins, showflag):
    '''analysis for spatial frequency X temporal frequency X orientation stimulus'''
    print "loading data from:",datapath
    numberofshanks = 8
    '''get data'''    
    (spiketimes, cellnumber) = loadclu(datapath, numberofshanks)
    nc = size(spiketimes,1)
    
    '''get log'''
    (stimc, duration, constring) = getSweepTimesEP(logpath, datapath, 'sftf')
    
    orivals = np.unique(stimc[:,1])
    orivals = np.delete(orivals, 3, 0)
    for i in range(len(orivals)):
        stimuluscondition = stimc[np.where(stimc[:,1] == orivals[i])]
        ostr = str(orivals[i])+"Deg"            
        constring = constring + " at " + ostr
        (f0mean, f0sem, f1mean, f1sem, f2mean, f2sem) = sftftuning(stimuluscondition, spiketimes, cellnumber, 3, duration, constring, ostr, numbins, showflag)
    return (cellnumber, f0mean, f0sem, f1mean, f1sem, f2mean, f2sem)
Ejemplo n.º 3
0
def conrevEP(datapath, logpath, numbins, showflag):
    '''analysis for contrast reversing e-phys data'''
    print "loading data from:",datapath
    numberofshanks = 8
    '''get data'''    
    (spiketimes, cellnumber) = loadclu(datapath, numberofshanks)
    nc = size(spiketimes,1)
    
    '''get log'''
    modality = 'conrev'
    (stimc, duration, tfreq, constring) = getSweepTimesEPcr(logpath, datapath)
    
    tlabel = "Phase (Deg)"
    ticks = range(0,151,30)
    print tlabel
    print constring
    orivals = np.unique(stimc[:,1])
    orivals = np.delete(orivals, 3, 0)
    for i in range(len(orivals)):
        ostr = str(orivals[i])+"Deg"
        print ostr
        constring = constring + " at " + ostr
        stimuluscondition = stimc[np.where(stimc[:,1] == orivals[i])]
        (tuning, f0m, f0s, f1m, f1s, f2m, f2s) = dotuning(stimuluscondition, spiketimes, cellnumber, 2, duration, tlabel, ticks, constring, ostr, numbins, showflag)
        plotconrev(tuning, f1m, f1s, f2m, f2s, ostr, constring)        
        if i == 0:
            f0mean = np.empty((size(f0m,0), size(f0m,1), len(orivals)))
            f0sem = np.empty((size(f0m,0), size(f0m,1), len(orivals)))
            f1mean = np.empty((size(f2m,0), size(f1m,1), len(orivals)))
            f1sem = np.empty((size(f2m,0), size(f1m,1), len(orivals)))
            f2mean = np.empty((size(f2m,0), size(f2m,1), len(orivals)))
            f2sem = np.empty((size(f2m,0), size(f2m,1), len(orivals)))
        f0mean[:,:,i] = f0m[:,:]
        f0sem[:,:,i] = f0s[:,:]
        f1mean[:,:,i] = f1m[:,:]
        f1sem[:,:,i] = f1s[:,:]  
        f2mean[:,:,i] = f2m[:,:]
        f2sem[:,:,i] = f2s[:,:]
    
    return (tuning, f0mean, f1mean, f2mean, f0sem, f1sem, f2sem)
    
    '''plot data'''
Ejemplo n.º 4
0
def flashgrating (datapath, logpath, modality, numbins, showflag):
    '''analysis for EPhys grating experiments including: orientation, spatial frequency or temporal frequency'''
    print "loading data from:",datapath
    numberofshanks = 8
    '''get data'''    
    #sweeptiming = loadsweeptimes(datapath)
    (spiketimes, cellnumber) = loadclu(datapath, numberofshanks)
    nc = size(spiketimes,1)
    
    '''get log'''
    #(sweeporder, sweeptable, bgdimnames) = getSweepTimesEP(logpath)
    (stimc, duration, constring) = getSweepTimesEP(logpath, datapath, modality)    
    
    tfreq = stimc[0,3]  
    
    if (modality.find("sf")+1):
        tlabel = "Spatial frequency (Cyc/Deg)"
        ticks = np.arange(0, 0.62, 0.1)
        print tlabel
        print constring
        orivals = np.unique(stimc[:,1])
        orivals = np.delete(orivals, 3, 0)
        for i in range(len(orivals)):
            stimuluscondition = stimc[np.where(stimc[:,1] == orivals[i])]
            ostr = str(orivals[i])+"Deg"            
            constring = constring + " at " + ostr
            print ostr
            (tuning, f0m, f0s, f1m, f1s, f2m, f2s) = dotuning(stimuluscondition, spiketimes, cellnumber, 2, duration, tlabel, ticks, constring, ostr, numbins, showflag)
            if i == 0:
                f0mean = np.empty((size(f0m,0), size(f0m,1), len(orivals)))
                f0sem = np.empty((size(f0m,0), size(f0m,1), len(orivals)))
                f1mean = np.empty((size(f2m,0), size(f1m,1), len(orivals)))
                f1sem = np.empty((size(f2m,0), size(f1m,1), len(orivals)))
                f2mean = np.empty((size(f2m,0), size(f2m,1), len(orivals)))
                f2sem = np.empty((size(f2m,0), size(f2m,1), len(orivals)))
            f0mean[:,:,i] = f0m[:,:]
            f0sem[:,:,i] = f0s[:,:]
            f1mean[:,:,i] = f1m[:,:]
            f1sem[:,:,i] = f1s[:,:]  
            f2mean[:,:,i] = f2m[:,:]
            f2sem[:,:,i] = f2s[:,:]                        
    elif (modality.find("tf")+1):
        tlabel = "Temporal frequency (Cyc/Sec)"
        ticks = range(0,16,3)
        print tlabel
        print constring
        orivals = np.unique(stimc[:,1])
        orivals = np.delete(orivals, 3, 0)
        for i in range(len(orivals)):
            ostr = str(orivals[i])+"Deg"
            constring = constring + " at " + ostr
            stimuluscondition = stimc[np.where(stimc[:,1] == orivals[i])]
            print ostr
            (tuning, f0m, f0s, f1m, f1s, f2m, f2s) = dotuning(stimuluscondition, spiketimes, cellnumber, 3, duration, tlabel, ticks, constring, ostr, numbins, showflag)
            if i == 0:
                f0mean = np.empty((size(f0m,0), size(f0m,1), len(orivals)))
                f0sem = np.empty((size(f0m,0), size(f0m,1), len(orivals)))
                f1mean = np.empty((size(f2m,0), size(f1m,1), len(orivals)))
                f1sem = np.empty((size(f2m,0), size(f1m,1), len(orivals)))
                f2mean = np.empty((size(f2m,0), size(f2m,1), len(orivals)))
                f2sem = np.empty((size(f2m,0), size(f2m,1), len(orivals)))
            f0mean[:,:,i] = f0m[:,:]
            f0sem[:,:,i] = f0s[:,:]
            f1mean[:,:,i] = f1m[:,:]
            f1sem[:,:,i] = f1s[:,:]  
            f2mean[:,:,i] = f2m[:,:]
            f2sem[:,:,i] = f2s[:,:]      
    elif (modality.find("ori")+1):
        tlabel = "Orientation (Deg)"
        ticks = range(0,361,90)
        print tlabel
        print constring
        stimuluscondition = stimc
        ostr = "allori"
        (tuning, f0mean, f0sem, f1mean, f1sem, f2mean, f2sem) = dotuning(stimuluscondition, spiketimes, cellnumber, 1, duration, tlabel, ticks, constring, ostr, numbins, showflag)
    else:
        print "No modality specified"
        
    '''plot data'''
    for s in range(1,9):
        firstcell = findlevelbuffer(cellnumber, s, 100) 
        lastcell = findlevelbuffer(cellnumber, (s+1), 100)
        if lastcell > firstcell:     
            sn = lastcell - firstcell
            print "shank #"+str(s)+" has "+str(sn)+" cells"
            figure(s)        
            for c in range(sn):
                sp = c + firstcell
                ax1 = subplot(ceil(sqrt(sn)), round(sqrt(sn)), c+1)
                if (modality.find("sf")+1) or (modality.find("tf")+1):
                    ax1.set_xscale("log", nonposx='clip')
                    ax1.errorbar(tuning, f1mean[:,sp,0], yerr=f1sem[:,sp,0], fmt = 'ro', capsize=2, linestyle='-')
                    ax1.errorbar(tuning, f1mean[:,sp,1], yerr=f1sem[:,sp,1], fmt = 'bo', capsize=2, linestyle='-')
                    ax1.errorbar(tuning, f1mean[:,sp,2], yerr=f1sem[:,sp,2], fmt = 'go', capsize=2, linestyle='-')
                else:              
                    ax1.errorbar(tuning, f1mean[:,sp], yerr=f1sem[:,sp], fmt = 'ro', capsize=2, linestyle='-')
                ax1.set_ylabel('F1', fontsize=10)
                ax1.set_ylim(bottom=0)
                xticks(ticks)             
                xlabel(tlabel, fontsize=10)
                text(0,0, str(c+1), fontsize=10)
                tick_params(axis='both', which='major', labelsize=7)
                tight_layout()
            subplots_adjust(top=0.9)
            suptitle("Shank #"+str(s)+':'+constring, fontsize=14)
            if (modality.find("sf")+1) or (modality.find("tf")+1):
                figtext(0.1, 0.92, '0 Deg', color='red')
                figtext(0.2, 0.92, '120 Deg', color = 'blue')
                figtext(0.3, 0.92, '240 Deg', color = 'green')
            fname = datapath+'_'+modality+'_tuning'+str(s)+'.png'
            savefig(fname)
            show(False)
    
    '''save data'''
    fullfilename = datapath + "_" + modality + "Data.h5"    
    f = h5py.File(fullfilename, 'w')
    dset = f.create_dataset("f0mean", f0mean.shape, 'f')
    dset[...] = f0mean
    if (modality.find("sf")+1) or (modality.find("tf")+1):  
        dset.attrs["orivalues"] = orivals
    dset.attrs["datapath"] = datapath
    dset.attrs["logpath"] = logpath
    dset2 = f.create_dataset("f0sem", f0sem.shape, 'f')
    dset2[...] = f0sem
    dset3 = f.create_dataset("f1mean", f1mean.shape, 'f')
    dset3[...] = f1mean
    dset4 = f.create_dataset("f1sem", f1sem.shape, 'f')
    dset4[...] = f1sem
    dset5 = f.create_dataset("tuning", tuning.shape, 'f')
    dset5[...] = tuning
    dset6 = f.create_dataset("cellnumber", cellnumber.shape, 'f')
    dset6[...] = cellnumber
    f.close()    

    
    return (cellnumber, tuning, f0mean, f0sem, f1mean, f1sem, f2mean, f2sem)