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 @ 26:b03ef38fe497

History | View | Annotate | Download (14.5 KB)

1
function method=MAPparamsEndo ...
2
    (BFlist, sampleRate, showParams, paramChanges)
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
efferentDelay=0.010;
24
method.segmentDuration=efferentDelay;
25

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

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

    
39
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
40
% set  model parameters
41
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
42

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

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

    
57
% Acoustic reflex: maximum attenuation should be around 25 dB Price (1966)
58
% i.e. a minimum ratio of 0.056.
59
% 'spikes' model: AR based on brainstem spiking activity (LSR)
60
OMEParams.rateToAttenuationFactor=0.006;   % * N(all ICspikes)
61
% OMEParams.rateToAttenuationFactor=0;   % * N(all ICspikes)
62

    
63
% 'probability model': Ar based on AN firing probabilities (LSR)
64
OMEParams.rateToAttenuationFactorProb=0.01;% * N(all ANrates)
65
% OMEParams.rateToAttenuationFactorProb=0;% * N(all ANrates)
66

    
67
% asymptote should be around 100-200 ms
68
OMEParams.ARtau=.05; % AR smoothing function
69
% delay must be longer than the segment length
70
OMEParams.ARdelay=efferentDelay;  %Moss gives 8.5 ms latency
71
OMEParams.ARrateThreshold=0;
72

    
73
%%  #3 DRNL
74
DRNLParams=[];  % clear the structure first
75
DRNLParams.BFlist=BFlist;
76

    
77
% DRNL nonlinear path
78
DRNLParams.a=5e4;     % DRNL.a=0 means no OHCs (no nonlinear path)
79

    
80
DRNLParams.b=8e-6;    % *compression threshold raised compression
81
% DRNLParams.b=1;    % b=1 means no compression
82

    
83
DRNLParams.c=0.2;     % compression exponent
84
% nonlinear filters
85
DRNLParams.nonlinCFs=BFlist;
86
DRNLParams.nonlinOrder=	3;           % order of nonlinear gammatone filters
87
p=0.2895;   q=170;  % human  (% p=0.14;   q=366;  % cat)
88
DRNLParams.nlBWs=  p * BFlist + q;
89
DRNLParams.p=p;   DRNLParams.q=q;   % save p and q for printing only
90

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

    
100
% DRNL MOC efferents
101
DRNLParams.MOCdelay = efferentDelay;            % must be < segment length!
102

    
103
% 'spikes' model: MOC based on brainstem spiking activity (HSR)
104
DRNLParams.rateToAttenuationFactor = .01;  % strength of MOC
105
%      DRNLParams.rateToAttenuationFactor = 0;  % strength of MOC
106
% 'probability' model: MOC based on AN spiking activity (HSR)
107
DRNLParams.rateToAttenuationFactorProb = .0055;  % strength of MOC
108
% DRNLParams.rateToAttenuationFactorProb = .0;  % strength of MOC
109
DRNLParams.MOCrateThresholdProb =70;                % spikes/s probability only
110

    
111
DRNLParams.MOCtau =.1;                         % smoothing for MOC
112

    
113

    
114
%% #4 IHC_cilia_RPParams
115

    
116
IHC_cilia_RPParams.tc=	0.0003;   % 0.0003 filter time simulates viscocity
117
% IHC_cilia_RPParams.tc=	0.0005;   % 0.0003 filter time simulates viscocity
118
IHC_cilia_RPParams.C=	0.05;      % 0.1 scalar (C_cilia ) 
119
IHC_cilia_RPParams.u0=	5e-9;       
120
IHC_cilia_RPParams.s0=	30e-9;
121
IHC_cilia_RPParams.u1=	1e-9;
122
IHC_cilia_RPParams.s1=	1e-9;
123

    
124
IHC_cilia_RPParams.Gmax= 5e-9;    % 2.5e-9 maximum conductance (Siemens)
125
IHC_cilia_RPParams.Ga=	1e-9;  % 4.3e-9 fixed apical membrane conductance
126

    
127
%  #5 IHC_RP
128
IHC_cilia_RPParams.Cab=	4e-012;         % IHC capacitance (F)
129
IHC_cilia_RPParams.Cab=	1e-012;         % IHC capacitance (F)
130
IHC_cilia_RPParams.Et=	0.07;          % endocochlear potential (V)
131

    
132
IHC_cilia_RPParams.Gk=	2e-008;         % 1e-8 potassium conductance (S)
133
IHC_cilia_RPParams.Ek=	-0.08;          % -0.084 K equilibrium potential
134
IHC_cilia_RPParams.Rpc=	0.04;           % combined resistances
135

    
136

    
137
%%  #5 IHCpreSynapse
138
IHCpreSynapseParams=[];
139
IHCpreSynapseParams.GmaxCa=	14e-9;% maximum calcium conductance
140
IHCpreSynapseParams.GmaxCa=	12e-9;% maximum calcium conductance
141
IHCpreSynapseParams.ECa=	0.066;  % calcium equilibrium potential
142
IHCpreSynapseParams.beta=	400;	% determine Ca channel opening
143
IHCpreSynapseParams.gamma=	100;	% determine Ca channel opening
144
IHCpreSynapseParams.tauM=	0.00005;	% membrane time constant ?0.1ms
145
IHCpreSynapseParams.power=	3;
146
% reminder: changing z has a strong effect on HF thresholds (like Et)
147
IHCpreSynapseParams.z=	    2e42;   % scalar Ca -> vesicle release rate
148

    
149
LSRtauCa=35e-6;            HSRtauCa=85e-6;            % seconds
150
% LSRtauCa=35e-6;            HSRtauCa=70e-6;            % seconds
151
IHCpreSynapseParams.tauCa= [LSRtauCa HSRtauCa]; %LSR and HSR fiber
152

    
153
%%  #6 AN_IHCsynapse
154
% c=kym/(y(l+r)+kl)	(spontaneous rate)
155
% c=(approx)  ym/l  (saturated rate)
156
AN_IHCsynapseParams=[];             % clear the structure first
157
AN_IHCsynapseParams.M=	12;         % maximum vesicles at synapse
158
AN_IHCsynapseParams.y=	4;          % depleted vesicle replacement rate
159
AN_IHCsynapseParams.y=	6;          % depleted vesicle replacement rate
160

    
161
AN_IHCsynapseParams.x=	30;         % replenishment from re-uptake store
162
AN_IHCsynapseParams.x=	60;         % replenishment from re-uptake store
163

    
164
% reduce l to increase saturated rate
165
AN_IHCsynapseParams.l=	100; % *loss rate of vesicles from the cleft
166
AN_IHCsynapseParams.l=	250; % *loss rate of vesicles from the cleft
167

    
168
AN_IHCsynapseParams.r=	500; % *reuptake rate from cleft into cell
169
% AN_IHCsynapseParams.r=	300; % *reuptake rate from cleft into cell
170

    
171
AN_IHCsynapseParams.refractory_period=	0.00075;
172
% number of AN fibers at each BF (used only for spike generation)
173
AN_IHCsynapseParams.numFibers=	100; 
174
AN_IHCsynapseParams.TWdelay=0.004;  % ?delay before stimulus first spike
175

    
176
AN_IHCsynapseParams.ANspeedUpFactor=5; % longer epochs for computing spikes.
177

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

    
199
    case 'chopper'
