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 / parameterStore / MAPparamsOHCloss.m

History | View | Annotate | Download (13.6 KB)

1 38:c2204b18f4a2 rmeddis
function method=MAPparamsOHCloss ...
2
    (BFlist, sampleRate, showParams, paramChanges)
3
% MAPparamsOHCloss.m is a parameter file, similar in all respects to
4
% MAPparamsNormal except that the parameter 'DRNLParams.a' is set to zero.
5
%
6
% MAPparams<> establishes a complete set of MAP parameters
7
% Parameter file names must be of the form <MAPparams><name>
8
%
9
% Input arguments
10
%  BFlist     (optional) specifies the desired list of channel BFs
11
%    otherwise defaults set below
12
%  sampleRate (optional), default is 50000.
13
%  showParams (optional) =1 prints out the complete set of parameters
14
% Output argument
15
%  method passes a miscelleny of values
16
%  the use of 'method' is being phased out. use globals
17
18
global inputStimulusParams OMEParams DRNLParams IHC_cilia_RPParams
19
global IHCpreSynapseParams  AN_IHCsynapseParams
20
global MacGregorParams MacGregorMultiParams  filteredSACFParams
21
global experiment % used only by calls from multiThreshold
22
% global IHC_VResp_VivoParams
23
24
currentFile=mfilename;                      % i.e. the name of this mfile
25
method.parameterSource=currentFile(10:end); % for the record
26
27
efferentDelay=0.010;
28
method.segmentDuration=efferentDelay;
29
30
if nargin<3, showParams=0; end
31
if nargin<2, sampleRate=44100; end
32
if nargin<1 || BFlist(1)<0 % if BFlist= -1, set BFlist to default
33
    lowestBF=250; 	highestBF= 8000; 	numChannels=21;
34
    % 21 chs (250-8k)includes BFs at 250 500 1000 2000 4000 8000
35
    BFlist=round(logspace(log10(lowestBF),log10(highestBF),numChannels));
