Mercurial > hg > map
comparison parameterStore/MAPparamsPL.m @ 38:c2204b18f4a2 tip
End nov big change
author | Ray Meddis <rmeddis@essex.ac.uk> |
---|---|
date | Mon, 28 Nov 2011 13:34:28 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
37:771a643d5c29 | 38:c2204b18f4a2 |
---|---|
1 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=[]; |