200
        MacGregorMultiParams.nNeuronsPerBF=	10;   % N neurons per BF
201
        MacGregorMultiParams.type = 'chopper cell';
202
        MacGregorMultiParams.fibersPerNeuron=10;  % N input fibers
203
%         MacGregorMultiParams.fibersPerNeuron=6;  % N input fibers
204

    
205
        MacGregorMultiParams.dendriteLPfreq=50;   % dendritic filter
206
        MacGregorMultiParams.currentPerSpike=35e-9; % *per spike
207
        MacGregorMultiParams.currentPerSpike=30e-9; % *per spike
208
        
209
        MacGregorMultiParams.Cap=1.67e-8; % ??cell capacitance (Siemens)
210
        MacGregorMultiParams.tauM=0.002;  % membrane time constant (s)
211
        MacGregorMultiParams.Ek=-0.01;    % K+ eq. potential (V)
212
        MacGregorMultiParams.dGkSpike=1.33e-4; % K+ cond.shift on spike,S
213
        MacGregorMultiParams.tauGk=	0.0005;% K+ conductance tau (s)
214
        MacGregorMultiParams.Th0=	0.01; % equilibrium threshold (V)
215
        MacGregorMultiParams.c=	0;        % threshold shift on spike, (V)
216
        MacGregorMultiParams.tauTh=	0.02; % variable threshold tau
