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 / MAPparamsEndo.m @ 16:37a379b27cff

History | View | Annotate | Download (14.5 KB)

1
function method=MAPparamsEndo ...
2
    (BFlist, sampleRate, showParams)
3
% MAPparams<> establishes a complete set of MAP parameters
4
% Parameter file names must be of the form <MAPparams> <name>
5
%
6
% input arguments
7
%  BFlist     (optional) specifies the desired list of channel BFs
8
%    otherwise defaults set below
9
%  sampleRate (optional), default is 50000.
10
%  showParams (optional) =1 prints out the complete set of parameters
11
% output argument
12
%  method passes a miscelleny of values
13

    
14
global inputStimulusParams OMEParams DRNLParams
15
global IHC_VResp_VivoParams IHCpreSynapseParams  AN_IHCsynapseParams
16
global MacGregorParams MacGregorMultiParams  filteredSACFParams
17
global experiment % used by calls from multiThreshold only
18
global IHC_cilia_RPParams
19

    
20
currentFile=mfilename;                      % i.e. the name of this mfile
21
method.parameterSource=currentFile(10:end); % for the record
22

    
23
switchOffEfferent=0;
24
efferentDelay=0.010;
25
method.segmentDuration=efferentDelay;
26

    
27
if nargin<3, showParams=0; end
28
if nargin<2, sampleRate=50000; end
29
if nargin<1 || BFlist(1)<0 % if BFlist= -1, set BFlist to default
30
    lowestBF=250; 	highestBF= 8000; 	numChannels=21;
31
    % 21 chs (250-8k)includes BFs at 250 500 1000 2000 4000 8000
32
    BFlist=round(logspace(log10(lowestBF),log10(highestBF),numChannels));
33
end
34
% BFlist=1000;
35

    
36
% preserve for backward campatibility
37
method.nonlinCF=BFlist; 
38
method.dt=1/sampleRate; 
39

    
40
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41
% set  model parameters
42
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43

    
44
%%  #1 inputStimulus
45
inputStimulusParams=[];
46
inputStimulusParams.sampleRate= sampleRate; 
47

    
48
%%  #2 outerMiddleEar
49
OMEParams=[];  % clear the structure first
50
% outer ear resonances band pass filter  [gain lp order  hp]
51
OMEParams.externalResonanceFilters=      [ 10 1 1000 4000];
52
                                       
53
% highpass stapes filter  
54
%  Huber gives 2e-9 m at 80 dB and 1 kHz (2e-13 at 0 dB SPL)
55
OMEParams.OMEstapesLPcutoff= 1000;
56
OMEParams.stapesScalar=	     45e-9;
57

    
58
% Acoustic reflex: maximum attenuation should be around 25 dB Price (1966)
59
% i.e. a minimum ratio of 0.056.
60
if ~switchOffEfferent
61
    % 'spikes' model: AR based on brainstem spiking activity (LSR)
62
    OMEParams.rateToAttenuationFactor=0.003;   % * N(all ICspikes)
63
%     OMEParams.rateToAttenuationFactor=0;   % * N(all ICspikes)
64
    % 'probability model': Ar based on An firing probabilities (LSR)
65
    OMEParams.rateToAttenuationFactorProb=0.005;% * N(all ANrates)
66
%     OMEParams.rateToAttenuationFactorProb=0;% * N(all ANrates)
67
else
68
    OMEParams.rateToAttenuationFactor=0;        % 0= off
69
    OMEParams.rateToAttenuationFactorProb=0;    % 0= off