36
end
37
% BFlist=1000;  % single channel option
38
39
% preserve for backward campatibility
40
method.nonlinCF=BFlist;
41
method.dt=1/sampleRate;
42
43
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
44
% set  model parameters
45
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
46
47
%%  #1 inputStimulus
48
inputStimulusParams=[];
49
inputStimulusParams.sampleRate= sampleRate;
50
51
%%  #2 outerMiddleEar
52
OMEParams=[];  % clear the structure first
53
% outer ear resonances band pass filter  [gain lp order  hp]
54
OMEParams.externalResonanceFilters=      [ 10 1 1000 4000];
55
56
% highpass stapes filter
57
%  Huber gives 2e-9 m at 80 dB and 1 kHz (2e-13 at 0 dB SPL)
58
OMEParams.OMEstapesHPcutoff= 1000;
59
OMEParams.stapesScalar=	     45e-9;
60
61
% Acoustic reflex: maximum attenuation should be around 25 dB (Price, 1966)
62
% i.e. a minimum ratio of 0.056.
63
% 'spikes' model: AR based on brainstem spiking activity (LSR)
64
OMEParams.rateToAttenuationFactor=0.05; % * N(all ICspikes)
65
% 'probability model': Ar based on AN firing probabilities (LSR)
66
OMEParams.rateToAttenuationFactorProb=0.02;    % * N(all ANrates)
67
68
% asymptote should be around 100-200 ms
69
OMEParams.ARtau=.250; % AR smoothing function 250 ms fits Hung and Dallos
70
% delay must be longer than the segment length
71
OMEParams.ARdelay=efferentDelay;  %Moss gives 8.5 ms latency
72
OMEParams.ARrateThreshold=40;
73
74
%%  #3 DRNL
75
DRNLParams=[];  % clear the structure first
76
% DRNLParams.BFlist=BFlist;
77
78
%   *** DRNL nonlinear path
79
% broken stick compression
80
% DRNLParams.a=2e4;     % normal value (commented out)
81
DRNLParams.a=0;         % DRNL.a=0 means no OHCs (no nonlinear path)
82
DRNLParams.c=.2;        % compression exponent
83
DRNLParams.ctBMdB = 10; %Compression threshold dB re 10e-9 m displacement
84
85
% filters
86
DRNLParams.nonlinOrder=	3;  % order of nonlinear gammatone filters
87
DRNLParams.nonlinCFs=BFlist;
88
DRNLParams.p=0.2895;   DRNLParams.q=250;   % save p and q for printing only
89
% p=0.2895;   q=250;      % human  (% p=0.14;   q=366;  % cat)
90
DRNLParams.nlBWs=  DRNLParams.p * BFlist + DRNLParams.q;
91
92
%   *** DRNL linear path:
93
DRNLParams.g=100;       % linear path gain factor
94
DRNLParams.linOrder=3;  % order of linear gammatone filters
95
% linCF is not necessarily the same as nonlinCF
96
minLinCF=153.13; coeffLinCF=0.7341;   % linCF>nonlinBF for BF < 1 kHz
97
DRNLParams.linCFs=minLinCF+coeffLinCF*BFlist;
98
% bandwidths (linear)
99
minLinBW=100; coeffLinBW=0.6531;
100
DRNLParams.linBWs=minLinBW + coeffLinBW*BFlist; % bandwidths of linear  filters
101
102
%   *** DRNL MOC efferents
103
DRNLParams.MOCdelay = efferentDelay;            % must be < segment length!
104
DRNLParams.minMOCattenuationdB=-35;
105
106
% 'spikes' model: MOC based on brainstem spiking activity (HSR)
107
DRNLParams.MOCtau =.0285;                         % smoothing for MOC
108
DRNLParams.rateToAttenuationFactor = .03;  % strength of MOC
109
DRNLParams.rateToAttenuationFactor = .0055;  % strength of MOC
110
111
% 'probability' model: MOC based on AN probability (HSR)
112
DRNLParams.MOCtauProb =.285;                         % smoothing for MOC
113
DRNLParams.rateToAttenuationFactorProb = 0.007;  % strength of MOC
114
DRNLParams.MOCrateThresholdProb =67;                % spikes/s probability only
115
116
117
%% #4 IHC_cilia_RPParams
118
IHC_cilia_RPParams.tc=	0.00012;   % 0.0003 Shamma
119
IHC_cilia_RPParams.C=	0.08;       % 0.1 scalar (C_cilia )
120
IHC_cilia_RPParams.u0=	5e-9;
121
IHC_cilia_RPParams.s0=	30e-9;
122
IHC_cilia_RPParams.u1=	1e-9;
123
IHC_cilia_RPParams.s1=	1e-9;
124
125
IHC_cilia_RPParams.Gmax= 6e-9;    % 2.5e-9 maximum conductance (Siemens)
126
IHC_cilia_RPParams.Ga=	1e-9;  % 4.3e-9 fixed apical membrane conductance
127
IHC_cilia_RPParams.Ga=	.8e-9;  % 4.3e-9 fixed apical membrane conductance
128
129
%  #5 IHC_RP
130
IHC_cilia_RPParams.Cab=	4e-012;         % IHC capacitance (F)
131
% IHC_cilia_RPParams.Cab=	1e-012;         % IHC capacitance (F)
132
IHC_cilia_RPParams.Et=	0.100;          % endocochlear potential (V)
133
134
IHC_cilia_RPParams.Gk=	2e-008;         % 1e-8 potassium conductance (S)
135
IHC_cilia_RPParams.Ek=	-0.08;          % -0.084 K equilibrium potential
136
IHC_cilia_RPParams.Rpc=	0.04;           % combined resistances
137
138
139
%%  #5 IHCpreSynapse
140
IHCpreSynapseParams=[];
141
IHCpreSynapseParams.GmaxCa=	14e-9;% maximum calcium conductance
142
% IHCpreSynapseParams.GmaxCa=	12e-9;% maximum calcium conductance
143
IHCpreSynapseParams.ECa=	0.066;  % calcium equilibrium potential
144
IHCpreSynapseParams.beta=	400;	% determine Ca channel opening
145
IHCpreSynapseParams.gamma=	100;	% determine Ca channel opening
146
IHCpreSynapseParams.tauM=	0.00005;	% membrane time constant ?0.1ms
147
IHCpreSynapseParams.power=	3;
148
% reminder: changing z has a strong effect on HF thresholds (like Et)
149
IHCpreSynapseParams.z=	    2e42;   % scalar Ca -> vesicle release rate
150
151
LSRtauCa=30e-6;            HSRtauCa=80e-6;            % seconds
152
% LSRtauCa=40e-6;            HSRtauCa=90e-6;            % seconds
153
% IHCpreSynapseParams.tauCa= [15e-6 80e-6]; %LSR and HSR fiber
154
IHCpreSynapseParams.tauCa= [LSRtauCa HSRtauCa]; %LSR and HSR fiber
155
156
%%  #6 AN_IHCsynapse
157
AN_IHCsynapseParams=[];             % clear the structure first
158
% number of AN fibers at each BF (used only for spike generation)
159
AN_IHCsynapseParams.numFibers=	100;
160
% absolute refractory period. Relative refractory period is the same.
161
AN_IHCsynapseParams.refractory_period=	0.00075;
162
AN_IHCsynapseParams.TWdelay=0.004;  % ?delay before stimulus first spike
163
AN_IHCsynapseParams.spikesTargetSampleRate=10000;
164
% AN_IHCsynapseParams.ANspeedUpFactor=5; % longer epochs for computing spikes.
165
166
% c=kym/(y(l+r)+kl)	(spontaneous rate)
167
% c=(approx)  ym/l  (saturated rate)
168
AN_IHCsynapseParams.M=	12;         % maximum vesicles at synapse
169
AN_IHCsynapseParams.y=	4;          % depleted vesicle replacement rate
170
AN_IHCsynapseParams.y=	6;          % depleted vesicle replacement rate
171
172
AN_IHCsynapseParams.x=	30;         % replenishment from re-uptake store
173
AN_IHCsynapseParams.x=	60;         % replenishment from re-uptake store
174
175
% reduce l to increase saturated rate
176
AN_IHCsynapseParams.l=	100; % *loss rate of vesicles from the cleft
177
AN_IHCsynapseParams.l=	250; % *loss rate of vesicles from the cleft
178
179
AN_IHCsynapseParams.r=	500; % *reuptake rate from cleft into cell
180
% AN_IHCsynapseParams.r=	300; % *reuptake rate from cleft into cell
181
182
183
%%  #7 MacGregorMulti (first order brainstem neurons)
184
MacGregorMultiParams=[];
185
MacGregorMultiType='chopper'; % MacGregorMultiType='primary-like'; %choose
186
switch MacGregorMultiType
187
    case 'primary-like'
