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 / MAPparamsNormal.m @ 18:e9e263e4fcde

History | View | Annotate | Download (14.2 KB)

1
function method=MAPparamsNormal ...
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
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.003;   % * 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.003;% * 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=3e4;     % nonlinear path gain (below compression threshold)
79
% DRNLParams.a=3e2;     % DRNL.a=0 means no OHCs (no nonlinear path)
80

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

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

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

    
101
% DRNL MOC efferents
102
DRNLParams.MOCdelay = efferentDelay;            % must be < segment length!
103
% 'spikes' model: MOC based on brainstem spiking activity (HSR)
104
DRNLParams.rateToAttenuationFactor = .009;  % strength of MOC
105
DRNLParams.rateToAttenuationFactor = .009;  % strength of MOC
106
%      DRNLParams.rateToAttenuationFactor = 0;  % strength of MOC
107

    
108
% 'probability' model: MOC based on AN spiking activity (HSR)
109
DRNLParams.rateToAttenuationFactorProb = .007;  % strength of MOC
110
DRNLParams.rateToAttenuationFactorProb = .0;  % strength of MOC
111
DRNLParams.MOCtau =.03;                         % smoothing for MOC
112
DRNLParams.MOCrateThreshold =50;                % set to AN rate threshold
113

    
114

    
115
%% #4 IHC_cilia_RPParams
116

    
117
IHC_cilia_RPParams.tc=	0.0003;   % 0.0003 filter time simulates viscocity
118
% IHC_cilia_RPParams.tc=	0.0005;   % 0.0003 filter time simulates viscocity
119
IHC_cilia_RPParams.C=	0.05;      % 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= 5e-9;    % 2.5e-9 maximum conductance (Siemens)
126
IHC_cilia_RPParams.Ga=	1e-9;  % 4.3e-9 fixed apical membrane conductance
127

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

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

    
137

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
266

    
267
%% write all parameters to the command window
268
% showParams is currently set at the top of htis function
269
if showParams
270
    fprintf('\n %%%%%%%%\n')
271
    fprintf('\n%s\n', method.parameterSource)
272
    fprintf('\n')
273
    nm=UTIL_paramsList(whos);
274
    for i=1:length(nm)
275
        %         eval(['UTIL_showStruct(' nm{i} ', ''' nm{i} ''')'])
276
        if ~strcmp(nm(i), 'method')
277
            eval(['UTIL_showStructureSummary(' nm{i} ', ''' nm{i} ''', 10)'])
278
        end
279
    end
280
end
281

    
282

    
283

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

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

    
326
        case { 'absThreshold',  'absThreshold_8'}
327
            % MPa thresholds
328
            experiment.comparisonData=[
329
                32	26	16	18	22	22 0.008;
330
                16	13	6	9	15	11 0.500
331
                ];
332

    
333

    
334
        otherwise
335
            experiment.comparisonData=[];
336
    end
337
end
338

    
339