rmeddis@22: function method=MAPparamsNormal ... rmeddis@22: (BFlist, sampleRate, showParams) rmeddis@22: % MAPparams<> establishes a complete set of MAP parameters rmeddis@22: % Parameter file names must be of the form rmeddis@22: % rmeddis@22: % input arguments rmeddis@22: % BFlist (optional) specifies the desired list of channel BFs rmeddis@22: % otherwise defaults set below rmeddis@22: % sampleRate (optional), default is 50000. rmeddis@22: % showParams (optional) =1 prints out the complete set of parameters rmeddis@22: % output argument rmeddis@22: % method passes a miscelleny of values rmeddis@22: rmeddis@22: global inputStimulusParams OMEParams DRNLParams rmeddis@22: global IHC_VResp_VivoParams IHCpreSynapseParams AN_IHCsynapseParams rmeddis@22: global MacGregorParams MacGregorMultiParams filteredSACFParams rmeddis@22: global experiment % used by calls from multiThreshold only rmeddis@22: global IHC_cilia_RPParams rmeddis@22: rmeddis@22: currentFile=mfilename; % i.e. the name of this mfile rmeddis@22: method.parameterSource=currentFile(10:end); % for the record rmeddis@22: rmeddis@22: efferentDelay=0.010; rmeddis@22: method.segmentDuration=efferentDelay; rmeddis@22: rmeddis@22: if nargin<3, showParams=0; end rmeddis@22: if nargin<2, sampleRate=50000; end rmeddis@22: if nargin<1 || BFlist(1)<0 % if BFlist= -1, set BFlist to default rmeddis@22: lowestBF=250; highestBF= 8000; numChannels=21; rmeddis@22: % 21 chs (250-8k)includes BFs at 250 500 1000 2000 4000 8000 rmeddis@22: BFlist=round(logspace(log10(lowestBF),log10(highestBF),numChannels)); rmeddis@22: end rmeddis@22: % BFlist=1000; rmeddis@22: rmeddis@22: % preserve for backward campatibility rmeddis@22: method.nonlinCF=BFlist; rmeddis@22: method.dt=1/sampleRate; rmeddis@22: rmeddis@22: %%%%%%%%%%%%%%%%%%%%%%%%%%%% rmeddis@22: % set model parameters rmeddis@22: %%%%%%%%%%%%%%%%%%%%%%%%%%%% rmeddis@22: rmeddis@22: %% #1 inputStimulus rmeddis@22: inputStimulusParams=[]; rmeddis@22: inputStimulusParams.sampleRate= sampleRate; rmeddis@22: rmeddis@22: %% #2 outerMiddleEar rmeddis@22: OMEParams=[]; % clear the structure first rmeddis@22: % outer ear resonances band pass filter [gain lp order hp] rmeddis@22: OMEParams.externalResonanceFilters= [ 10 1 1000 4000]; rmeddis@22: rmeddis@22: % highpass stapes filter rmeddis@22: % Huber gives 2e-9 m at 80 dB and 1 kHz (2e-13 at 0 dB SPL) rmeddis@22: OMEParams.OMEstapesLPcutoff= 1000; rmeddis@22: OMEParams.stapesScalar= 45e-9; rmeddis@22: rmeddis@22: % Acoustic reflex: maximum attenuation should be around 25 dB Price (1966) rmeddis@22: % i.e. a minimum ratio of 0.056. rmeddis@22: % 'spikes' model: AR based on brainstem spiking activity (LSR) rmeddis@22: OMEParams.rateToAttenuationFactor=0.004; % * N(all ICspikes) rmeddis@22: % OMEParams.rateToAttenuationFactor=0; % * N(all ICspikes) rmeddis@22: rmeddis@22: % 'probability model': Ar based on AN firing probabilities (LSR) rmeddis@22: OMEParams.rateToAttenuationFactorProb=0.003;% * N(all ANrates) rmeddis@22: % OMEParams.rateToAttenuationFactorProb=0;% * N(all ANrates) rmeddis@22: rmeddis@22: % asymptote should be around 100-200 ms rmeddis@22: OMEParams.ARtau=.05; % AR smoothing function rmeddis@22: % delay must be longer than the segment length rmeddis@22: OMEParams.ARdelay=efferentDelay; %Moss gives 8.5 ms latency rmeddis@22: OMEParams.ARrateThreshold=0; rmeddis@22: rmeddis@22: %% #3 DRNL rmeddis@22: DRNLParams=[]; % clear the structure first rmeddis@22: DRNLParams.BFlist=BFlist; rmeddis@22: rmeddis@22: % DRNL nonlinear path rmeddis@22: DRNLParams.a=3e4; % nonlinear path gain (below compression threshold) rmeddis@22: <<<<<<< HEAD rmeddis@22: DRNLParams.a=3e2; % DRNL.a=0 means no OHCs (no nonlinear path) rmeddis@22: ======= rmeddis@22: DRNLParams.a=5e2; % DRNL.a=0 means no OHCs (no nonlinear path) rmeddis@22: >>>>>>> 77bdf847c4be95767d3ea519d77878f9414a2686 rmeddis@22: rmeddis@22: DRNLParams.b=8e-6; % *compression threshold raised compression rmeddis@22: % DRNLParams.b=1; % b=1 means no compression rmeddis@22: rmeddis@22: DRNLParams.c=0.2; % compression exponent rmeddis@22: % nonlinear filters rmeddis@22: DRNLParams.nonlinCFs=BFlist; rmeddis@22: DRNLParams.nonlinOrder= 3; % order of nonlinear gammatone filters rmeddis@22: p=0.2895; q=170; % human (% p=0.14; q=366; % cat) rmeddis@22: DRNLParams.nlBWs= p * BFlist + q; rmeddis@22: DRNLParams.p=p; DRNLParams.q=q; % save p and q for printing only rmeddis@22: rmeddis@22: % DRNL linear path: rmeddis@22: DRNLParams.g=100; % linear path gain factor rmeddis@22: % linCF is not necessarily the same as nonlinCF rmeddis@22: minLinCF=153.13; coeffLinCF=0.7341; % linCF>nonlinBF for BF < 1 kHz rmeddis@22: DRNLParams.linCFs=minLinCF+coeffLinCF*BFlist; rmeddis@22: DRNLParams.linOrder= 3; % order of linear gammatone filters rmeddis@22: minLinBW=100; coeffLinBW=0.6531; rmeddis@22: DRNLParams.linBWs=minLinBW + coeffLinBW*BFlist; % bandwidths of linear filters rmeddis@22: rmeddis@22: % DRNL MOC efferents rmeddis@22: DRNLParams.MOCdelay = efferentDelay; % must be < segment length! rmeddis@22: % 'spikes' model: MOC based on brainstem spiking activity (HSR) rmeddis@22: DRNLParams.rateToAttenuationFactor = .009; % strength of MOC rmeddis@22: DRNLParams.rateToAttenuationFactor = .004; % strength of MOC rmeddis@22: % DRNLParams.rateToAttenuationFactor = 0; % strength of MOC rmeddis@22: rmeddis@22: % 'probability' model: MOC based on AN spiking activity (HSR) rmeddis@22: <<<<<<< HEAD rmeddis@22: DRNLParams.rateToAttenuationFactorProb = .007; % strength of MOC rmeddis@22: DRNLParams.rateToAttenuationFactorProb = .002; % strength of MOC rmeddis@22: % DRNLParams.rateToAttenuationFactorProb = .0; % strength of MOC rmeddis@22: DRNLParams.MOCtau =.03; % smoothing for MOC rmeddis@22: ======= rmeddis@22: DRNLParams.rateToAttenuationFactorProb = .004; % strength of MOC rmeddis@22: % DRNLParams.rateToAttenuationFactorProb = .0; % strength of MOC rmeddis@22: DRNLParams.MOCtau =.1; % smoothing for MOC rmeddis@22: >>>>>>> 77bdf847c4be95767d3ea519d77878f9414a2686 rmeddis@22: DRNLParams.MOCrateThreshold =50; % set to AN rate threshold rmeddis@22: rmeddis@22: rmeddis@22: %% #4 IHC_cilia_RPParams rmeddis@22: rmeddis@22: IHC_cilia_RPParams.tc= 0.0003; % 0.0003 filter time simulates viscocity rmeddis@22: % IHC_cilia_RPParams.tc= 0.0005; % 0.0003 filter time simulates viscocity rmeddis@22: IHC_cilia_RPParams.C= 0.05; % 0.1 scalar (C_cilia ) rmeddis@22: IHC_cilia_RPParams.u0= 5e-9; rmeddis@22: IHC_cilia_RPParams.s0= 30e-9; rmeddis@22: IHC_cilia_RPParams.u1= 1e-9; rmeddis@22: IHC_cilia_RPParams.s1= 1e-9; rmeddis@22: rmeddis@22: IHC_cilia_RPParams.Gmax= 5e-9; % 2.5e-9 maximum conductance (Siemens) rmeddis@22: IHC_cilia_RPParams.Ga= 1e-9; % 4.3e-9 fixed apical membrane conductance rmeddis@22: rmeddis@22: % #5 IHC_RP rmeddis@22: IHC_cilia_RPParams.Cab= 4e-012; % IHC capacitance (F) rmeddis@22: IHC_cilia_RPParams.Cab= 1e-012; % IHC capacitance (F) rmeddis@22: IHC_cilia_RPParams.Et= 0.100; % endocochlear potential (V) rmeddis@22: rmeddis@22: IHC_cilia_RPParams.Gk= 2e-008; % 1e-8 potassium conductance (S) rmeddis@22: IHC_cilia_RPParams.Ek= -0.08; % -0.084 K equilibrium potential rmeddis@22: IHC_cilia_RPParams.Rpc= 0.04; % combined resistances rmeddis@22: rmeddis@22: rmeddis@22: %% #5 IHCpreSynapse rmeddis@22: IHCpreSynapseParams=[]; rmeddis@22: IHCpreSynapseParams.GmaxCa= 14e-9;% maximum calcium conductance rmeddis@22: IHCpreSynapseParams.GmaxCa= 12e-9;% maximum calcium conductance rmeddis@22: IHCpreSynapseParams.ECa= 0.066; % calcium equilibrium potential rmeddis@22: IHCpreSynapseParams.beta= 400; % determine Ca channel opening rmeddis@22: IHCpreSynapseParams.gamma= 100; % determine Ca channel opening rmeddis@22: IHCpreSynapseParams.tauM= 0.00005; % membrane time constant ?0.1ms rmeddis@22: IHCpreSynapseParams.power= 3; rmeddis@22: % reminder: changing z has a strong effect on HF thresholds (like Et) rmeddis@22: IHCpreSynapseParams.z= 2e42; % scalar Ca -> vesicle release rate rmeddis@22: rmeddis@22: LSRtauCa=35e-6; HSRtauCa=85e-6; % seconds rmeddis@22: % LSRtauCa=35e-6; HSRtauCa=70e-6; % seconds rmeddis@22: IHCpreSynapseParams.tauCa= [LSRtauCa HSRtauCa]; %LSR and HSR fiber rmeddis@22: rmeddis@22: %% #6 AN_IHCsynapse rmeddis@22: % c=kym/(y(l+r)+kl) (spontaneous rate) rmeddis@22: % c=(approx) ym/l (saturated rate) rmeddis@22: AN_IHCsynapseParams=[]; % clear the structure first rmeddis@22: AN_IHCsynapseParams.M= 12; % maximum vesicles at synapse rmeddis@22: AN_IHCsynapseParams.y= 4; % depleted vesicle replacement rate rmeddis@22: AN_IHCsynapseParams.y= 6; % depleted vesicle replacement rate rmeddis@22: rmeddis@22: AN_IHCsynapseParams.x= 30; % replenishment from re-uptake store rmeddis@22: AN_IHCsynapseParams.x= 60; % replenishment from re-uptake store rmeddis@22: rmeddis@22: % reduce l to increase saturated rate rmeddis@22: AN_IHCsynapseParams.l= 100; % *loss rate of vesicles from the cleft rmeddis@22: AN_IHCsynapseParams.l= 250; % *loss rate of vesicles from the cleft rmeddis@22: rmeddis@22: AN_IHCsynapseParams.r= 500; % *reuptake rate from cleft into cell rmeddis@22: % AN_IHCsynapseParams.r= 300; % *reuptake rate from cleft into cell rmeddis@22: rmeddis@22: AN_IHCsynapseParams.refractory_period= 0.00075; rmeddis@22: % number of AN fibers at each BF (used only for spike generation) rmeddis@22: AN_IHCsynapseParams.numFibers= 100; rmeddis@22: AN_IHCsynapseParams.TWdelay=0.004; % ?delay before stimulus first spike rmeddis@22: rmeddis@22: AN_IHCsynapseParams.ANspeedUpFactor=5; % longer epochs for computing spikes. rmeddis@22: rmeddis@22: %% #7 MacGregorMulti (first order brainstem neurons) rmeddis@22: MacGregorMultiParams=[]; rmeddis@22: MacGregorMultiType='chopper'; % MacGregorMultiType='primary-like'; %choose rmeddis@22: switch MacGregorMultiType rmeddis@22: case 'primary-like' rmeddis@22: MacGregorMultiParams.nNeuronsPerBF= 10; % N neurons per BF rmeddis@22: MacGregorMultiParams.type = 'primary-like cell'; rmeddis@22: MacGregorMultiParams.fibersPerNeuron=4; % N input fibers rmeddis@22: MacGregorMultiParams.dendriteLPfreq=200; % dendritic filter rmeddis@22: MacGregorMultiParams.currentPerSpike=0.11e-6; % (A) per spike rmeddis@22: MacGregorMultiParams.Cap=4.55e-9; % cell capacitance (Siemens) rmeddis@22: MacGregorMultiParams.tauM=5e-4; % membrane time constant (s) rmeddis@22: MacGregorMultiParams.Ek=-0.01; % K+ eq. potential (V) rmeddis@22: MacGregorMultiParams.dGkSpike=3.64e-5; % K+ cond.shift on spike,S rmeddis@22: MacGregorMultiParams.tauGk= 0.0012; % K+ conductance tau (s) rmeddis@22: MacGregorMultiParams.Th0= 0.01; % equilibrium threshold (V) rmeddis@22: MacGregorMultiParams.c= 0.01; % threshold shift on spike, (V) rmeddis@22: MacGregorMultiParams.tauTh= 0.015; % variable threshold tau rmeddis@22: MacGregorMultiParams.Er=-0.06; % resting potential (V) rmeddis@22: MacGregorMultiParams.Eb=0.06; % spike height (V) rmeddis@22: rmeddis@22: case 'chopper' rmeddis@22: MacGregorMultiParams.nNeuronsPerBF= 10; % N neurons per BF rmeddis@22: MacGregorMultiParams.type = 'chopper cell'; rmeddis@22: MacGregorMultiParams.fibersPerNeuron=10; % N input fibers rmeddis@22: % MacGregorMultiParams.fibersPerNeuron=6; % N input fibers rmeddis@22: rmeddis@22: MacGregorMultiParams.dendriteLPfreq=50; % dendritic filter rmeddis@22: MacGregorMultiParams.currentPerSpike=35e-9; % *per spike rmeddis@22: MacGregorMultiParams.currentPerSpike=30e-9; % *per spike rmeddis@22: rmeddis@22: MacGregorMultiParams.Cap=1.67e-8; % ??cell capacitance (Siemens) rmeddis@22: MacGregorMultiParams.tauM=0.002; % membrane time constant (s) rmeddis@22: MacGregorMultiParams.Ek=-0.01; % K+ eq. potential (V) rmeddis@22: MacGregorMultiParams.dGkSpike=1.33e-4; % K+ cond.shift on spike,S rmeddis@22: MacGregorMultiParams.tauGk= 0.0005;% K+ conductance tau (s) rmeddis@22: MacGregorMultiParams.Th0= 0.01; % equilibrium threshold (V) rmeddis@22: MacGregorMultiParams.c= 0; % threshold shift on spike, (V) rmeddis@22: MacGregorMultiParams.tauTh= 0.02; % variable threshold tau rmeddis@22: MacGregorMultiParams.Er=-0.06; % resting potential (V) rmeddis@22: MacGregorMultiParams.Eb=0.06; % spike height (V) rmeddis@22: MacGregorMultiParams.PSTHbinWidth= 1e-4; rmeddis@22: end rmeddis@22: rmeddis@22: %% #8 MacGregor (second-order neuron). Only one per channel rmeddis@22: MacGregorParams=[]; % clear the structure first rmeddis@22: MacGregorParams.type = 'chopper cell'; rmeddis@22: MacGregorParams.fibersPerNeuron=10; % N input fibers rmeddis@22: MacGregorParams.dendriteLPfreq=100; % dendritic filter rmeddis@22: MacGregorParams.currentPerSpike=120e-9;% *(A) per spike rmeddis@22: MacGregorParams.currentPerSpike=30e-9;% *(A) per spike rmeddis@22: rmeddis@22: MacGregorParams.Cap=16.7e-9; % cell capacitance (Siemens) rmeddis@22: MacGregorParams.tauM=0.002; % membrane time constant (s) rmeddis@22: MacGregorParams.Ek=-0.01; % K+ eq. potential (V) rmeddis@22: MacGregorParams.dGkSpike=1.33e-4; % K+ cond.shift on spike,S rmeddis@22: MacGregorParams.tauGk= 0.0005; % K+ conductance tau (s) rmeddis@22: MacGregorParams.Th0= 0.01; % equilibrium threshold (V) rmeddis@22: MacGregorParams.c= 0; % threshold shift on spike, (V) rmeddis@22: MacGregorParams.tauTh= 0.02; % variable threshold tau rmeddis@22: MacGregorParams.Er=-0.06; % resting potential (V) rmeddis@22: MacGregorParams.Eb=0.06; % spike height (V) rmeddis@22: MacGregorParams.debugging=0; % (special) rmeddis@22: % wideband accepts input from all channels (of same fiber type) rmeddis@22: % use wideband to create inhibitory units rmeddis@22: MacGregorParams.wideband=0; % special for wideband units rmeddis@22: % MacGregorParams.saveAllData=0; rmeddis@22: rmeddis@22: %% #9 filteredSACF rmeddis@22: minPitch= 300; maxPitch= 3000; numPitches=60; % specify lags rmeddis@22: pitches=100*log10(logspace(minPitch/100, maxPitch/100, numPitches)); rmeddis@22: filteredSACFParams.lags=1./pitches; % autocorrelation lags vector rmeddis@22: filteredSACFParams.acfTau= .003; % time constant of running ACF rmeddis@22: filteredSACFParams.lambda= 0.12; % slower filter to smooth ACF rmeddis@22: filteredSACFParams.plotFilteredSACF=1; % 0 plots unfiltered ACFs rmeddis@22: filteredSACFParams.plotACFs=0; % special plot (see code) rmeddis@22: % filteredSACFParams.usePressnitzer=0; % attenuates ACF at long lags rmeddis@22: filteredSACFParams.lagsProcedure= 'useAllLags'; rmeddis@22: % filteredSACFParams.lagsProcedure= 'useBernsteinLagWeights'; rmeddis@22: % filteredSACFParams.lagsProcedure= 'omitShortLags'; rmeddis@22: filteredSACFParams.criterionForOmittingLags=3; rmeddis@22: rmeddis@22: % checks rmeddis@22: if AN_IHCsynapseParams.numFibers