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 / MAPparamsPL.m @ 38:c2204b18f4a2

History | View | Annotate | Download (13.7 KB)

1 38:c2204b18f4a2 rmeddis
function method=MAPparamsPL ...
2
    (BFlist, sampleRate, showParams, paramChanges)
3
% MAPparamsPL.m is a parameter file, similar in all respects to
4
%  MAPparamsNormal except that a primary-like' neuron is used at the
5
%  level of the cochlear nuclues (rather than a chopper cell).
6
%
7
% MAPparams<> establishes a complete set of MAP parameters
8
% Parameter file names must be of the form <MAPparams><name>
9
%
10
% Input arguments
11
%  BFlist     (optional) specifies the desired list of channel BFs
12
%    otherwise defaults set below
13
%  sampleRate (optional), default is 50000.
14
%  showParams (optional) =1 prints out the complete set of parameters
15
% Output argument
16
%  method passes a miscelleny of values
17
%  the use of 'method' is being phased out. use globals
18
19
global inputStimulusParams OMEParams DRNLParams IHC_cilia_RPParams
20
global IHCpreSynapseParams  AN_IHCsynapseParams
21
global MacGregorParams MacGregorMultiParams  filteredSACFParams
22
global experiment % used only by calls from multiThreshold
23
% global IHC_VResp_VivoParams
24
25
currentFile=mfilename;                      % i.e. the name of this mfile
26
method.parameterSource=currentFile(10:end); % for the record
27
28
efferentDelay=0.010;
29
method.segmentDuration=efferentDelay;
30
31
if nargin<3, showParams=0; end
32
if nargin<2, sampleRate=50000; end
33
if nargin<1 || BFlist(1)<0 % if BFlist= -1, set BFlist to default
34
    lowestBF=250; 	highestBF= 8000; 	numChannels=21;
35
    % 21 chs (250-8k)includes BFs at 250 500 1000 2000 4000 8000
36
    BFlist=round(logspace(log10(lowestBF),log10(highestBF),numChannels));
