Source code for allensdk.internal.model.glif.plotting

'''Written by Corinne Teeter 3-31-14
'''

import matplotlib
import matplotlib.pyplot as plt
import numpy as np


[docs]def checkPreprocess(originalStim_list, processedStim_list, originalVoltage_list, processedVoltage_list, config, blockME=False): timeOriginal=np.arange(len(np.concatenate(originalStim_list)))*config.neuron['dt'] if 'subSample' in config.dictOfPreprocessMethods.keys(): timeProcessed=np.arange(len(np.concatenate(processedStim_list)))*config.dictOfPreprocessMethods['subSample']['desired_time_step'] else: timeProcessed=timeOriginal plt.figure(figsize=(20,10)) plt.subplot(4,1,1) plt.plot(timeOriginal, np.concatenate(originalStim_list), 'b') plt.title('original stimulation') plt.subplot(4,1,2) plt.plot(timeProcessed, np.concatenate(processedStim_list), 'r') plt.title('processed stimulation') plt.subplot(4,1,3) plt.plot(timeOriginal, np.concatenate(originalVoltage_list), 'b') plt.title('original voltage') plt.subplot(4,1,4) plt.plot(timeProcessed, np.concatenate(processedVoltage_list), 'r') plt.title('processed voltage') plt.annotate(config.cellName+': View result of preprocessing', xy=(.4, .975), xycoords='figure fraction', horizontalalignment='left', verticalalignment='top', fontsize=20)
# plt.show(block=blockME)
[docs]def plotSpikes(voltage_list, spike_ind_list, dt, blockME=False, method=False): converted_spike_ind_list=[] time=np.arange(len(np.concatenate(voltage_list)))*dt #--find the length of each vector thelength=0 for ii, voltage in enumerate(voltage_list): converted_spike_ind_list.append(spike_ind_list[ii]+thelength) thelength=thelength+len(voltage) subsampled_time=[time[ii] for ii in np.concatenate(converted_spike_ind_list)] plt.figure(figsize=(20, 5)) plt.plot(time, np.concatenate(voltage_list), 'b') plt.plot(subsampled_time, [np.concatenate(voltage_list)[ii] for ii in np.concatenate(converted_spike_ind_list)], 'r.', ms=16) if method==False: plt.title('Spikes') else: plt.title('Spikes. Method used: '+method) plt.ylabel('voltage (V)') plt.xlabel('time (s)')
# plt.show(block=blockME)
[docs]def checkSpikeCutting(originalStim_list, cutStim_list, originalVoltage_list, cutVoltage_list, allindOfNonSpiking_list, config, blockME=False): if len(originalStim_list)!=len(cutStim_list) or \ len(originalStim_list)!=len(originalVoltage_list) or \ len(originalStim_list)!=len(cutVoltage_list) or \ len(originalStim_list)!=len(allindOfNonSpiking_list): raise Exception('lists are not the same length') lengthGoingToAdd=0 whole_ind=np.array([]) whole_v=np.array([]) for trace, ind_array in zip(originalVoltage_list, allindOfNonSpiking_list): ind=np.arange(0, len(trace))+lengthGoingToAdd whole_ind=np.append(whole_ind, [ind[ii] for ii in ind_array]) whole_v=np.append(whole_v, [trace[ii] for ii in ind_array]) lengthGoingToAdd=lengthGoingToAdd+len(trace) time=np.arange(len(np.concatenate(originalStim_list)))*config.neuron['dt'] plt.figure(figsize=(20,10)) plt.subplot(1,1,1) plt.plot(time, np.concatenate(originalVoltage_list)) plt.title('voltage') plt.plot(whole_ind*config.neuron['dt'], whole_v, '--r', lw=2) plt.annotate(config.cellName+': check spike cutting', xy=(.4, .975), xycoords='figure fraction', horizontalalignment='left', verticalalignment='top', fontsize=20)
# plt.show(block=blockME)
[docs]def plotLineRegress1(slope, intercept, r,xlim): y=slope*xlim+intercept print('slope=', slope, 'intercept=', intercept, 'xlim', xlim) plt.plot(xlim, y, '-k', lw=4, label='slope='+"%.2f"%slope+', intercept='+"%.3f"%intercept+', r='+"%.2f"%r)
[docs]def plotLineRegressRed(slope, intercept, r,xlim): y=slope*xlim+intercept print('slope=', slope, 'intercept=', intercept, 'xlim', xlim) plt.plot(xlim, y, '-r', lw=4, label='slope='+"%.2f"%slope+', intercept='+"%.3f"%intercept+', r='+"%.2f"%r)