188
        MacGregorMultiParams.nNeuronsPerBF=	10;   % N neurons per BF
189
        MacGregorMultiParams.type = 'primary-like cell';
190
        MacGregorMultiParams.fibersPerNeuron=4;   % N input fibers
191
        MacGregorMultiParams.dendriteLPfreq=200;  % dendritic filter
192
        MacGregorMultiParams.currentPerSpike=0.11e-6; % (A) per spike
193
        MacGregorMultiParams.Cap=4.55e-9;   % cell capacitance (Siemens)
194
        MacGregorMultiParams.tauM=5e-4;     % membrane time constant (s)
195
        MacGregorMultiParams.Ek=-0.01;      % K+ eq. potential (V)
196
        MacGregorMultiParams.dGkSpike=3.64e-5; % K+ cond.shift on spike,S
197
        MacGregorMultiParams.tauGk=	0.0012; % K+ conductance tau (s)
198
        MacGregorMultiParams.Th0=	0.01;   % equilibrium threshold (V)
199
        MacGregorMultiParams.c=	0.01;       % threshold shift on spike, (V)
200
        MacGregorMultiParams.tauTh=	0.015;  % variable threshold tau
201
        MacGregorMultiParams.Er=-0.06;      % resting potential (V)
202
        MacGregorMultiParams.Eb=0.06;       % spike height (V)
203
204
    case 'chopper'
205
        MacGregorMultiParams.nNeuronsPerBF=	10;   % N neurons per BF
206
        MacGregorMultiParams.type = 'chopper cell';
207
        MacGregorMultiParams.fibersPerNeuron=10;  % N input fibers
208
209
        MacGregorMultiParams.dendriteLPfreq=50;   % dendritic filter
210
        MacGregorMultiParams.currentPerSpike=28e-9; % *per spike
211
%         MacGregorMultiParams.currentPerSpike=30e-9; % *per spike
212
213
        MacGregorMultiParams.Cap=1.67e-8; % ??cell capacitance (Siemens)
214
        MacGregorMultiParams.tauM=0.002;  % membrane time constant (s)
215
        MacGregorMultiParams.Ek=-0.01;    % K+ eq. potential (V)
216
        MacGregorMultiParams.dGkSpike=1.33e-4; % K+ cond.shift on spike,S
217
        MacGregorMultiParams.tauGk=	0.0005;% K+ conductance tau (s)
218
        MacGregorMultiParams.Th0=	0.01; % equilibrium threshold (V)
219
        MacGregorMultiParams.c=	0;        % threshold shift on spike, (V)
220
        MacGregorMultiParams.tauTh=	0.02; % variable threshold tau
221
        MacGregorMultiParams.Er=-0.06;    % resting potential (V)
222
        MacGregorMultiParams.Eb=0.06;     % spike height (V)
223
        MacGregorMultiParams.PSTHbinWidth=	1e-4;