70
end
71
% asymptote should be around 100-200 ms
72
OMEParams.ARtau=.05; % AR smoothing function
73
% delay must be longer than the segment length
74
OMEParams.ARdelay=efferentDelay;  %Moss gives 8.5 ms latency
75
OMEParams.ARrateThreshold=0;
76

    
77
%%  #3 DRNL
78
DRNLParams=[];  % clear the structure first
79
DRNLParams.BFlist=BFlist;
80

    
81
% DRNL nonlinear path
82
DRNLParams.a=3e4;     % nonlinear path gain (below compression threshold)
83
% DRNLParams.a=3e2;     % DRNL.a=0 means no OHCs (no nonlinear path)
84

    
85
DRNLParams.b=8e-6;    % *compression threshold raised compression
86
% DRNLParams.b=1;    % b=1 means no compression
87

    
88
DRNLParams.c=0.2;     % compression exponent
89
% nonlinear filters
90
DRNLParams.nonlinCFs=BFlist;
91
DRNLParams.nonlinOrder=	3;           % order of nonlinear gammatone filters
92
p=0.2895;   q=170;  % human  (% p=0.14;   q=366;  % cat)
93
DRNLParams.nlBWs=  p * BFlist + q;
94
DRNLParams.p=p;   DRNLParams.q=q;   % save p and q for printing only
95

    
96
% DRNL linear path:
97
DRNLParams.g=100;     % linear path gain factor
98
% linCF is not necessarily the same as nonlinCF
99
minLinCF=153.13; coeffLinCF=0.7341;   % linCF>nonlinBF for BF < 1 kHz
100
DRNLParams.linCFs=minLinCF+coeffLinCF*BFlist;
101
DRNLParams.linOrder=	3;           % order of linear gammatone filters
102
minLinBW=100; coeffLinBW=0.6531;
103
DRNLParams.linBWs=minLinBW + coeffLinBW*BFlist; % bandwidths of linear  filters
104

    
105
% DRNL MOC efferents
106
DRNLParams.MOCdelay = efferentDelay;            % must be < segment length!
107
if ~switchOffEfferent
108
    % 'spikes' model: MOC based on brainstem spiking activity (HSR)
109
    DRNLParams.rateToAttenuationFactor = .009;  % strength of MOC
110
    DRNLParams.rateToAttenuationFactor = .009;  % strength of MOC
111
%      DRNLParams.rateToAttenuationFactor = 0;  % strength of MOC
112

    
113
    % 'spikes' model: MOC based on brainstem spiking activity (HSR)
114
    DRNLParams.rateToAttenuationFactorProb = .002;  % strength of MOC
115
else
116
    DRNLParams.rateToAttenuationFactor = 0;     % 0 = MOC off (probability)
117
    DRNLParams.rateToAttenuationFactorProb = 0; % 0 = MOC off (spikes)
