rmeddis@38
|
1 function test_MAP1_14RAM
|
rmeddis@38
|
2
|
rmeddis@38
|
3 global dt DRNLoutput
|
rmeddis@38
|
4 global DRNLParams TMoutput
|
rmeddis@38
|
5 global peakOutputDisp alignedOutput toneFrequencyList levels leveldBSPL logOutput
|
rmeddis@38
|
6
|
rmeddis@38
|
7
|
rmeddis@38
|
8 dbstop if error
|
rmeddis@38
|
9 restorePath=path;
|
rmeddis@38
|
10 addpath (['..' filesep 'MAP'], ['..' filesep 'wavFileStore'], ...
|
rmeddis@38
|
11 ['..' filesep 'utilities'])
|
rmeddis@38
|
12 figure(2), clf
|
rmeddis@38
|
13
|
rmeddis@38
|
14 %% # BFlist is the BF of the filter to be assessed
|
rmeddis@38
|
15 BFlist=8000;
|
rmeddis@38
|
16 numChannels=1;
|
rmeddis@38
|
17
|
rmeddis@38
|
18 % define probe frequencies
|
rmeddis@38
|
19 numFs=6;
|
rmeddis@38
|
20 lowestF=BFlist/5; highestF= BFlist*1.4;
|
rmeddis@38
|
21 lowestF=4000; highestF= 12600;
|
rmeddis@38
|
22 toneFrequencyList=round(logspace(log10(lowestF), log10(highestF), numFs));
|
rmeddis@38
|
23
|
rmeddis@38
|
24 %% # parameter file name
|
rmeddis@38
|
25 MAPparamsName='Normal';
|
rmeddis@38
|
26
|
rmeddis@38
|
27 %% # probability representation
|
rmeddis@38
|
28 AN_spikesOrProbability='probability';
|
rmeddis@38
|
29
|
rmeddis@38
|
30 %% # tone duration
|
rmeddis@38
|
31 sampleRate= 100000;
|
rmeddis@38
|
32 duration=0.0200; % seconds
|
rmeddis@38
|
33 rampDuration=.005; % raised cosine ramp (seconds)
|
rmeddis@38
|
34 beginSilence=0.050;
|
rmeddis@38
|
35 endSilence=0.050;
|
rmeddis@38
|
36
|
rmeddis@38
|
37 %% # levels
|
rmeddis@38
|
38 % probe details
|
rmeddis@38
|
39 levels=0:10:80;
|
rmeddis@38
|
40 % levels=80;
|
rmeddis@38
|
41
|
rmeddis@38
|
42 %% # change model parameters
|
rmeddis@38
|
43 % Parameter changes can be used to change one or more model parameters
|
rmeddis@38
|
44 % *after* the MAPparams file has been read
|
rmeddis@38
|
45
|
rmeddis@38
|
46 % adjust linear path gain (previously g=100)
|
rmeddis@38
|
47 % switch off all efferent effects
|
rmeddis@38
|
48 paramChanges={...
|
rmeddis@38
|
49 'DRNLParams.rateToAttenuationFactorProb = 0.00; ',...
|
rmeddis@38
|
50 'OMEParams.rateToAttenuationFactorProb=0.0;', ...
|
rmeddis@38
|
51 'DRNLParams.ctBMdB = -10;'...
|
rmeddis@38
|
52 'DRNLParams.g=200;'...
|
rmeddis@38
|
53 'DRNLParams.linCFs=6500;'...
|
rmeddis@38
|
54 'DRNLParams.linBWs=2000;'...
|
rmeddis@38
|
55 };
|
rmeddis@38
|
56 % 'DRNLParams.a=0;'...
|
rmeddis@38
|
57
|
rmeddis@38
|
58
|
rmeddis@38
|
59 %% delare 'showMap' options to control graphical output
|
rmeddis@38
|
60 showMapOptions.printModelParameters=0; % prints all parameters
|
rmeddis@38
|
61 showMapOptions.showModelOutput=1; % plot of all stages
|
rmeddis@38
|
62 showMapOptions.printFiringRates=0; % prints stage activity levels
|
rmeddis@38
|
63 showMapOptions.showACF=0; % shows SACF (probability only)
|
rmeddis@38
|
64 showMapOptions.showEfferent=0; % tracks of AR and MOC
|
rmeddis@38
|
65 showMapOptions.surfProbability=0; % 2D plot of HSR response
|
rmeddis@38
|
66 showMapOptions.surfSpikes=0; % 2D plot of spikes histogram
|
rmeddis@38
|
67 showMapOptions.ICrates=0; % IC rates by CNtauGk
|
rmeddis@38
|
68 showMapOptions.fileName=[];
|
rmeddis@38
|
69
|
rmeddis@38
|
70
|
rmeddis@38
|
71 %% now vary level and frequency
|
rmeddis@38
|
72 peakOutputDisp=zeros(length(levels),length(toneFrequencyList));
|
rmeddis@38
|
73 peakStapesDisp=zeros(length(levels),length(toneFrequencyList));
|
rmeddis@38
|
74 levelNo=0;
|
rmeddis@38
|
75 for leveldBSPL=levels
|
rmeddis@38
|
76 levelNo=levelNo+1;
|
rmeddis@38
|
77 disp(['level: ' num2str(leveldBSPL)])
|
rmeddis@38
|
78 freqNo=0;
|
rmeddis@38
|
79 for toneFrequency=toneFrequencyList
|
rmeddis@38
|
80 freqNo=freqNo+1;
|
rmeddis@38
|
81
|
rmeddis@38
|
82 %% Generate stimuli
|
rmeddis@38
|
83 dt=1/sampleRate;
|
rmeddis@38
|
84 time=dt: dt: duration;
|
rmeddis@38
|
85 inputSignal=sum(sin(2*pi*toneFrequency'*time), 1);
|
rmeddis@38
|
86 amp=10^(leveldBSPL/20)*28e-6; % converts to Pascals (peak)
|
rmeddis@38
|
87 inputSignal=amp*inputSignal;
|
rmeddis@38
|
88 % apply ramps
|
rmeddis@38
|
89 if rampDuration>0.5*duration, rampDuration=duration/2; end
|
rmeddis@38
|
90 rampTime=dt:dt:rampDuration;
|
rmeddis@38
|
91 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ...
|
rmeddis@38
|
92 ones(1,length(time)-length(rampTime))];
|
rmeddis@38
|
93 inputSignal=inputSignal.*ramp;
|
rmeddis@38
|
94 ramp=fliplr(ramp);
|
rmeddis@38
|
95 inputSignal=inputSignal.*ramp;
|
rmeddis@38
|
96 % add silence
|
rmeddis@38
|
97 intialSilence= zeros(1,round(beginSilence/dt));
|
rmeddis@38
|
98 finalSilence= zeros(1,round(endSilence/dt));
|
rmeddis@38
|
99 inputSignal= [intialSilence inputSignal finalSilence];
|
rmeddis@38
|
100
|
rmeddis@38
|
101 %% run the model
|
rmeddis@38
|
102 % fprintf('\n')
|
rmeddis@38
|
103 % disp([num2str(numChannels) ' channel model: ' AN_spikesOrProbability])
|
rmeddis@38
|
104 % disp('Computing ...')
|
rmeddis@38
|
105
|
rmeddis@38
|
106 MAP1_14(inputSignal, sampleRate, BFlist, ...
|
rmeddis@38
|
107 MAPparamsName, AN_spikesOrProbability, paramChanges);
|
rmeddis@38
|
108
|
rmeddis@38
|
109 peakOutputDisp(levelNo,freqNo)=max(DRNLoutput);
|
rmeddis@38
|
110 peakStapesDisp(levelNo,freqNo)=max(TMoutput);
|
rmeddis@38
|
111
|
rmeddis@38
|
112 %% the model run is complete. Now display the results
|
rmeddis@38
|
113 % UTIL_showMAP(showMapOptions, paramChanges)
|
rmeddis@38
|
114 end % probe frequencies
|
rmeddis@38
|
115 figure(2), loglog(toneFrequencyList, peakOutputDisp), hold on
|
rmeddis@38
|
116 xlabel('frequency')
|
rmeddis@38
|
117 ylabel('peak DRNL displacement (m)')
|
rmeddis@38
|
118
|
rmeddis@38
|
119 end % levels
|
rmeddis@38
|
120 %% alignmed plot
|
rmeddis@38
|
121
|
rmeddis@38
|
122
|
rmeddis@38
|
123 x=peakOutputDisp./peakStapesDisp;
|
rmeddis@38
|
124 logOutput=20*log10(x.*repmat((2*pi*toneFrequencyList),length(levels),1));
|
rmeddis@38
|
125 alignedOutput=logOutput-repmat(logOutput(:,1), 1, length(toneFrequencyList));
|
rmeddis@38
|
126 figure(3), clf, semilogx(toneFrequencyList, alignedOutput), hold on
|
rmeddis@38
|
127 ylim([-20 80])
|
rmeddis@38
|
128 xlim([2000 20000])
|
rmeddis@38
|
129 % legend(num2str(levels'))
|
rmeddis@38
|
130 xlabel('frequency')
|
rmeddis@38
|
131 ylabel('peak DRNL velocity (dB)')
|
rmeddis@38
|
132 title(['level ' num2str(leveldBSPL) ' dB SPL'])
|
rmeddis@38
|
133
|
rmeddis@38
|
134 disp(['level=' num2str(leveldBSPL)])
|
rmeddis@38
|
135 disp(['toneFrequency=' num2str(toneFrequency)])
|
rmeddis@38
|
136
|
rmeddis@38
|
137 disp(['attenuation factor =' ...
|
rmeddis@38
|
138 num2str(DRNLParams.rateToAttenuationFactor, '%5.3f') ])
|
rmeddis@38
|
139 disp(['attenuation factor (probability)=' ...
|
rmeddis@38
|
140 num2str(DRNLParams.rateToAttenuationFactorProb, '%5.3f') ])
|
rmeddis@38
|
141 disp(AN_spikesOrProbability)
|
rmeddis@38
|
142 disp(paramChanges)
|
rmeddis@38
|
143
|
rmeddis@38
|
144 % UTIL_printTabTable([toneFrequencyList' peakOutputDisp'])
|
rmeddis@38
|
145
|
rmeddis@38
|
146 path(restorePath)
|
rmeddis@38
|
147
|