annotate testPrograms/testEfferent.m @ 38:c2204b18f4a2 tip

End nov big change
author Ray Meddis <rmeddis@essex.ac.uk>
date Mon, 28 Nov 2011 13:34:28 +0000
parents
children
rev   line source
rmeddis@38 1 function testEfferent(probeFrequency,BFlist, levels, ...
rmeddis@38 2 paramsName,paramChanges)
rmeddis@38 3 % generates rate/level functions for AAR and MOC
rmeddis@38 4 %
rmeddis@38 5 % e.g.
rmeddis@38 6 % testEfferent(1000,1000, -10:10:80,'Normal',[]);
rmeddis@38 7
rmeddis@38 8 global dtSpikes MOCattenuation ANtauCas
rmeddis@38 9
rmeddis@38 10 tic
rmeddis@38 11 dbstop if error
rmeddis@38 12 restorePath=path;
rmeddis@38 13 addpath (['..' filesep 'MAP'], ['..' filesep 'utilities'], ...
rmeddis@38 14 ['..' filesep 'parameterStore'], ['..' filesep 'wavFileStore'],...
rmeddis@38 15 ['..' filesep 'testPrograms'])
rmeddis@38 16
rmeddis@38 17 if nargin<5, paramChanges=[]; end
rmeddis@38 18 if nargin<4, paramsName='Normal'; end
rmeddis@38 19 if nargin<3, levels=-10:10:100; end
rmeddis@38 20 if nargin==0,
rmeddis@38 21 probeFrequency=1000;
rmeddis@38 22 probeFrequency=100:100:8000;
rmeddis@38 23 lowestBF=250; highestBF= 8000; numChannels=21;
rmeddis@38 24 % 21 chs (250-8k)includes BFs at 250 500 1000 2000 4000 8000
rmeddis@38 25 BFlist=round(logspace(log10(lowestBF),log10(highestBF),numChannels));
rmeddis@38 26 keyChannel=round(numChannels/2);
rmeddis@38 27 % BFlist=1000;
rmeddis@38 28 end
rmeddis@38 29 nLevels=length(levels);
rmeddis@38 30
rmeddis@38 31 toneDuration=.2; rampDuration=0.002; silenceDuration=.02;
rmeddis@38 32 localPSTHbinwidth=0.001;
rmeddis@38 33
rmeddis@38 34
rmeddis@38 35 sampleRate=64000; dt=1/sampleRate;
rmeddis@38 36
rmeddis@38 37 %% delare 'showMap' options to control graphical output
rmeddis@38 38 showMapOptions.printModelParameters=0; % prints all parameters
rmeddis@38 39 showMapOptions.showModelOutput=0; % plot of all stages
rmeddis@38 40 showMapOptions.printFiringRates=1; % prints stage activity levels
rmeddis@38 41 showMapOptions.showACF=0; % shows SACF (probability only)
rmeddis@38 42 showMapOptions.showEfferent=1; % tracks of AR and MOC
rmeddis@38 43 showMapOptions.surfAN=0; % 2D plot of HSR response
rmeddis@38 44 showMapOptions.surfSpikes=0; % 2D plot of spikes histogram
rmeddis@38 45 showMapOptions.ICrates=0; % IC rates by CNtauGk
rmeddis@38 46
rmeddis@38 47
rmeddis@38 48 %% pre-allocate storage
rmeddis@38 49 AN_HSRonset=zeros(nLevels,1);
rmeddis@38 50 AN_HSRsaturated=zeros(nLevels,1);
rmeddis@38 51 AN_LSRonset=zeros(nLevels,1);
rmeddis@38 52 AN_LSRsaturated=zeros(nLevels,1);
rmeddis@38 53 CNLSRrate=zeros(nLevels,1);
rmeddis@38 54 CNHSRsaturated=zeros(nLevels,1);
rmeddis@38 55 ICHSRsaturated=zeros(nLevels,1);
rmeddis@38 56 ICLSRsaturated=zeros(nLevels,1);
rmeddis@38 57 vectorStrength=zeros(nLevels,1);
rmeddis@38 58
rmeddis@38 59 AR=zeros(nLevels,1);
rmeddis@38 60 MOC=zeros(nLevels,1);
rmeddis@38 61 maxMOC=[];
rmeddis@38 62
rmeddis@38 63 %% main computational loop (vary level)
rmeddis@38 64 levelNo=0;
rmeddis@38 65 for leveldB=levels
rmeddis@38 66 levelNo=levelNo+1;
rmeddis@38 67 amp=28e-6*10^(leveldB/20);
rmeddis@38 68 fprintf('%4.0f\t', leveldB)
rmeddis@38 69
rmeddis@38 70 %% generate tone and silences
rmeddis@38 71 time=dt:dt:toneDuration;
rmeddis@38 72 rampTime=dt:dt:rampDuration;
rmeddis@38 73 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ...
rmeddis@38 74 ones(1,length(time)-length(rampTime))];
rmeddis@38 75 ramp=ramp.*fliplr(ramp);
rmeddis@38 76
rmeddis@38 77 silence=zeros(1,round(silenceDuration/dt));
rmeddis@38 78
rmeddis@38 79 inputSignal=amp*sin(2*pi*probeFrequency'*time);
rmeddis@38 80 inputSignal=sum(inputSignal);
rmeddis@38 81 inputSignal= ramp.*inputSignal;
rmeddis@38 82 inputSignal=[silence inputSignal];
rmeddis@38 83
rmeddis@38 84 %% run the model
rmeddis@38 85 AN_spikesOrProbability='spikes';
rmeddis@38 86 % nExistingParamChanges=length(paramChanges);
rmeddis@38 87 % paramChanges{nExistingParamChanges+1}=...
rmeddis@38 88 % ['AN_IHCsynapseParams.spikesTargetSampleRate=' ...
rmeddis@38 89 % num2str(spikesSampleRate) ';'];
rmeddis@38 90
rmeddis@38 91 MAP1_14(inputSignal, 1/dt, BFlist, ...
rmeddis@38 92 paramsName, AN_spikesOrProbability, paramChanges);
rmeddis@38 93
rmeddis@38 94 maxMOC=[maxMOC min(MOCattenuation(keyChannel,:))];
rmeddis@38 95 UTIL_showMAP(showMapOptions)
rmeddis@38 96 pause(0.1)
rmeddis@38 97
rmeddis@38 98 %% Auditory nerve evaluate and display (Fig. 5)
rmeddis@38 99 %LSR (same as HSR if no LSR fibers present)
rmeddis@38 100 nTaus=length(ANtauCas);
rmeddis@38 101
rmeddis@38 102
rmeddis@38 103 end % level
rmeddis@38 104
rmeddis@38 105 %% MOC atten/ level function
rmeddis@38 106 figure(21), subplot(2,1,2)
rmeddis@38 107 plot(levels, 20*log10(maxMOC), 'k'), hold off
rmeddis@38 108 title(' MOC dB attenuation'), ylabel('dB attenuation')
rmeddis@38 109 ylim([-30 0])
rmeddis@38 110 figure(21), subplot(2,1,1)
rmeddis@38 111 plot(levels, maxMOC, 'k'), hold off
rmeddis@38 112 title(' MOC attenuation (scalar)'), ylabel('attenuation (scalar)')
rmeddis@38 113 ylim([0 1])
rmeddis@38 114
rmeddis@38 115 set(gcf,'name','MOC atten/level')
rmeddis@38 116
rmeddis@38 117 path(restorePath)
rmeddis@38 118 toc