37
end
38
% BFlist=1000;  % single channel option
39
40
% preserve for backward campatibility
41
method.nonlinCF=BFlist;
42
method.dt=1/sampleRate;
43
44
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
45
% set  model parameters
46
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
47
48
%%  #1 inputStimulus
49
inputStimulusParams=[];
50
inputStimulusParams.sampleRate= sampleRate;
51
52
%%  #2 outerMiddleEar
53
OMEParams=[];  % clear the structure first
54
% outer ear resonances band pass filter  [gain lp order  hp]
55
OMEParams.externalResonanceFilters=      [ 10 1 1000 4000];
56
57
% highpass stapes filter
58
%  Huber gives 2e-9 m at 80 dB and 1 kHz (2e-13 at 0 dB SPL)
59
OMEParams.OMEstapesHPcutoff= 1000;
60
OMEParams.stapesScalar=	     45e-9;
61
62
% Acoustic reflex: maximum attenuation should be around 25 dB (Price, 1966)
63
% i.e. a minimum ratio of 0.056.
64
% 'spikes' model: AR based on brainstem spiking activity (LSR)
65
OMEParams.rateToAttenuationFactor=0.05; % * N(all ICspikes)
66
% 'probability model': Ar based on AN firing probabilities (LSR)
67
OMEParams.rateToAttenuationFactorProb=0.02;    % * N(all ANrates)
68
69
% asymptote should be around 100-200 ms
70
OMEParams.ARtau=.250; % AR smoothing function 250 ms fits Hung and Dallos
71
% delay must be longer than the segment length
72
OMEParams.ARdelay=efferentDelay;  %Moss gives 8.5 ms latency
73
OMEParams.ARrateThreshold=40;
74
75
%%  #3 DRNL
76
DRNLParams=[];  % clear the structure first
77
% DRNLParams.BFlist=BFlist;
78
79
%   *** DRNL nonlinear path
80
% broken stick compression
81
DRNLParams.a=2e4;       % DRNL.a=0 means no OHCs (no nonlinear path)
82
DRNLParams.c=.2;        % compression exponent
83
DRNLParams.ctBMdB = 10; %Compression threshold dB re 10e-9 m displacement
84
85
% filters
86
DRNLParams.nonlinOrder=	3;  % order of nonlinear gammatone filters
87
DRNLParams.nonlinCFs=BFlist;
88
DRNLParams.p=0.2895;   DRNLParams.q=250;   % save p and q for printing only
89
% p=0.2895;   q=250;      % human  (% p=0.14;   q=366;  % cat)
90
DRNLParams.nlBWs=  DRNLParams.p * BFlist + DRNLParams.q;
91
92
%   *** DRNL linear path:
93
DRNLParams.g=100;       % linear path gain factor
94
DRNLParams.linOrder=3;  % order of linear gammatone filters
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
% bandwidths (linear)
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
DRNLParams.minMOCattenuationdB=-35;
105
106
% 'spikes' model: MOC based on brainstem spiking activity (HSR)
107
DRNLParams.MOCtau =.0285;                         % smoothing for MOC
108
DRNLParams.rateToAttenuationFactor = .03;  % strength of MOC
109
DRNLParams.rateToAttenuationFactor = .0055;  % strength of MOC
110
111
% 'probability' model: MOC based on AN probability (HSR)
112
DRNLParams.MOCtauProb =.285;                         % smoothing for MOC
113
DRNLParams.rateToAttenuationFactorProb = 0.007;  % strength of MOC
114
DRNLParams.MOCrateThresholdProb =67;                % spikes/s probability only
115
116
117
%% #4 IHC_cilia_RPParams
118
IHC_cilia_RPParams.tc=	0.00012;   % 0.0003 Shamma
119
IHC_cilia_RPParams.C=	0.08;       % 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= 6e-9;    % 2.5e-9 maximum conductance (Siemens)
126
IHC_cilia_RPParams.Ga=	1e-9;  % 4.3e-9 fixed apical membrane conductance
127
IHC_cilia_RPParams.Ga=	.8e-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=	1e-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=	    2e42;   % scalar Ca -> vesicle release rate
150
151
LSRtauCa=30e-6;            HSRtauCa=80e-6;            % seconds
152
% LSRtauCa=40e-6;            HSRtauCa=90e-6;            % seconds
153
% IHCpreSynapseParams.tauCa= [15e-6 80e-6]; %LSR and HSR fiber
154
IHCpreSynapseParams.tauCa= [LSRtauCa HSRtauCa]; %LSR and HSR fiber
155
156
%%  #6 AN_IHCsynapse
157
AN_IHCsynapseParams=[];             % clear the structure first
158
% number of AN fibers at each BF (used only for spike generation)
159
AN_IHCsynapseParams.numFibers=	100;
160
% absolute refractory period. Relative refractory period is the same.
161
AN_IHCsynapseParams.refractory_period=	0.00075;
162
AN_IHCsynapseParams.TWdelay=0.004;  % ?delay before stimulus first spike
163
AN_IHCsynapseParams.spikesTargetSampleRate=sampleRate;
164
% AN_IHCsynapseParams.ANspeedUpFactor=5; % longer epochs for computing spikes.
165
166
% c=kym/(y(l+r)+kl)	(spontaneous rate)
167
% c=(approx)  ym/l  (saturated rate)
168
AN_IHCsynapseParams.M=	12;         % maximum vesicles at synapse
169
AN_IHCsynapseParams.y=	4;          % depleted vesicle replacement rate
170
AN_IHCsynapseParams.y=	6;          % depleted vesicle replacement rate
171
172
AN_IHCsynapseParams.x=	30;         % replenishment from re-uptake store
173
AN_IHCsynapseParams.x=	60;         % replenishment from re-uptake store
174
175
% reduce l to increase saturated rate
176
AN_IHCsynapseParams.l=	100; % *loss rate of vesicles from the cleft
177
AN_IHCsynapseParams.l=	250; % *loss rate of vesicles from the cleft
178
179
AN_IHCsynapseParams.r=	500; % *reuptake rate from cleft into cell
180
% AN_IHCsynapseParams.r=	300; % *reuptake rate from cleft into cell
181
182
183
%%  #7 MacGregorMulti (first order brainstem neurons)
184
MacGregorMultiParams=[];
185
% MacGregorMultiType='chopper'; % MacGregorMultiType='primary-like'; %choose
186
MacGregorMultiType='primary-like'; % MacGregorMultiType='primary-like'; %choose
187
switch MacGregorMultiType
188
    case 'primary-like'
