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 @ 24:a5e4a43c1673

History | View | Annotate | Download (14 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.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 = .005;  % strength of MOC
108
% DRNLParams.rateToAttenuationFactorProb = .0;  % strength of MOC
109
DRNLParams.MOCrateThreshold =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.100;          % 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
%% write all parameters to the command window
267
% showParams is currently set at the top of htis function
268
if showParams
269
    fprintf('\n %%%%%%%%\n')
270
    fprintf('\n%s\n', method.parameterSource)
271
    fprintf('\n')
272
    nm=UTIL_paramsList(whos);
273
    for i=1:length(nm)
274
        %         eval(['UTIL_showStruct(' nm{i} ', ''' nm{i} ''')'])
275
        if ~strcmp(nm(i), 'method')
276
            eval(['UTIL_showStructureSummary(' nm{i} ', ''' nm{i} ''', 10)'])
277
        end
278
    end
279
end
280

    
281

    
282

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

    
307
        case {'TMC','TMC_8ms'}
308
            % based on MPa
309
            comparisonData=[
310
                48	58	63	68	75	80	85	92	99	250;
311
                33	39	40	49	52	61	64	77	79	500;
312
                39	42	50	81	83	92	96	97	110	1000;
313
                24	26	32	37	46	51	59	71	78	2000;
314
                65	68	77	85	91	93	110	110	110	4000;
315
                20	19	26	44	80	95	96	110	110	6000;
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 { 'absThreshold',  'absThreshold_8'}
326
            % MPa thresholds
327
            experiment.comparisonData=[
328
                32	26	16	18	22	22 0.008;
329
                16	13	6	9	15	11 0.500
330
                ];
331

    
332

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

    
338