118
end
119
DRNLParams.MOCtau =.03;                         % smoothing for MOC
120
DRNLParams.MOCrateThreshold =50;                % set to AN rate threshold
121

    
122

    
123
%% #4 IHC_cilia_RPParams
124

    
125
IHC_cilia_RPParams.tc=	0.0003;   % 0.0003 filter time simulates viscocity
126
% IHC_cilia_RPParams.tc=	0.0005;   % 0.0003 filter time simulates viscocity
127
IHC_cilia_RPParams.C=	0.05;      % 0.1 scalar (C_cilia ) 
128
IHC_cilia_RPParams.u0=	5e-9;       
129
IHC_cilia_RPParams.s0=	30e-9;
130
IHC_cilia_RPParams.u1=	1e-9;
131
IHC_cilia_RPParams.s1=	1e-9;
132

    
133
IHC_cilia_RPParams.Gmax= 5e-9;      % 2.5e-9 maximum conductance (Siemens)
134
IHC_cilia_RPParams.Ga=	1e-9;       % 4.3e-9 fixed apical membrane conductance
135

    
136
%  #5 IHC_RP
137
IHC_cilia_RPParams.Cab=	4e-012;         % IHC capacitance (F)
138
IHC_cilia_RPParams.Cab=	1e-012;         % IHC capacitance (F)
139
IHC_cilia_RPParams.Et=	0.100;          % endocochlear potential (V)
140
IHC_cilia_RPParams.Et=	0.065;          % endocochlear potential (V)
141

    
142
IHC_cilia_RPParams.Gk=	2e-008;         % 1e-8 potassium conductance (S)
143
IHC_cilia_RPParams.Ek=	-0.08;          % -0.084 K equilibrium potential
144
IHC_cilia_RPParams.Rpc=	0.04;           % combined resistances
145

    
146

    
147
%%  #5 IHCpreSynapse
148
IHCpreSynapseParams=[];
149
IHCpreSynapseParams.GmaxCa=	14e-9;% maximum calcium conductance
150
IHCpreSynapseParams.GmaxCa=	12e-9;% maximum calcium conductance
151
IHCpreSynapseParams.ECa=	0.066;  % calcium equilibrium potential
152
IHCpreSynapseParams.beta=	400;	% determine Ca channel opening
153
IHCpreSynapseParams.gamma=	100;	% determine Ca channel opening
154
IHCpreSynapseParams.tauM=	0.00005;	% membrane time constant ?0.1ms
155
IHCpreSynapseParams.power=	3;
156
% reminder: changing z has a strong effect on HF thresholds (like Et)
157
IHCpreSynapseParams.z=	    2e42;   % scalar Ca -> vesicle release rate
158

    
159
LSRtauCa=50e-6;            HSRtauCa=85e-6;            % seconds
160
% LSRtauCa=35e-6;            HSRtauCa=70e-6;            % seconds
161
IHCpreSynapseParams.tauCa= [LSRtauCa HSRtauCa]; %LSR and HSR fiber
162

    
163
%%  #6 AN_IHCsynapse
164
% c=kym/(y(l+r)+kl)	(spontaneous rate)
165
% c=(approx)  ym/l  (saturated rate)
166
AN_IHCsynapseParams=[];             % clear the structure first
167
AN_IHCsynapseParams.M=	12;         % maximum vesicles at synapse
168
AN_IHCsynapseParams.y=	4;          % depleted vesicle replacement rate
169
AN_IHCsynapseParams.y=	6;          % depleted vesicle replacement rate
170

    
171
AN_IHCsynapseParams.x=	30;         % replenishment from re-uptake store
172
AN_IHCsynapseParams.x=	60;         % replenishment from re-uptake store
173

    
174
% reduce l to increase saturated rate
175
AN_IHCsynapseParams.l=	100; % *loss rate of vesicles from the cleft
176
AN_IHCsynapseParams.l=	250; % *loss rate of vesicles from the cleft
177

    
178
AN_IHCsynapseParams.r=	500; % *reuptake rate from cleft into cell
179
% AN_IHCsynapseParams.r=	300; % *reuptake rate from cleft into cell
180

    
181
AN_IHCsynapseParams.refractory_period=	0.00075;
182
% number of AN fibers at each BF (used only for spike generation)
183
AN_IHCsynapseParams.numFibers=	100; 
184
AN_IHCsynapseParams.TWdelay=0.004;  % ?delay before stimulus first spike
185

    
186
AN_IHCsynapseParams.ANspeedUpFactor=5; % longer epochs for computing spikes.
187

    
188
%%  #7 MacGregorMulti (first order brainstem neurons)
189
MacGregorMultiParams=[];
190
MacGregorMultiType='chopper'; % MacGregorMultiType='primary-like'; %choose
191
switch MacGregorMultiType
192
    case 'primary-like'
193
        MacGregorMultiParams.nNeuronsPerBF=	10;   % N neurons per BF
194
        MacGregorMultiParams.type = 'primary-like cell';
195
        MacGregorMultiParams.fibersPerNeuron=4;   % N input fibers
196
        MacGregorMultiParams.dendriteLPfreq=200;  % dendritic filter
197
        MacGregorMultiParams.currentPerSpike=0.11e-6; % (A) per spike
198
        MacGregorMultiParams.Cap=4.55e-9;   % cell capacitance (Siemens)
199
        MacGregorMultiParams.tauM=5e-4;     % membrane time constant (s)
200
        MacGregorMultiParams.Ek=-0.01;      % K+ eq. potential (V)
201
        MacGregorMultiParams.dGkSpike=3.64e-5; % K+ cond.shift on spike,S