217
        MacGregorMultiParams.Er=-0.06;    % resting potential (V)
218
        MacGregorMultiParams.Eb=0.06;     % spike height (V)
219
        MacGregorMultiParams.PSTHbinWidth=	1e-4;
220
end
221

    
222
%%  #8 MacGregor (second-order neuron). Only one per channel
223
MacGregorParams=[];                 % clear the structure first
224
MacGregorParams.type = 'chopper cell';
225
MacGregorParams.fibersPerNeuron=10; % N input fibers
226
MacGregorParams.dendriteLPfreq=100; % dendritic filter
227
MacGregorParams.currentPerSpike=120e-9;% *(A) per spike
228
MacGregorParams.currentPerSpike=30e-9;% *(A) per spike
229

    
230
MacGregorParams.Cap=16.7e-9;        % cell capacitance (Siemens)
231
MacGregorParams.tauM=0.002;         % membrane time constant (s)
232
MacGregorParams.Ek=-0.01;           % K+ eq. potential (V)
233
MacGregorParams.dGkSpike=1.33e-4;   % K+ cond.shift on spike,S
234
MacGregorParams.tauGk=	0.0005;     % K+ conductance tau (s)
235
MacGregorParams.Th0=	0.01;       % equilibrium threshold (V)
236
MacGregorParams.c=	0;              % threshold shift on spike, (V)
237
MacGregorParams.tauTh=	0.02;       % variable threshold tau
238
MacGregorParams.Er=-0.06;           % resting potential (V)
239
MacGregorParams.Eb=0.06;            % spike height (V)
240
MacGregorParams.debugging=0;        % (special)
241
% wideband accepts input from all channels (of same fiber type)
242
% use wideband to create inhibitory units
243
MacGregorParams.wideband=0;         % special for wideband units
244
% MacGregorParams.saveAllData=0;
245

    
246
%%  #9 filteredSACF
247
minPitch=	300; maxPitch=	3000; numPitches=60;    % specify lags
248
pitches=100*log10(logspace(minPitch/100, maxPitch/100, numPitches));
249
filteredSACFParams.lags=1./pitches;     % autocorrelation lags vector
250
filteredSACFParams.acfTau=	.003;       % time constant of running ACF
251
filteredSACFParams.lambda=	0.12;       % slower filter to smooth ACF
252
filteredSACFParams.plotFilteredSACF=1;  % 0 plots unfiltered ACFs
253
filteredSACFParams.plotACFs=0;          % special plot (see code)
254
%  filteredSACFParams.usePressnitzer=0; % attenuates ACF at  long lags
255
filteredSACFParams.lagsProcedure=  'useAllLags';
256
% filteredSACFParams.lagsProcedure=  'useBernsteinLagWeights';
257
% filteredSACFParams.lagsProcedure=  'omitShortLags';
258
filteredSACFParams.criterionForOmittingLags=3;
259

    
260
% checks
261
if AN_IHCsynapseParams.numFibers<MacGregorMultiParams.fibersPerNeuron
262
    error('MacGregorMulti: too few input fibers for input to MacG unit')
263
end
264

    
265

    
266
%% now accept last minute parameter changes required by the calling program
267
% paramChanges
268
if nargin>3 && ~isempty(paramChanges)
269
    nChanges=length(paramChanges);
270
    for idx=1:nChanges
271
        eval(paramChanges{idx})
272
    end
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

    
290
    % highlight parameter changes made locally
291
    if nargin>3 && ~isempty(paramChanges)
292
        fprintf('\n Local parameter changes:\n')
293
        for i=1:length(paramChanges)
294
            disp(paramChanges{i})
295
        end
296
    end
297
end
298

    
299

    
300

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

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

    
343
        case { 'absThreshold',  'absThreshold_8'}
344
            % MPa thresholds
345
            experiment.comparisonData=[
346
                32	26	16	18	22	22 0.008;
347
                16	13	6	9	15	11 0.500
348
                ];
349

    
350

    
351
        otherwise
352
            experiment.comparisonData=[];
353
    end
354
end
355

    
356