189
        MacGregorMultiParams.nNeuronsPerBF=	10;   % N neurons per BF
190
        MacGregorMultiParams.type = 'primary-like cell';
191
        MacGregorMultiParams.fibersPerNeuron=4;   % N input fibers
192
        MacGregorMultiParams.dendriteLPfreq=500;  % dendritic filter
193
        MacGregorMultiParams.currentPerSpike=0.11e-6; % (A) per spike
194
        MacGregorMultiParams.Cap=4.55e-9;   % cell capacitance (Siemens)
195
        MacGregorMultiParams.tauM=5e-4;     % membrane time constant (s)
196
        MacGregorMultiParams.Ek=-0.01;      % K+ eq. potential (V)
197
        MacGregorMultiParams.dGkSpike=3.64e-5; % K+ cond.shift on spike,S
198
        MacGregorMultiParams.tauGk=	0.0005; % K+ conductance tau (s)
199
        MacGregorMultiParams.Th0=	0.01;   % equilibrium threshold (V)
200
        MacGregorMultiParams.c=	0.01;       % threshold shift on spike, (V)
201
        MacGregorMultiParams.tauTh=	0.015;  % variable threshold tau
202
        MacGregorMultiParams.Er=-0.06;      % resting potential (V)
203
        MacGregorMultiParams.Eb=0.06;       % spike height (V)
204
205
    case 'chopper'
206
        MacGregorMultiParams.nNeuronsPerBF=	10;   % N neurons per BF
207
        MacGregorMultiParams.type = 'chopper cell';
208
        MacGregorMultiParams.fibersPerNeuron=10;  % N input fibers
209
210
        MacGregorMultiParams.dendriteLPfreq=50;   % dendritic filter
211
        MacGregorMultiParams.currentPerSpike=28e-9; % *per spike
212
%         MacGregorMultiParams.currentPerSpike=30e-9; % *per spike
213
214
        MacGregorMultiParams.Cap=1.67e-8; % ??cell capacitance (Siemens)
215
        MacGregorMultiParams.tauM=0.002;  % membrane time constant (s)
216
        MacGregorMultiParams.Ek=-0.01;    % K+ eq. potential (V)
217
        MacGregorMultiParams.dGkSpike=1.33e-4; % K+ cond.shift on spike,S
218
        MacGregorMultiParams.tauGk=	0.0005;% K+ conductance tau (s)
219
        MacGregorMultiParams.Th0=	0.01; % equilibrium threshold (V)
220
        MacGregorMultiParams.c=	0;        % threshold shift on spike, (V)
221
        MacGregorMultiParams.tauTh=	0.02; % variable threshold tau
222
        MacGregorMultiParams.Er=-0.06;    % resting potential (V)
223
        MacGregorMultiParams.Eb=0.06;     % spike height (V)
224
        MacGregorMultiParams.PSTHbinWidth=	1e-4;