202
        MacGregorMultiParams.tauGk=	0.0012; % K+ conductance tau (s)
203
        MacGregorMultiParams.Th0=	0.01;   % equilibrium threshold (V)
204
        MacGregorMultiParams.c=	0.01;       % threshold shift on spike, (V)
205
        MacGregorMultiParams.tauTh=	0.015;  % variable threshold tau
206
        MacGregorMultiParams.Er=-0.06;      % resting potential (V)
207
        MacGregorMultiParams.Eb=0.06;       % spike height (V)
208

    
209
    case 'chopper'
210
        MacGregorMultiParams.nNeuronsPerBF=	10;   % N neurons per BF
211
        MacGregorMultiParams.type = 'chopper cell';
212
        MacGregorMultiParams.fibersPerNeuron=10;  % N input fibers
213
%         MacGregorMultiParams.fibersPerNeuron=6;  % N input fibers
214

    
215
        MacGregorMultiParams.dendriteLPfreq=50;   % dendritic filter
216
        MacGregorMultiParams.currentPerSpike=35e-9; % *per spike
217
        MacGregorMultiParams.currentPerSpike=30e-9; % *per spike
218
        
219
        MacGregorMultiParams.Cap=1.67e-8; % ??cell capacitance (Siemens)
220
        MacGregorMultiParams.tauM=0.002;  % membrane time constant (s)
221
        MacGregorMultiParams.Ek=-0.01;    % K+ eq. potential (V)
222
        MacGregorMultiParams.dGkSpike=1.33e-4; % K+ cond.shift on spike,S
223
        MacGregorMultiParams.tauGk=	0.0005;% K+ conductance tau (s)
224
        MacGregorMultiParams.Th0=	0.01; % equilibrium threshold (V)
225
        MacGregorMultiParams.c=	0;        % threshold shift on spike, (V)
226
        MacGregorMultiParams.tauTh=	0.02; % variable threshold tau
227
        MacGregorMultiParams.Er=-0.06;    % resting potential (V)
228
        MacGregorMultiParams.Eb=0.06;     % spike height (V)
229
        MacGregorMultiParams.PSTHbinWidth=	1e-4;
230
end
231

    
232
%%  #8 MacGregor (second-order neuron). Only one per channel
233
MacGregorParams=[];                 % clear the structure first
234
MacGregorParams.type = 'chopper cell';
235
MacGregorParams.fibersPerNeuron=10; % N input fibers
236
MacGregorParams.dendriteLPfreq=100; % dendritic filter
237
MacGregorParams.currentPerSpike=120e-9;% *(A) per spike
238
MacGregorParams.currentPerSpike=30e-9;% *(A) per spike
239

    
240
MacGregorParams.Cap=16.7e-9;        % cell capacitance (Siemens)
241
MacGregorParams.tauM=0.002;         % membrane time constant (s)
242
MacGregorParams.Ek=-0.01;           % K+ eq. potential (V)
243
MacGregorParams.dGkSpike=1.33e-4;   % K+ cond.shift on spike,S
244
MacGregorParams.tauGk=	0.0005;     % K+ conductance tau (s)
245
MacGregorParams.Th0=	0.01;       % equilibrium threshold (V)
246
MacGregorParams.c=	0;              % threshold shift on spike, (V)
247
MacGregorParams.tauTh=	0.02;       % variable threshold tau
248
MacGregorParams.Er=-0.06;           % resting potential (V)
249
MacGregorParams.Eb=0.06;            % spike height (V)
250
MacGregorParams.debugging=0;        % (special)
251
% wideband accepts input from all channels (of same fiber type)
252
% use wideband to create inhibitory units
253
MacGregorParams.wideband=0;         % special for wideband units
254
% MacGregorParams.saveAllData=0;
255

    
256
%%  #9 filteredSACF
257
minPitch=	300; maxPitch=	3000; numPitches=60;    % specify lags
258
pitches=100*log10(logspace(minPitch/100, maxPitch/100, numPitches));
259
filteredSACFParams.lags=1./pitches;     % autocorrelation lags vector
260
filteredSACFParams.acfTau=	.003;       % time constant of running ACF
261
filteredSACFParams.lambda=	0.12;       % slower filter to smooth ACF
262
filteredSACFParams.plotFilteredSACF=1;  % 0 plots unfiltered ACFs
263
filteredSACFParams.plotACFs=0;          % special plot (see code)
264
%  filteredSACFParams.usePressnitzer=0; % attenuates ACF at  long lags
265
filteredSACFParams.lagsProcedure=  'useAllLags';
266
% filteredSACFParams.lagsProcedure=  'useBernsteinLagWeights';
267
% filteredSACFParams.lagsProcedure=  'omitShortLags';
268
filteredSACFParams.criterionForOmittingLags=3;
269

    
270
% checks
271
if AN_IHCsynapseParams.numFibers<MacGregorMultiParams.fibersPerNeuron
272
    error('MacGregorMulti: too few input fibers for input to MacG unit')
