diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/testPrograms/testEfferent.m	Mon Nov 28 13:34:28 2011 +0000
@@ -0,0 +1,118 @@
+function testEfferent(probeFrequency,BFlist, levels, ...
+    paramsName,paramChanges)
+% generates rate/level functions for AAR and MOC
+%
+% e.g.
+% testEfferent(1000,1000, -10:10:80,'Normal',[]);
+
+global dtSpikes MOCattenuation ANtauCas
+
+tic
+dbstop if error
+restorePath=path;
+addpath (['..' filesep 'MAP'], ['..' filesep 'utilities'], ...
+    ['..' filesep 'parameterStore'],  ['..' filesep 'wavFileStore'],...
+    ['..' filesep 'testPrograms'])
+
+if nargin<5, paramChanges=[]; end
+if nargin<4, paramsName='Normal'; end
+if nargin<3, levels=-10:10:100; end
+if nargin==0,
+    probeFrequency=1000;
+    probeFrequency=100:100:8000;
+        lowestBF=250; 	highestBF= 8000; 	numChannels=21;
+    % 21 chs (250-8k)includes BFs at 250 500 1000 2000 4000 8000
+    BFlist=round(logspace(log10(lowestBF),log10(highestBF),numChannels));
+    keyChannel=round(numChannels/2);
+%     BFlist=1000;
+end
+nLevels=length(levels);
+
+toneDuration=.2;   rampDuration=0.002;   silenceDuration=.02;
+localPSTHbinwidth=0.001;
+
+
+sampleRate=64000; dt=1/sampleRate;
+
+%% delare 'showMap' options to control graphical output
+showMapOptions.printModelParameters=0;   % prints all parameters
+showMapOptions.showModelOutput=0;       % plot of all stages
+showMapOptions.printFiringRates=1;      % prints stage activity levels
+showMapOptions.showACF=0;               % shows SACF (probability only)
+showMapOptions.showEfferent=1;          % tracks of AR and MOC
+showMapOptions.surfAN=0;       % 2D plot of HSR response
+showMapOptions.surfSpikes=0;            % 2D plot of spikes histogram
+showMapOptions.ICrates=0;               % IC rates by CNtauGk
+
+
+%% pre-allocate storage
+AN_HSRonset=zeros(nLevels,1);
+AN_HSRsaturated=zeros(nLevels,1);
+AN_LSRonset=zeros(nLevels,1);
+AN_LSRsaturated=zeros(nLevels,1);
+CNLSRrate=zeros(nLevels,1);
+CNHSRsaturated=zeros(nLevels,1);
+ICHSRsaturated=zeros(nLevels,1);
+ICLSRsaturated=zeros(nLevels,1);
+vectorStrength=zeros(nLevels,1);
+
+AR=zeros(nLevels,1);
+MOC=zeros(nLevels,1);
+maxMOC=[];
+
+%% main computational loop (vary level)
+levelNo=0;
+for leveldB=levels
+    levelNo=levelNo+1;
+    amp=28e-6*10^(leveldB/20);
+    fprintf('%4.0f\t', leveldB)
+
+    %% generate tone and silences
+    time=dt:dt:toneDuration;
+    rampTime=dt:dt:rampDuration;
+    ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ...
+        ones(1,length(time)-length(rampTime))];
+    ramp=ramp.*fliplr(ramp);
+
+    silence=zeros(1,round(silenceDuration/dt));
+
+    inputSignal=amp*sin(2*pi*probeFrequency'*time);
+    inputSignal=sum(inputSignal);
+    inputSignal= ramp.*inputSignal;
+    inputSignal=[silence inputSignal];
+
+    %% run the model
+    AN_spikesOrProbability='spikes';
+%     nExistingParamChanges=length(paramChanges);
+%     paramChanges{nExistingParamChanges+1}=...
+%         ['AN_IHCsynapseParams.spikesTargetSampleRate=' ...
+%         num2str(spikesSampleRate) ';'];
+
+    MAP1_14(inputSignal, 1/dt, BFlist, ...
+        paramsName, AN_spikesOrProbability, paramChanges);
+    
+maxMOC=[maxMOC min(MOCattenuation(keyChannel,:))];
+    UTIL_showMAP(showMapOptions)
+    pause(0.1)
+
+    %% Auditory nerve evaluate and display (Fig. 5)
+    %LSR (same as HSR if no LSR fibers present)
+    nTaus=length(ANtauCas);
+
+
+end % level
+
+%% MOC atten/ level function
+figure(21), subplot(2,1,2)
+plot(levels, 20*log10(maxMOC), 'k'), hold off
+title(' MOC dB attenuation'), ylabel('dB attenuation')
+ylim([-30 0])
+figure(21), subplot(2,1,1)
+plot(levels, maxMOC, 'k'), hold off
+title(' MOC attenuation (scalar)'), ylabel('attenuation (scalar)')
+ylim([0 1])
+
+set(gcf,'name','MOC atten/level')
+
+path(restorePath)
+toc