annotate parameterStore/MAPparamsNormalIC.m @ 30:1a502830d462

MT update
author Ray Meddis <rmeddis@essex.ac.uk>
date Mon, 11 Jul 2011 14:31:29 +0100
parents
children 82fb37eb430e
rev   line source
rmeddis@30 1 function method=MAPparamsNormalIC ...
rmeddis@30 2 (BFlist, sampleRate, showParams, paramChanges)
rmeddis@30 3 % MAPparams<> establishes a complete set of MAP parameters
rmeddis@30 4 % Parameter file names must be of the form <MAPparams> <name>
rmeddis@30 5 %
rmeddis@30 6 % input arguments
rmeddis@30 7 % BFlist (optional) specifies the desired list of channel BFs
rmeddis@30 8 % otherwise defaults set below
rmeddis@30 9 % sampleRate (optional), default is 50000.
rmeddis@30 10 % showParams (optional) =1 prints out the complete set of parameters
rmeddis@30 11 % output argument
rmeddis@30 12 % method passes a miscelleny of values
rmeddis@30 13
rmeddis@30 14 global inputStimulusParams OMEParams DRNLParams IHC_cilia_RPParams
rmeddis@30 15 global IHC_VResp_VivoParams IHCpreSynapseParams AN_IHCsynapseParams
rmeddis@30 16 global MacGregorParams MacGregorMultiParams filteredSACFParams
rmeddis@30 17 global experiment % used by calls from multiThreshold only
rmeddis@30 18
rmeddis@30 19
rmeddis@30 20 currentFile=mfilename; % i.e. the name of this mfile
rmeddis@30 21 method.parameterSource=currentFile(10:end); % for the record
rmeddis@30 22
rmeddis@30 23 efferentDelay=0.010;
rmeddis@30 24 method.segmentDuration=efferentDelay;
rmeddis@30 25
rmeddis@30 26 if nargin<3, showParams=0; end
rmeddis@30 27 if nargin<2, sampleRate=50000; end
rmeddis@30 28 if nargin<1 || BFlist(1)<0 % if BFlist= -1, set BFlist to default
rmeddis@30 29 lowestBF=250; highestBF= 8000; numChannels=21;
rmeddis@30 30 % 21 chs (250-8k)includes BFs at 250 500 1000 2000 4000 8000
rmeddis@30 31 BFlist=round(logspace(log10(lowestBF),log10(highestBF),numChannels));
rmeddis@30 32 end
rmeddis@30 33 % BFlist=1000;
rmeddis@30 34
rmeddis@30 35 % preserve for backward campatibility
rmeddis@30 36 method.nonlinCF=BFlist;
rmeddis@30 37 method.dt=1/sampleRate;
rmeddis@30 38
rmeddis@30 39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%
rmeddis@30 40 % set model parameters
rmeddis@30 41 %%%%%%%%%%%%%%%%%%%%%%%%%%%%
rmeddis@30 42
rmeddis@30 43 %% #1 inputStimulus
rmeddis@30 44 inputStimulusParams=[];
rmeddis@30 45 inputStimulusParams.sampleRate= sampleRate;
rmeddis@30 46
rmeddis@30 47 %% #2 outerMiddleEar
rmeddis@30 48 OMEParams=[]; % clear the structure first
rmeddis@30 49 % outer ear resonances band pass filter [gain lp order hp]
rmeddis@30 50 OMEParams.externalResonanceFilters= [ 10 1 1000 4000];
rmeddis@30 51
rmeddis@30 52 % highpass stapes filter
rmeddis@30 53 % Huber gives 2e-9 m at 80 dB and 1 kHz (2e-13 at 0 dB SPL)
rmeddis@30 54 OMEParams.OMEstapesLPcutoff= 1000;
rmeddis@30 55 OMEParams.stapesScalar= 45e-9;
rmeddis@30 56
rmeddis@30 57 % Acoustic reflex: maximum attenuation should be around 25 dB Price (1966)
rmeddis@30 58 % i.e. a minimum ratio of 0.056.
rmeddis@30 59 % 'spikes' model: AR based on brainstem spiking activity (LSR)
rmeddis@30 60 OMEParams.rateToAttenuationFactor=0.006; % * N(all ICspikes)
rmeddis@30 61 % OMEParams.rateToAttenuationFactor=0; % * N(all ICspikes)
rmeddis@30 62
rmeddis@30 63 % 'probability model': Ar based on AN firing probabilities (LSR)
rmeddis@30 64 OMEParams.rateToAttenuationFactorProb=0.01;% * N(all ANrates)
rmeddis@30 65 % OMEParams.rateToAttenuationFactorProb=0;% * N(all ANrates)
rmeddis@30 66
rmeddis@30 67 % asymptote should be around 100-200 ms
rmeddis@30 68 OMEParams.ARtau=.05; % AR smoothing function
rmeddis@30 69 % delay must be longer than the segment length
rmeddis@30 70 OMEParams.ARdelay=efferentDelay; %Moss gives 8.5 ms latency
rmeddis@30 71 OMEParams.ARrateThreshold=0;
rmeddis@30 72
rmeddis@30 73 %% #3 DRNL
rmeddis@30 74 DRNLParams=[]; % clear the structure first
rmeddis@30 75 DRNLParams.BFlist=BFlist;
rmeddis@30 76
rmeddis@30 77 % DRNL nonlinear path
rmeddis@30 78 DRNLParams.a=5e4; % DRNL.a=0 means no OHCs (no nonlinear path)
rmeddis@30 79 DRNLParams.a=2e4; % DRNL.a=0 means no OHCs (no nonlinear path)
rmeddis@30 80
rmeddis@30 81 DRNLParams.b=8e-6; % *compression threshold raised compression
rmeddis@30 82 % DRNLParams.b=1; % b=1 means no compression
rmeddis@30 83
rmeddis@30 84 DRNLParams.c=0.2; % compression exponent
rmeddis@30 85 % nonlinear filters
rmeddis@30 86 DRNLParams.nonlinCFs=BFlist;
rmeddis@30 87 DRNLParams.nonlinOrder= 3; % order of nonlinear gammatone filters
rmeddis@30 88 p=0.2895; q=170; % human (% p=0.14; q=366; % cat)
rmeddis@30 89 DRNLParams.nlBWs= p * BFlist + q;
rmeddis@30 90 DRNLParams.p=p; DRNLParams.q=q; % save p and q for printing only
rmeddis@30 91
rmeddis@30 92 % DRNL linear path:
rmeddis@30 93 DRNLParams.g=100; % linear path gain factor
rmeddis@30 94 % linCF is not necessarily the same as nonlinCF
rmeddis@30 95 minLinCF=153.13; coeffLinCF=0.7341; % linCF>nonlinBF for BF < 1 kHz
rmeddis@30 96 DRNLParams.linCFs=minLinCF+coeffLinCF*BFlist;
rmeddis@30 97 DRNLParams.linOrder= 3; % order of linear gammatone filters
rmeddis@30 98 minLinBW=100; coeffLinBW=0.6531;
rmeddis@30 99 DRNLParams.linBWs=minLinBW + coeffLinBW*BFlist; % bandwidths of linear filters
rmeddis@30 100
rmeddis@30 101 % DRNL MOC efferents
rmeddis@30 102 DRNLParams.MOCdelay = efferentDelay; % must be < segment length!
rmeddis@30 103
rmeddis@30 104 % 'spikes' model: MOC based on brainstem spiking activity (HSR)
rmeddis@30 105 DRNLParams.rateToAttenuationFactor = .01; % strength of MOC
rmeddis@30 106 % DRNLParams.rateToAttenuationFactor = 0; % strength of MOC
rmeddis@30 107 % 'probability' model: MOC based on AN spiking activity (HSR)
rmeddis@30 108 DRNLParams.rateToAttenuationFactorProb = .0055; % strength of MOC
rmeddis@30 109 % DRNLParams.rateToAttenuationFactorProb = .0; % strength of MOC
rmeddis@30 110 DRNLParams.MOCrateThresholdProb =70; % spikes/s probability only
rmeddis@30 111
rmeddis@30 112 DRNLParams.MOCtau =.1; % smoothing for MOC
rmeddis@30 113
rmeddis@30 114
rmeddis@30 115 %% #4 IHC_cilia_RPParams
rmeddis@30 116
rmeddis@30 117 IHC_cilia_RPParams.tc= 0.0003; % 0.0003 filter time simulates viscocity
rmeddis@30 118 % IHC_cilia_RPParams.tc= 0.0005; % 0.0003 filter time simulates viscocity
rmeddis@30 119 IHC_cilia_RPParams.C= 0.03; % 0.1 scalar (C_cilia )
rmeddis@30 120 IHC_cilia_RPParams.u0= 5e-9;
rmeddis@30 121 IHC_cilia_RPParams.s0= 30e-9;
rmeddis@30 122 IHC_cilia_RPParams.u1= 1e-9;
rmeddis@30 123 IHC_cilia_RPParams.s1= 1e-9;
rmeddis@30 124
rmeddis@30 125 IHC_cilia_RPParams.Gmax= 6e-9; % 2.5e-9 maximum conductance (Siemens)
rmeddis@30 126 IHC_cilia_RPParams.Ga= 1e-9; % 4.3e-9 fixed apical membrane conductance
rmeddis@30 127 IHC_cilia_RPParams.Ga= .8e-9; % 4.3e-9 fixed apical membrane conductance
rmeddis@30 128
rmeddis@30 129 % #5 IHC_RP
rmeddis@30 130 IHC_cilia_RPParams.Cab= 4e-012; % IHC capacitance (F)
rmeddis@30 131 % IHC_cilia_RPParams.Cab= 1e-012; % IHC capacitance (F)
rmeddis@30 132 IHC_cilia_RPParams.Et= 0.100; % endocochlear potential (V)
rmeddis@30 133
rmeddis@30 134 IHC_cilia_RPParams.Gk= 2e-008; % 1e-8 potassium conductance (S)
rmeddis@30 135 IHC_cilia_RPParams.Ek= -0.08; % -0.084 K equilibrium potential
rmeddis@30 136 IHC_cilia_RPParams.Rpc= 0.04; % combined resistances
rmeddis@30 137
rmeddis@30 138
rmeddis@30 139 %% #5 IHCpreSynapse
rmeddis@30 140 IHCpreSynapseParams=[];
rmeddis@30 141 IHCpreSynapseParams.GmaxCa= 14e-9;% maximum calcium conductance
rmeddis@30 142 IHCpreSynapseParams.GmaxCa= 12e-9;% maximum calcium conductance
rmeddis@30 143 IHCpreSynapseParams.ECa= 0.066; % calcium equilibrium potential
rmeddis@30 144 IHCpreSynapseParams.beta= 400; % determine Ca channel opening
rmeddis@30 145 IHCpreSynapseParams.gamma= 100; % determine Ca channel opening
rmeddis@30 146 IHCpreSynapseParams.tauM= 0.00005; % membrane time constant ?0.1ms
rmeddis@30 147 IHCpreSynapseParams.power= 3;
rmeddis@30 148 % reminder: changing z has a strong effect on HF thresholds (like Et)
rmeddis@30 149 IHCpreSynapseParams.z= 2e42; % scalar Ca -> vesicle release rate
rmeddis@30 150
rmeddis@30 151 LSRtauCa=35e-6; HSRtauCa=85e-6; % seconds
rmeddis@30 152 % LSRtauCa=35e-6; HSRtauCa=70e-6; % seconds
rmeddis@30 153 IHCpreSynapseParams.tauCa= [ HSRtauCa]; %LSR and HSR fiber
rmeddis@30 154
rmeddis@30 155 %% #6 AN_IHCsynapse
rmeddis@30 156 % c=kym/(y(l+r)+kl) (spontaneous rate)
rmeddis@30 157 % c=(approx) ym/l (saturated rate)
rmeddis@30 158 AN_IHCsynapseParams=[]; % clear the structure first
rmeddis@30 159 AN_IHCsynapseParams.M= 12; % maximum vesicles at synapse
rmeddis@30 160 AN_IHCsynapseParams.y= 4; % depleted vesicle replacement rate
rmeddis@30 161 AN_IHCsynapseParams.y= 6; % depleted vesicle replacement rate
rmeddis@30 162
rmeddis@30 163 AN_IHCsynapseParams.x= 30; % replenishment from re-uptake store
rmeddis@30 164 AN_IHCsynapseParams.x= 60; % replenishment from re-uptake store
rmeddis@30 165
rmeddis@30 166 % reduce l to increase saturated rate
rmeddis@30 167 AN_IHCsynapseParams.l= 100; % *loss rate of vesicles from the cleft
rmeddis@30 168 AN_IHCsynapseParams.l= 250; % *loss rate of vesicles from the cleft
rmeddis@30 169
rmeddis@30 170 AN_IHCsynapseParams.r= 500; % *reuptake rate from cleft into cell
rmeddis@30 171 % AN_IHCsynapseParams.r= 300; % *reuptake rate from cleft into cell
rmeddis@30 172
rmeddis@30 173 AN_IHCsynapseParams.refractory_period= 0.00075;
rmeddis@30 174 % number of AN fibers at each BF (used only for spike generation)
rmeddis@30 175 AN_IHCsynapseParams.numFibers= 100;
rmeddis@30 176 AN_IHCsynapseParams.TWdelay=0.004; % ?delay before stimulus first spike
rmeddis@30 177
rmeddis@30 178 AN_IHCsynapseParams.ANspeedUpFactor=5; % longer epochs for computing spikes.
rmeddis@30 179
rmeddis@30 180 %% #7 MacGregorMulti (first order brainstem neurons)
rmeddis@30 181 MacGregorMultiParams=[];
rmeddis@30 182 MacGregorMultiType='chopper'; % MacGregorMultiType='primary-like'; %choose
rmeddis@30 183 switch MacGregorMultiType
rmeddis@30 184 case 'primary-like'
rmeddis@30 185 MacGregorMultiParams.nNeuronsPerBF= 10; % N neurons per BF
rmeddis@30 186 MacGregorMultiParams.type = 'primary-like cell';
rmeddis@30 187 MacGregorMultiParams.fibersPerNeuron=4; % N input fibers
rmeddis@30 188 MacGregorMultiParams.dendriteLPfreq=200; % dendritic filter
rmeddis@30 189 MacGregorMultiParams.currentPerSpike=0.11e-6; % (A) per spike
rmeddis@30 190 MacGregorMultiParams.Cap=4.55e-9; % cell capacitance (Siemens)
rmeddis@30 191 MacGregorMultiParams.tauM=5e-4; % membrane time constant (s)
rmeddis@30 192 MacGregorMultiParams.Ek=-0.01; % K+ eq. potential (V)
rmeddis@30 193 MacGregorMultiParams.dGkSpike=3.64e-5; % K+ cond.shift on spike,S
rmeddis@30 194 MacGregorMultiParams.tauGk= 0.0012; % K+ conductance tau (s)
rmeddis@30 195 MacGregorMultiParams.Th0= 0.01; % equilibrium threshold (V)
rmeddis@30 196 MacGregorMultiParams.c= 0.01; % threshold shift on spike, (V)
rmeddis@30 197 MacGregorMultiParams.tauTh= 0.015; % variable threshold tau
rmeddis@30 198 MacGregorMultiParams.Er=-0.06; % resting potential (V)
rmeddis@30 199 MacGregorMultiParams.Eb=0.06; % spike height (V)
rmeddis@30 200
rmeddis@30 201 case 'chopper'
rmeddis@30 202 MacGregorMultiParams.nNeuronsPerBF= 10; % N neurons per BF
rmeddis@30 203 MacGregorMultiParams.type = 'chopper cell';
rmeddis@30 204 MacGregorMultiParams.fibersPerNeuron=10; % N input fibers
rmeddis@30 205 % MacGregorMultiParams.fibersPerNeuron=6; % N input fibers
rmeddis@30 206
rmeddis@30 207 MacGregorMultiParams.dendriteLPfreq=50; % dendritic filter
rmeddis@30 208 MacGregorMultiParams.currentPerSpike=35e-9; % *per spike
rmeddis@30 209 % MacGregorMultiParams.currentPerSpike=30e-9; % *per spike
rmeddis@30 210
rmeddis@30 211 MacGregorMultiParams.Cap=1.67e-8; % ??cell capacitance (Siemens)
rmeddis@30 212 MacGregorMultiParams.tauM=0.002; % membrane time constant (s)
rmeddis@30 213 MacGregorMultiParams.Ek=-0.01; % K+ eq. potential (V)
rmeddis@30 214 MacGregorMultiParams.dGkSpike=1.33e-4; % K+ cond.shift on spike,S
rmeddis@30 215 MacGregorMultiParams.tauGk= [0.001 0.0005];% K+ conductance tau (s)
rmeddis@30 216 MacGregorMultiParams.Th0= 0.01; % equilibrium threshold (V)
rmeddis@30 217 MacGregorMultiParams.c= 0; % threshold shift on spike, (V)
rmeddis@30 218 MacGregorMultiParams.tauTh= 0.02; % variable threshold tau
rmeddis@30 219 MacGregorMultiParams.Er=-0.06; % resting potential (V)
rmeddis@30 220 MacGregorMultiParams.Eb=0.06; % spike height (V)
rmeddis@30 221 MacGregorMultiParams.PSTHbinWidth= 1e-4;
rmeddis@30 222 end
rmeddis@30 223
rmeddis@30 224 %% #8 MacGregor (second-order neuron). Only one per channel
rmeddis@30 225 MacGregorParams=[]; % clear the structure first
rmeddis@30 226 MacGregorParams.type = 'chopper cell';
rmeddis@30 227 MacGregorParams.fibersPerNeuron=10; % N input fibers
rmeddis@30 228 MacGregorParams.dendriteLPfreq=100; % dendritic filter
rmeddis@30 229 MacGregorParams.currentPerSpike=120e-9;% *(A) per spike
rmeddis@30 230 MacGregorParams.currentPerSpike=40e-9;% *(A) per spike
rmeddis@30 231
rmeddis@30 232 MacGregorParams.Cap=16.7e-9; % cell capacitance (Siemens)
rmeddis@30 233 MacGregorParams.tauM=0.002; % membrane time constant (s)
rmeddis@30 234 MacGregorParams.Ek=-0.01; % K+ eq. potential (V)
rmeddis@30 235 MacGregorParams.dGkSpike=1.33e-4; % K+ cond.shift on spike,S
rmeddis@30 236 MacGregorParams.tauGk= 0.0005; % K+ conductance tau (s)
rmeddis@30 237 MacGregorParams.Th0= 0.01; % equilibrium threshold (V)
rmeddis@30 238 MacGregorParams.c= 0; % threshold shift on spike, (V)
rmeddis@30 239 MacGregorParams.tauTh= 0.02; % variable threshold tau
rmeddis@30 240 MacGregorParams.Er=-0.06; % resting potential (V)
rmeddis@30 241 MacGregorParams.Eb=0.06; % spike height (V)
rmeddis@30 242 MacGregorParams.debugging=0; % (special)
rmeddis@30 243 % wideband accepts input from all channels (of same fiber type)
rmeddis@30 244 % use wideband to create inhibitory units
rmeddis@30 245 MacGregorParams.wideband=0; % special for wideband units
rmeddis@30 246 % MacGregorParams.saveAllData=0;
rmeddis@30 247
rmeddis@30 248 %% #9 filteredSACF
rmeddis@30 249 minPitch= 300; maxPitch= 3000; numPitches=60; % specify lags
rmeddis@30 250 pitches=100*log10(logspace(minPitch/100, maxPitch/100, numPitches));
rmeddis@30 251 filteredSACFParams.lags=1./pitches; % autocorrelation lags vector
rmeddis@30 252 filteredSACFParams.acfTau= .003; % time constant of running ACF
rmeddis@30 253 filteredSACFParams.lambda= 0.12; % slower filter to smooth ACF
rmeddis@30 254 filteredSACFParams.plotFilteredSACF=1; % 0 plots unfiltered ACFs
rmeddis@30 255 filteredSACFParams.plotACFs=0; % special plot (see code)
rmeddis@30 256 % filteredSACFParams.usePressnitzer=0; % attenuates ACF at long lags
rmeddis@30 257 filteredSACFParams.lagsProcedure= 'useAllLags';
rmeddis@30 258 % filteredSACFParams.lagsProcedure= 'useBernsteinLagWeights';
rmeddis@30 259 % filteredSACFParams.lagsProcedure= 'omitShortLags';
rmeddis@30 260 filteredSACFParams.criterionForOmittingLags=3;
rmeddis@30 261
rmeddis@30 262 % checks
rmeddis@30 263 if AN_IHCsynapseParams.numFibers<MacGregorMultiParams.fibersPerNeuron
rmeddis@30 264 error('MacGregorMulti: too few input fibers for input to MacG unit')
rmeddis@30 265 end
rmeddis@30 266
rmeddis@30 267
rmeddis@30 268 %% now accept last minute parameter changes required by the calling program
rmeddis@30 269 % paramChanges
rmeddis@30 270 if nargin>3 && ~isempty(paramChanges)
rmeddis@30 271 nChanges=length(paramChanges);
rmeddis@30 272 for idx=1:nChanges
rmeddis@30 273 eval(paramChanges{idx})
rmeddis@30 274 end
rmeddis@30 275 end
rmeddis@30 276
rmeddis@30 277
rmeddis@30 278 %% write all parameters to the command window
rmeddis@30 279 % showParams is currently set at the top of htis function
rmeddis@30 280 if showParams
rmeddis@30 281 fprintf('\n %%%%%%%%\n')
rmeddis@30 282 fprintf('\n%s\n', method.parameterSource)
rmeddis@30 283 fprintf('\n')
rmeddis@30 284 nm=UTIL_paramsList(whos);
rmeddis@30 285 for i=1:length(nm)
rmeddis@30 286 % eval(['UTIL_showStruct(' nm{i} ', ''' nm{i} ''')'])
rmeddis@30 287 if ~strcmp(nm(i), 'method')
rmeddis@30 288 eval(['UTIL_showStructureSummary(' nm{i} ', ''' nm{i} ''', 10)'])
rmeddis@30 289 end
rmeddis@30 290 end
rmeddis@30 291
rmeddis@30 292 % highlight parameter changes made locally
rmeddis@30 293 if nargin>3 && ~isempty(paramChanges)
rmeddis@30 294 fprintf('\n Local parameter changes:\n')
rmeddis@30 295 for i=1:length(paramChanges)
rmeddis@30 296 disp(paramChanges{i})
rmeddis@30 297 end
rmeddis@30 298 end
rmeddis@30 299 end
rmeddis@30 300
rmeddis@30 301 % for backward compatibility
rmeddis@30 302 experiment.comparisonData=[];