annotate testPrograms/showMAP.m @ 0:f233164f4c86

first commit
author Ray Meddis <rmeddis@essex.ac.uk>
date Fri, 27 May 2011 13:19:21 +0100
parents
children 35af36fe0a35
rev   line source
rmeddis@0 1 function showMAP (options)
rmeddis@0 2 % defaults
rmeddis@0 3 % options.showModelParameters=1;
rmeddis@0 4 % options.showModelOutput=1;
rmeddis@0 5 % options.printFiringRates=1;
rmeddis@0 6 % options.showACF=1;
rmeddis@0 7 % options.showEfferent=1;
rmeddis@0 8
rmeddis@0 9 dbstop if warning
rmeddis@0 10
rmeddis@0 11 global dt ANdt saveAN_spikesOrProbability savedBFlist saveMAPparamsName...
rmeddis@0 12 savedInputSignal TMoutput OMEoutput ARattenuation ...
rmeddis@0 13 DRNLoutput IHC_cilia_output IHCrestingCiliaCond IHCrestingV...
rmeddis@0 14 IHCoutput ANprobRateOutput ANoutput savePavailable tauCas ...
rmeddis@0 15 CNoutput ICoutput ICmembraneOutput ICfiberTypeRates MOCattenuation
rmeddis@0 16
rmeddis@0 17 restorePath=path;
rmeddis@0 18 addpath ( ['..' filesep 'utilities'], ['..' filesep 'parameterStore'])
rmeddis@0 19
rmeddis@0 20 if nargin<1
rmeddis@0 21 options.showModelParameters=1;
rmeddis@0 22 options.showModelOutput=1;
rmeddis@0 23 options.printFiringRates=1;
rmeddis@0 24 options.showACF=1;
rmeddis@0 25 options.showEfferent=1;
rmeddis@0 26 end
rmeddis@0 27
rmeddis@0 28 if options.showModelParameters
rmeddis@0 29 % Read parameters from MAPparams<***> file in 'parameterStore' folder
rmeddis@0 30 % and print out all parameters
rmeddis@0 31 cmd=['MAPparams' saveMAPparamsName ...
rmeddis@0 32 '(-1, 1/dt, 1);'];
rmeddis@0 33 eval(cmd);
rmeddis@0 34 end
rmeddis@0 35
rmeddis@0 36 if options.printFiringRates
rmeddis@0 37 %% print summary firing rates
rmeddis@0 38 fprintf('\n\n')
rmeddis@0 39 disp('summary')
rmeddis@0 40 disp(['AR: ' num2str(min(ARattenuation))])
rmeddis@0 41 disp(['MOC: ' num2str(min(min(MOCattenuation)))])
rmeddis@0 42 nANfiberTypes=length(tauCas);
rmeddis@0 43 if strcmp(saveAN_spikesOrProbability, 'spikes')
rmeddis@0 44 nANfibers=size(ANoutput,1);
rmeddis@0 45 nHSRfibers=nANfibers/nANfiberTypes;
rmeddis@0 46 duration=size(TMoutput,2)*dt;
rmeddis@0 47 disp(['AN: ' num2str(sum(sum(ANoutput(end-nHSRfibers+1:end,:)))/...
rmeddis@0 48 (nHSRfibers*duration))])
rmeddis@0 49
rmeddis@0 50 nCNneurons=size(CNoutput,1);
rmeddis@0 51 nHSRCNneuronss=nCNneurons/nANfiberTypes;
rmeddis@0 52 disp(['CN: ' num2str(sum(sum(CNoutput(end-nHSRCNneuronss+1:end,:)))...
rmeddis@0 53 /(nHSRCNneuronss*duration))])
rmeddis@0 54 disp(['IC: ' num2str(sum(sum(ICoutput)))])
rmeddis@0 55 disp(['IC by type: ' num2str(mean(ICfiberTypeRates,2)')])
rmeddis@0 56 else
rmeddis@0 57 disp(['AN: ' num2str(mean(mean(ANprobRateOutput)))])
rmeddis@0 58 end
rmeddis@0 59 end
rmeddis@0 60
rmeddis@0 61
rmeddis@0 62 %% figure (99) summarises main model output
rmeddis@0 63 if options.showModelOutput
rmeddis@0 64 plotInstructions.figureNo=99;
rmeddis@0 65 signalRMS=mean(savedInputSignal.^2)^0.5;
rmeddis@0 66 signalRMSdb=20*log10(signalRMS/20e-6);
rmeddis@0 67
rmeddis@0 68 % plot signal (1)
rmeddis@0 69 plotInstructions.displaydt=dt;
rmeddis@0 70 plotInstructions.numPlots=6;
rmeddis@0 71 plotInstructions.subPlotNo=1;
rmeddis@0 72 plotInstructions.title=...
rmeddis@0 73 ['stimulus: ' num2str(signalRMSdb, '%4.0f') ' dB SPL'];
rmeddis@0 74 r=size(savedInputSignal,1);
rmeddis@0 75 if r==1, savedInputSignal=savedInputSignal'; end
rmeddis@0 76 UTIL_plotMatrix(savedInputSignal', plotInstructions);
rmeddis@0 77
rmeddis@0 78 % stapes (2)
rmeddis@0 79 plotInstructions.subPlotNo=2;
rmeddis@0 80 plotInstructions.title= ['stapes displacement'];
rmeddis@0 81 UTIL_plotMatrix(OMEoutput, plotInstructions);
rmeddis@0 82
rmeddis@0 83 % DRNL (3)
rmeddis@0 84 plotInstructions.subPlotNo=3;
rmeddis@0 85 plotInstructions.title= ['BM displacement'];
rmeddis@0 86 plotInstructions.yValues= savedBFlist;
rmeddis@0 87 UTIL_plotMatrix(DRNLoutput, plotInstructions);
rmeddis@0 88
rmeddis@0 89 switch saveAN_spikesOrProbability
rmeddis@0 90 case 'spikes'
rmeddis@0 91 % AN (4)
rmeddis@0 92 plotInstructions.displaydt=ANdt;
rmeddis@0 93 plotInstructions.title='AN';
rmeddis@0 94 plotInstructions.subPlotNo=4;
rmeddis@0 95 plotInstructions.yLabel='BF';
rmeddis@0 96 plotInstructions.yValues= savedBFlist;
rmeddis@0 97 plotInstructions.rasterDotSize=1;
rmeddis@0 98 plotInstructions.plotDivider=1;
rmeddis@0 99 if sum(sum(ANoutput))<100
rmeddis@0 100 plotInstructions.rasterDotSize=3;
rmeddis@0 101 end
rmeddis@0 102 UTIL_plotMatrix(ANoutput, plotInstructions);
rmeddis@0 103
rmeddis@0 104 % CN (5)
rmeddis@0 105 plotInstructions.displaydt=ANdt;
rmeddis@0 106 plotInstructions.subPlotNo=5;
rmeddis@0 107 plotInstructions.title='CN spikes';
rmeddis@0 108 if sum(sum(CNoutput))<100
rmeddis@0 109 plotInstructions.rasterDotSize=3;
rmeddis@0 110 end
rmeddis@0 111 UTIL_plotMatrix(CNoutput, plotInstructions);
rmeddis@0 112
rmeddis@0 113 % IC (6)
rmeddis@0 114 plotInstructions.displaydt=ANdt;
rmeddis@0 115 plotInstructions.subPlotNo=6;
rmeddis@0 116 plotInstructions.title='IC';
rmeddis@0 117 if size(ICoutput,1)>3
rmeddis@0 118 if sum(sum(ICoutput))<100
rmeddis@0 119 plotInstructions.rasterDotSize=3;
rmeddis@0 120 end
rmeddis@0 121 UTIL_plotMatrix(ICoutput, plotInstructions);
rmeddis@0 122 else
rmeddis@0 123 plotInstructions.title='IC (HSR) membrane potential';
rmeddis@0 124 plotInstructions.displaydt=dt;
rmeddis@0 125 plotInstructions.yLabel='V';
rmeddis@0 126 plotInstructions.zValuesRange= [-.1 0];
rmeddis@0 127 UTIL_plotMatrix(ICmembraneOutput, plotInstructions);
rmeddis@0 128 end
rmeddis@0 129
rmeddis@0 130 otherwise % probability (4-6)
rmeddis@0 131 plotInstructions.displaydt=dt;
rmeddis@0 132 plotInstructions.numPlots=2;
rmeddis@0 133 plotInstructions.subPlotNo=2;
rmeddis@0 134 plotInstructions.yLabel='BF';
rmeddis@0 135 if nANfiberTypes>1,
rmeddis@0 136 plotInstructions.yLabel='LSR HSR';
rmeddis@0 137 plotInstructions.plotDivider=1;
rmeddis@0 138 end
rmeddis@0 139 plotInstructions.title='AN - spike probability';
rmeddis@0 140 UTIL_plotMatrix(ANprobRateOutput, plotInstructions);
rmeddis@0 141 end
rmeddis@0 142 end
rmeddis@0 143
rmeddis@0 144 %% plot efferent control values as dB
rmeddis@0 145 if options.showEfferent
rmeddis@0 146 plotInstructions=[];
rmeddis@0 147 plotInstructions.figureNo=98;
rmeddis@0 148 figure(98), clf
rmeddis@0 149 plotInstructions.displaydt=dt;
rmeddis@0 150 plotInstructions.numPlots=2;
rmeddis@0 151 plotInstructions.subPlotNo=1;
rmeddis@0 152 plotInstructions.zValuesRange=[ -25 0];
rmeddis@0 153 plotInstructions.title= ['AR strength. Signal level= ' ...
rmeddis@0 154 num2str(signalRMSdb,'%4.0f') ' dB SPL'];
rmeddis@0 155 UTIL_plotMatrix(20*log10(ARattenuation), plotInstructions);
rmeddis@0 156
rmeddis@0 157 plotInstructions.subPlotNo=2;
rmeddis@0 158 plotInstructions.yValues= savedBFlist;
rmeddis@0 159 plotInstructions.yLabel= 'BF';
rmeddis@0 160 plotInstructions.title= ['MOC strength'];
rmeddis@0 161 plotInstructions.zValuesRange=[ -25 0];
rmeddis@0 162 subplot(2,1,2)
rmeddis@0 163 % imagesc(MOCattenuation)
rmeddis@0 164 UTIL_plotMatrix(20*log10(MOCattenuation), plotInstructions);
rmeddis@0 165 colorbar
rmeddis@0 166 end
rmeddis@0 167
rmeddis@0 168
rmeddis@0 169 %% ACF plot if required
rmeddis@0 170 if options.showACF
rmeddis@0 171 tic
rmeddis@0 172 method.dt=dt;
rmeddis@0 173 method.segmentNo=1;
rmeddis@0 174 method.nonlinCF=savedBFlist;
rmeddis@0 175
rmeddis@0 176 minPitch= 80; maxPitch= 4000; numPitches=100; % specify lags
rmeddis@0 177 pitches=10.^ linspace(log10(minPitch), log10(maxPitch),numPitches);
rmeddis@0 178 pitches=fliplr(pitches);
rmeddis@0 179 filteredSACFParams.lags=1./pitches; % autocorrelation lags vector
rmeddis@0 180 filteredSACFParams.acfTau= .003; % time constant of running ACF
rmeddis@0 181 filteredSACFParams.lambda= 0.12; % slower filter to smooth ACF
rmeddis@0 182 filteredSACFParams.lambda= 0.01; % slower filter to smooth ACF
rmeddis@0 183
rmeddis@0 184 filteredSACFParams.plotACFs=0; % special plot (see code)
rmeddis@0 185 filteredSACFParams.plotFilteredSACF=0; % 0 plots unfiltered ACFs
rmeddis@0 186 filteredSACFParams.plotMoviePauses=.3; % special plot (see code)
rmeddis@0 187
rmeddis@0 188 filteredSACFParams.usePressnitzer=0; % attenuates ACF at long lags
rmeddis@0 189 filteredSACFParams.lagsProcedure= 'useAllLags';
rmeddis@0 190 % filteredSACFParams.lagsProcedure= 'useBernsteinLagWeights';
rmeddis@0 191 % filteredSACFParams.lagsProcedure= 'omitShortLags';
rmeddis@0 192 filteredSACFParams.criterionForOmittingLags=3;
rmeddis@0 193 filteredSACFParams.plotACFsInterval=200;
rmeddis@0 194
rmeddis@0 195 if filteredSACFParams.plotACFs
rmeddis@0 196 % plot original waveform on ACF plot
rmeddis@0 197 figure(13), clf
rmeddis@0 198 subplot(4,1,1)
rmeddis@0 199 t=dt*(1:length(savedInputSignal));
rmeddis@0 200 plot(t,savedInputSignal)
rmeddis@0 201 xlim([0 t(end)])
rmeddis@0 202 title(['stimulus: ' num2str(signalRMSdb, '%4.0f') ' dB SPL']);
rmeddis@0 203 end
rmeddis@0 204
rmeddis@0 205 % plot original waveform on summary/smoothed ACF plot
rmeddis@0 206 figure(97), clf
rmeddis@0 207 subplot(2,1,1)
rmeddis@0 208 t=dt*(1:length(savedInputSignal));
rmeddis@0 209 plot(t,savedInputSignal)
rmeddis@0 210 xlim([0 t(end)])
rmeddis@0 211 title(['stimulus: ' num2str(signalRMSdb, '%4.0f') ' dB SPL']);
rmeddis@0 212
rmeddis@0 213
rmeddis@0 214 % compute ACF
rmeddis@0 215 switch saveAN_spikesOrProbability
rmeddis@0 216 case 'probability'
rmeddis@0 217 inputToACF=ANprobRateOutput.^0.5;
rmeddis@0 218 otherwise
rmeddis@0 219 inputToACF=ANoutput;
rmeddis@0 220 end
rmeddis@0 221
rmeddis@0 222 disp ('computing ACF...')
rmeddis@0 223 [P, BFlist, sacf, boundaryValue] = ...
rmeddis@0 224 filteredSACF(inputToACF, method, filteredSACFParams);
rmeddis@0 225 disp(' ACF done.')
rmeddis@0 226
rmeddis@0 227 % SACF
rmeddis@0 228 subplot(2,1,2)
rmeddis@0 229 imagesc(P)
rmeddis@0 230 ylabel('periodicities (Hz)')
rmeddis@0 231 xlabel('time (s)')
rmeddis@0 232 title(['running smoothed (root) SACF. ' saveAN_spikesOrProbability ' input'])
rmeddis@0 233 pt=[1 get(gca,'ytick')]; % force top xtick to show
rmeddis@0 234 set(gca,'ytick',pt)
rmeddis@0 235 set(gca,'ytickLabel', round(pitches(pt)))
rmeddis@0 236 tt=get(gca,'xtick');
rmeddis@0 237 set(gca,'xtickLabel', round(100*t(tt))/100)
rmeddis@0 238 end
rmeddis@0 239
rmeddis@0 240 path(restorePath)