225
end
226
227
%%  #8 MacGregor (second-order neuron). Only one per channel
228
MacGregorParams=[];                 % clear the structure first
229
MacGregorParams.type = 'chopper cell';
230
MacGregorParams.fibersPerNeuron=10; % N input fibers
231
MacGregorParams.dendriteLPfreq=100; % dendritic filter
232
MacGregorParams.currentPerSpike=40e-9;% *(A) per spike
233
234
MacGregorParams.Cap=16.7e-9;        % cell capacitance (Siemens)
235
MacGregorParams.tauM=0.002;         % membrane time constant (s)
236
MacGregorParams.Ek=-0.01;           % K+ eq. potential (V)
237
MacGregorParams.dGkSpike=1.33e-4;   % K+ cond.shift on spike,S
238
MacGregorParams.tauGk=	0.0012;     % K+ conductance tau (s)
239
MacGregorParams.Th0=	0.01;       % equilibrium threshold (V)
240
MacGregorParams.c=	0;              % threshold shift on spike, (V)
241
MacGregorParams.tauTh=	0.02;       % variable threshold tau
242
MacGregorParams.Er=-0.06;           % resting potential (V)
243
MacGregorParams.Eb=0.06;            % spike height (V)
244
MacGregorParams.debugging=0;        % (special)
245
% wideband accepts input from all channels (of same fiber type)
246
% use wideband to create inhibitory units
247
MacGregorParams.wideband=0;         % special for wideband units
248
% MacGregorParams.saveAllData=0;
249
250
%%  #9 filteredSACF
251
minPitch=	300; maxPitch=	3000; numPitches=60;    % specify lags
252
pitches=100*log10(logspace(minPitch/100, maxPitch/100, numPitches));
253
filteredSACFParams.lags=1./pitches;     % autocorrelation lags vector
254
filteredSACFParams.acfTau=	.003;       % time constant of running ACF
255
filteredSACFParams.lambda=	0.12;       % slower filter to smooth ACF
256
filteredSACFParams.plotFilteredSACF=1;  % 0 plots unfiltered ACFs
257
filteredSACFParams.plotACFs=0;          % special plot (see code)
258
%  filteredSACFParams.usePressnitzer=0; % attenuates ACF at  long lags
259
filteredSACFParams.lagsProcedure=  'useAllLags';
260
% filteredSACFParams.lagsProcedure=  'omitShortLags';
261
filteredSACFParams.criterionForOmittingLags=3;
262
263
% checks
264
if AN_IHCsynapseParams.numFibers<MacGregorMultiParams.fibersPerNeuron
265
    error('MacGregorMulti: too few input fibers for input to MacG unit')
266
end
267
268
269
%% now accept last minute parameter changes required by the calling program
270
% paramChanges
271
if nargin>3 && ~isempty(paramChanges)
272
    if ~iscellstr(paramChanges)
273
        error('paramChanges error: paramChanges not a cell array')
274
    end
275
276
    nChanges=length(paramChanges);
277
    for idx=1:nChanges
278
        x=paramChanges{idx};
279
        x=deblank(x);
280
        if ~isempty(x)
281
            if ~strcmp(x(end),';')
282
                error(['paramChanges error (terminate with semicolon) ' x])
283
            end
284
            st=strtrim(x(1:strfind(x,'.')-1));
285
            fld=strtrim(x(strfind(x,'.')+1:strfind(x,'=')-1));
286
            value=x(strfind(x,'=')+1:end);
287
            if isempty(st) || isempty(fld) || isempty(value)
288
                error(['paramChanges error:' x])
289
            end
290
291
            x1=eval(['isstruct(' st ')']);
292
            cmd=['isfield(' st ',''' fld ''')'];
293
            x2=eval(cmd);
294
            if ~(x1*x2)
295
                error(['paramChanges error:' x])
296
            end
297
        end
298
299
        % no problems so go ahead
300
        eval(paramChanges{idx})
301
    end
302
end
303
304
305
%% write all parameters to the command window
306
% showParams is currently set at the top of htis function
307
if showParams
308
    fprintf('\n %%%%%%%%\n')
309
    fprintf('\n%s\n', method.parameterSource)
310
    fprintf('\n')
311
    nm=UTIL_paramsList(whos);
312
    for i=1:length(nm)
313
        %         eval(['UTIL_showStruct(' nm{i} ', ''' nm{i} ''')'])
314
        if ~strcmp(nm(i), 'method')
315
            eval(['UTIL_showStructureSummary(' nm{i} ', ''' nm{i} ''', 10)'])
316
        end
317
    end
318
319
    % highlight parameter changes made locally
320
    if nargin>3 && ~isempty(paramChanges)
321
        fprintf('\n Local parameter changes:\n')
322
        for i=1:length(paramChanges)
323
            disp(paramChanges{i})
324
        end
325
    end
326
end
327
328
% for backward compatibility
329
experiment.comparisonData=[];