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.
root / parameterStore / MAPparamsNormalIC.m @ 31:c54a34161e4a
History | View | Annotate | Download (12.7 KB)
| 1 |
function method=MAPparamsNormalIC ... |
|---|---|
| 2 |
(BFlist, sampleRate, showParams, paramChanges) |
| 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 IHC_cilia_RPParams |
| 15 |
global IHC_VResp_VivoParams IHCpreSynapseParams AN_IHCsynapseParams |
| 16 |
global MacGregorParams MacGregorMultiParams filteredSACFParams |
| 17 |
global experiment % used by calls from multiThreshold only |
| 18 |
|
| 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=2e4; % 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 |
|
| 104 |
% 'spikes' model: MOC based on brainstem spiking activity (HSR) |
| 105 |
DRNLParams.rateToAttenuationFactor = .01; % strength of MOC |
| 106 |
% DRNLParams.rateToAttenuationFactor = 0; % strength of MOC |
| 107 |
% 'probability' model: MOC based on AN spiking activity (HSR) |
| 108 |
DRNLParams.rateToAttenuationFactorProb = .0055; % strength of MOC |
| 109 |
% DRNLParams.rateToAttenuationFactorProb = .0; % strength of MOC |
| 110 |
DRNLParams.MOCrateThresholdProb =70; % spikes/s probability only |
| 111 |
|
| 112 |
DRNLParams.MOCtau =.1; % smoothing for MOC |
| 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.03; % 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=35e-6; HSRtauCa=85e-6; % seconds |
| 152 |
% LSRtauCa=35e-6; HSRtauCa=70e-6; % seconds |
| 153 |
IHCpreSynapseParams.tauCa= [ 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= 30; % 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= 100; % *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.001 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=40e-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 |
%% now accept last minute parameter changes required by the calling program |
| 269 |
% paramChanges |
| 270 |
if nargin>3 && ~isempty(paramChanges) |
| 271 |
nChanges=length(paramChanges); |
| 272 |
for idx=1:nChanges |
| 273 |
eval(paramChanges{idx})
|
| 274 |
end |
| 275 |
end |
| 276 |
|
| 277 |
|
| 278 |
%% write all parameters to the command window |
| 279 |
% showParams is currently set at the top of htis function |
| 280 |
if showParams |
| 281 |
fprintf('\n %%%%%%%%\n')
|
| 282 |
fprintf('\n%s\n', method.parameterSource)
|
| 283 |
fprintf('\n')
|
| 284 |
nm=UTIL_paramsList(whos); |
| 285 |
for i=1:length(nm) |
| 286 |
% eval(['UTIL_showStruct(' nm{i} ', ''' nm{i} ''')'])
|
| 287 |
if ~strcmp(nm(i), 'method') |
| 288 |
eval(['UTIL_showStructureSummary(' nm{i} ', ''' nm{i} ''', 10)'])
|
| 289 |
end |
| 290 |
end |
| 291 |
|
| 292 |
% highlight parameter changes made locally |
| 293 |
if nargin>3 && ~isempty(paramChanges) |
| 294 |
fprintf('\n Local parameter changes:\n')
|
| 295 |
for i=1:length(paramChanges) |
| 296 |
disp(paramChanges{i})
|
| 297 |
end |
| 298 |
end |
| 299 |
end |
| 300 |
|
| 301 |
% for backward compatibility |
| 302 |
experiment.comparisonData=[]; |