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