273
end
274

    
275

    
276
%% write all parameters to the command window
277
% showParams is currently set at the top of htis function
278
if showParams
279
    fprintf('\n %%%%%%%%\n')
280
    fprintf('\n%s\n', method.parameterSource)
281
    fprintf('\n')
282
    nm=UTIL_paramsList(whos);
283
    for i=1:length(nm)
284
        %         eval(['UTIL_showStruct(' nm{i} ', ''' nm{i} ''')'])
285
        if ~strcmp(nm(i), 'method')
286
            eval(['UTIL_showStructureSummary(' nm{i} ', ''' nm{i} ''', 10)'])
287
        end
288
    end
289
end
290

    
291

    
292

    
293
% **********************************************************************  comparison data
294
% store individual data here for display on the multiThreshold GUI (if used)
295
% the final value in each vector is an identifier (BF or duration))
296
if isstruct(experiment)
297
    switch experiment.paradigm
298
        case {'IFMC','IFMC_8ms'}
299
            % based on MPa
300
            comparisonData=[
301
                66	51	49	48	46	45	54	250;
302
                60	54	46	42	39	49	65	500;
303
                64	51	38	32	33	59	75	1000;
304
                59	51	36	30	41	81	93	2000;
305
                71	63	53	44	36	76	95	4000;
306
                70	64	43	35	35	66	88	6000;
307
                110	110	110	110	110	110	110	8000;
308
                ];
309
            if length(BFlist)==1 && ~isempty(comparisonData)
310
                availableFrequencies=comparisonData(:,end)';
311
                findRow= find(BFlist==availableFrequencies);
312
                if ~isempty (findRow)
313
                    experiment.comparisonData=comparisonData(findRow,:);
314
                end
315
            end
316

    
317
        case {'TMC','TMC_8ms'}
318
            % based on MPa
319
            comparisonData=[
320
                48	58	63	68	75	80	85	92	99	250;
321
                33	39	40	49	52	61	64	77	79	500;
322
                39	42	50	81	83	92	96	97	110	1000;
323
                24	26	32	37	46	51	59	71	78	2000;
324
                65	68	77	85	91	93	110	110	110	4000;
325
                20	19	26	44	80	95	96	110	110	6000;
326
                ];
327
            if length(BFlist)==1 && ~isempty(comparisonData)
328
                availableFrequencies=comparisonData(:,end)';
329
                findRow= find(BFlist==availableFrequencies);
330
                if ~isempty (findRow)
331
                    experiment.comparisonData=comparisonData(findRow,:);
332
                end
333
            end
334

    
335
        case { 'absThreshold',  'absThreshold_8'}
336
            % MPa thresholds
337
            experiment.comparisonData=[
338
                32	26	16	18	22	22 0.008;
339
                16	13	6	9	15	11 0.500
340
                ];
341

    
342

    
343
        otherwise
344
            experiment.comparisonData=[];
345
    end
346
end
347

    
348