annotate testPrograms/showMAP.m @ 21:c489ebada16e

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