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 / MAPparamsNormalTest.m @ 30:1a502830d462

History | View | Annotate | Download (14.2 KB)

1
function method=MAPparamsNormalTest ...
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
DRNLParams.a=0e4;     % DRNL.a=0 means no OHCs (no nonlinear path)
80

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

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

    
93
% DRNL linear path:
94
DRNLParams.g=1000;     % linear path gain factor
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
DRNLParams.linOrder=	3;           % order of linear gammatone filters
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

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

    
113
DRNLParams.MOCtau =.1;                         % smoothing for MOC
114

    
115

    
116
%% #4 IHC_cilia_RPParams
117

    
118
IHC_cilia_RPParams.tc=	0.0003;   % 0.0003 filter time simulates viscocity
119
% IHC_cilia_RPParams.tc=	0.0005;   % 0.0003 filter time simulates viscocity
120
IHC_cilia_RPParams.C=	0.01;      % 0.1 scalar (C_cilia ) 
121
IHC_cilia_RPParams.u0=	5e-10;       
122
IHC_cilia_RPParams.s0=	10e-10;
123
IHC_cilia_RPParams.u1=	5e-10;
124
IHC_cilia_RPParams.s1=	5e-10;
125

    
126
IHC_cilia_RPParams.Gmax= 4e-9;    % 2.5e-9 maximum conductance (Siemens)
127
IHC_cilia_RPParams.Ga=	1.5e-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=	2e-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=	    1e42;   % scalar Ca -> vesicle release rate
150

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

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

    
163
AN_IHCsynapseParams.x=	10;         % replenishment from re-uptake store
164
AN_IHCsynapseParams.x=	60;         % replenishment from re-uptake store
165

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

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

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

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

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

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

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

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

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

    
248
%%  #9 filteredSACF
249
minPitch=	300; maxPitch=	3000; numPitches=60;    % specify lags
250
pitches=100*log10(logspace(minPitch/100, maxPitch/100, numPitches));
251
filteredSACFParams.lags=1./pitches;     % autocorrelation lags vector
252
filteredSACFParams.acfTau=	.003;       % time constant of running ACF
253
filteredSACFParams.lambda=	0.12;       % slower filter to smooth ACF
254
filteredSACFParams.plotFilteredSACF=1;  % 0 plots unfiltered ACFs
255
filteredSACFParams.plotACFs=0;          % special plot (see code)
256
%  filteredSACFParams.usePressnitzer=0; % attenuates ACF at  long lags
257
filteredSACFParams.lagsProcedure=  'useAllLags';
258
% filteredSACFParams.lagsProcedure=  'useBernsteinLagWeights';
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
%% write all parameters to the command window
269
% showParams is currently set at the top of htis function
270
if showParams
271
    fprintf('\n %%%%%%%%\n')
272
    fprintf('\n%s\n', method.parameterSource)
273
    fprintf('\n')
274
    nm=UTIL_paramsList(whos);
275
    for i=1:length(nm)
276
        %         eval(['UTIL_showStruct(' nm{i} ', ''' nm{i} ''')'])
277
        if ~strcmp(nm(i), 'method')
278
            eval(['UTIL_showStructureSummary(' nm{i} ', ''' nm{i} ''', 10)'])
279
        end
280
    end
281
end
282

    
283

    
284

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

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

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

    
334

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

    
340