224
end
225
226
%%  #8 MacGregor (second-order neuron). Only one per channel
227
MacGregorParams=[];                 % clear the structure first
228
MacGregorParams.type = 'chopper cell';
229
MacGregorParams.fibersPerNeuron=10; % N input fibers
230
MacGregorParams.dendriteLPfreq=100; % dendritic filter
231
MacGregorParams.currentPerSpike=40e-9;% *(A) per spike
232
233
MacGregorParams.Cap=16.7e-9;        % cell capacitance (Siemens)
234
MacGregorParams.tauM=0.002;         % membrane time constant (s)
235
MacGregorParams.Ek=-0.01;           % K+ eq. potential (V)
236
MacGregorParams.dGkSpike=1.33e-4;   % K+ cond.shift on spike,S
237
MacGregorParams.tauGk=	0.0012;     % K+ conductance tau (s)
238
MacGregorParams.Th0=	0.01;       % equilibrium threshold (V)
239
MacGregorParams.c=	0;              % threshold shift on spike, (V)
240
MacGregorParams.tauTh=	0.02;       % variable threshold tau
241
MacGregorParams.Er=-0.06;           % resting potential (V)
242
MacGregorParams.Eb=0.06;            % spike height (V)
243
MacGregorParams.debugging=0;        % (special)
244
% wideband accepts input from all channels (of same fiber type)
245
% use wideband to create inhibitory units
246
MacGregorParams.wideband=0;         % special for wideband units
247
% MacGregorParams.saveAllData=0;
248
249
%%  #9 filteredSACF
250
minPitch=	300; maxPitch=	3000; numPitches=60;    % specify lags
251
pitches=100*log10(logspace(minPitch/100, maxPitch/100, numPitches));
252
filteredSACFParams.lags=1./pitches;     % autocorrelation lags vector
253
filteredSACFParams.acfTau=	.003;       % time constant of running ACF
254
filteredSACFParams.lambda=	0.12;       % slower filter to smooth ACF
255
filteredSACFParams.plotFilteredSACF=1;  % 0 plots unfiltered ACFs
256
filteredSACFParams.plotACFs=0;          % special plot (see code)
257
%  filteredSACFParams.usePressnitzer=0; % attenuates ACF at  long lags
258
filteredSACFParams.lagsProcedure=  'useAllLags';
259
% filteredSACFParams.lagsProcedure=  'omitShortLags';
260
filteredSACFParams.criterionForOmittingLags=3;
261
262
% checks
263
if AN_IHCsynapseParams.numFibers<MacGregorMultiParams.fibersPerNeuron
264
    error('MacGregorMulti: too few input fibers for input to MacG unit')
265
end
266
267
268
%% now accept last minute parameter changes required by the calling program
269
% paramChanges
270
if nargin>3 && ~isempty(paramChanges)
271
    if ~iscellstr(paramChanges)
272
        error('paramChanges error: paramChanges not a cell array')
273
    end
274
275
    nChanges=length(paramChanges);
276
    for idx=1:nChanges
277
        x=paramChanges{idx};
278
        x=deblank(x);
279
        if ~isempty(x)
280
            if ~strcmp(x(end),';')
281
                error(['paramChanges error (terminate with semicolon) ' x])
282
            end
283
            st=strtrim(x(1:strfind(x,'.')-1));
284
            fld=strtrim(x(strfind(x,'.')+1:strfind(x,'=')-1));
285
            value=x(strfind(x,'=')+1:end);
286
            if isempty(st) || isempty(fld) || isempty(value)
287
                error(['paramChanges error:' x])
288
            end
289
290
            x1=eval(['isstruct(' st ')']);
291
            cmd=['isfield(' st ',''' fld ''')'];
292
            x2=eval(cmd);
293
            if ~(x1*x2)
294
                error(['paramChanges error:' x])
295
            end
296
        end
297
298
        % no problems so go ahead
299
        eval(paramChanges{idx})
300
    end
301
end
302
303
304
%% write all parameters to the command window
305
% showParams is currently set at the top of htis function
306
if showParams
307
    fprintf('\n %%%%%%%%\n')
308
    fprintf('\n%s\n', method.parameterSource)
309
    fprintf('\n')
310
    nm=UTIL_paramsList(whos);
311
    for i=1:length(nm)
312
        %         eval(['UTIL_showStruct(' nm{i} ', ''' nm{i} ''')'])
313
        if ~strcmp(nm(i), 'method')
314
            eval(['UTIL_showStructureSummary(' nm{i} ', ''' nm{i} ''', 10)'])
315
        end
316
    end
317
318
    % highlight parameter changes made locally
319
    if nargin>3 && ~isempty(paramChanges)
320
        fprintf('\n Local parameter changes:\n')
321
        for i=1:length(paramChanges)
322
            disp(paramChanges{i})
323
        end
324
    end
325
end
326
327
% for backward compatibility
328
experiment.comparisonData=[];