annotate old files/showMAP.m @ 22:45f28c49461e master

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