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.

Statistics Download as Zip
| Branch: | Revision:

root / multithreshold 1.46 / testPeriphery.m @ 29:b51bf546ca3f

History | View | Annotate | Download (5.09 KB)

1
function testPeriphery (BMlocations, paramsName)
2
% testBM generates input output functions for DRNL model for any number
3
% of locations.
4
% Computations are bast on a single channel model (channelBFs=BF)
5
% peak displacement (peakAmp) is measured.
6
%  if DRNLParams.useMOC is chosen, the full model is run (slow)
7
%  otherwise only DRNL is computed.
8
% Tuning curves are generated based on a range of frequencies reletove to
9
% the BF of the location.
10
%
11

    
12
global    DRNLParams
13

    
14
savePath=path;
15

    
16
addpath (['..' filesep 'utilities'],['..' filesep 'MAP'])
17

    
18
levels=-10:10:90;   nLevels=length(levels);
19
% levels= 50;   nLevels=length(levels);
20

    
21
% relativeFrequencies=[0.25    .5   .75  1  1.25 1.5    2];
22
relativeFrequencies=1;
23

    
24
% refBMdisplacement is the displacement of the BM at threshold
25
% 1 nm disp at  threshold (9 kHz, Ruggero)
26
refBMdisplacement= 1e-8;            % adjusted for 10 nm at 1 kHz
27

    
28
toneDuration=.200;
29
rampDuration=0.01;
30
silenceDuration=0.01;
31

    
32
sampleRate=30000;
33

    
34
dbstop if error
35
figure(3), clf
36
% set(gcf,'position',[276    33   331   645])
37
set(gcf,'name','DRNL - BM')
38

    
39
finalSummary=[];
40
nBFs=length(BMlocations);
41
BFno=0; plotCount=0;
42
for BF=BMlocations
43
    BFno=BFno+1;
44
    plotCount=plotCount+nBFs;
45
    stimulusFrequencies=BF* relativeFrequencies;
46
    nFrequencies=length(stimulusFrequencies);
47

    
48
    peakAmpBM=zeros(nLevels,nFrequencies);
49
    peakAmpBMdB=NaN(nLevels,nFrequencies);
50
    peakEfferent=NaN(nLevels,nFrequencies);
51
    peakAREfferent=NaN(nLevels,nFrequencies);
52

    
53

    
54
    levelNo=0;
55
    for leveldB=levels
56
        disp(['level= ' num2str(leveldB)])
57
        levelNo=levelNo+1;
58

    
59
        freqNo=0;
60
        for frequency=stimulusFrequencies
61
            freqNo=freqNo+1;
62

    
63
            % Generate stimuli
64
            globalStimParams.FS=sampleRate;
65
            globalStimParams.overallDuration=...
66
                toneDuration+silenceDuration;  % s
67
            stim.type='tone';
68
            stim.phases='sin';
69
            stim.toneDuration=toneDuration;
70
            stim.frequencies=frequency;
71
            stim.amplitudesdB=leveldB;
72
            stim.beginSilence=silenceDuration;
73
            stim.rampOnDur=rampDuration;
74
            stim.rampOffDur=rampDuration;
75
            doPlot=0;
76
            inputSignal=stimulusCreate(globalStimParams, stim, doPlot);
77
            inputSignal=inputSignal(:,1)';
78

    
79
            %% run the model
80
            MAPparamsName=paramsName;
81
            AN_spikesOrProbability='probability';
82
            % spikes are slow but can be used to study MOC using IC units
83
            % AN_spikesOrProbability='spikes';
84

    
85
            global DRNLoutput MOCattenuation ARattenuation IHCoutput
86
            MAP1_14(inputSignal, sampleRate, BF, ...
87
                MAPparamsName, AN_spikesOrProbability);
88

    
89
            DRNLresponse=IHCoutput;
90
            peakAmp=max(max(...
91
                DRNLresponse(:, end-round(length(DRNLresponse)/2):end)));
92
            peakAmpBM(levelNo,freqNo)=peakAmp;
93
            if peakAmp>0
94
            peakAmpBMdB(levelNo,freqNo)=...
95
                20*log10(peakAmp/refBMdisplacement);
96
            else
97
                peakAmpBMdB(levelNo,freqNo)=peakAmp;
98
            end
99
            peakEfferent(levelNo,freqNo)=min(min(MOCattenuation));
100
            peakAREfferent(levelNo,freqNo)=min(min(ARattenuation));
101

    
102
        end  % tone frequency
103
    end  % level
104

    
105
    %% analyses results and plot
106

    
107
    % BM I/O plot (top panel)
108
    figure(3)
109
    subplot(3,nBFs,BFno), cla
110
    plot(levels,peakAmpBMdB, 'linewidth',2)
111
    hold on, plot(levels, repmat(refBMdisplacement,1,length(levels)))
112
    hold off
113
    title(['BF=' num2str(BF,'%5.0f') ' - ' paramsName])
114
    xlabel('level')
115
    %     set(gca,'xtick',levels),  grid on
116
    if length(levels)>1,xlim([min(levels) max(levels)]), end
117
    ylabel(['dB re:' num2str(refBMdisplacement,'%6.1e') 'm'])
118
    ylim([-20 50])
119
    set(gca,'ytick',[-10 0 10 20 40])
120
    %     legend({num2str(stimulusFrequencies')}, 'location', 'EastOutside')
121
    UTIL_printTabTable([levels' peakAmpBMdB], ...
122
        num2str([0 stimulusFrequencies]','%5.0f'), '%5.0f')
123
    finalSummary=[finalSummary peakAmpBMdB];
124

    
125
    % Tuning curve
126
    if length(relativeFrequencies)>2
127
        figure(3), subplot(3,nBFs, nBFs+BFno)
128
        %         contour(stimulusFrequencies,levels,peakAmpBM,...
129
        %             [refBMdisplacement refBMdisplacement],'r')
130
        contour(stimulusFrequencies,levels,peakAmpBM,...
131
            refBMdisplacement.*[1 5 10 50 100])
132
        title(['tuning curve at ' num2str(refBMdisplacement) 'm']);
133
        ylabel('level (dB) at reference')
134
        xlim([100 10000])
135
        hold on
136
        set(gca,'xscale','log')
137
    end
138

    
139

    
140
    % MOC contribution
141
    figure(3)
142
    subplot(3,nBFs,2*nBFs+BFno), cla
143
    plot(levels,20*log10(peakEfferent), 'linewidth',2)
144
    ylabel('MOC (dB attenuation)'), xlabel('level')
145
    title(['peak MOC: model= ' AN_spikesOrProbability])
146
    grid on
147
    if length(levels)>1, xlim([min(levels) max(levels)]), end
148

    
149
    % AR contribution
150
    hold on
151
    plot(levels,20*log10(peakAREfferent), 'r')
152
    hold off
153

    
154
end % best frequency
155

    
156
UTIL_showStructureSummary(DRNLParams, 'DRNLParams', 10)
157

    
158
    UTIL_printTabTable([levels' finalSummary], ...
159
        num2str([0 stimulusFrequencies]','%5.0f'), '%5.0f')
160

    
161
path(savePath);