rmeddis@0: function [modelResponse, MacGregorResponse]=MAPmodel( MAPplot, method) rmeddis@0: rmeddis@0: global experiment stimulusParameters audio withinRuns rmeddis@0: global outerMiddleEarParams DRNLParams AN_IHCsynapseParams rmeddis@0: rmeddis@0: savePath=path; rmeddis@0: addpath('..\MAP') rmeddis@0: modelResponse=[]; rmeddis@0: MacGregorResponse=[]; rmeddis@0: rmeddis@0: % mono only (column vector) rmeddis@0: audio=audio(:,1)'; rmeddis@0: rmeddis@0: % if stop button pressed earlier rmeddis@0: if experiment.stop, return, end rmeddis@0: rmeddis@0: % -------------------------------------------------------------- run Model rmeddis@0: MAPparamsName=experiment.name; rmeddis@0: showPlotsAndDetails=experiment.MAPplot; rmeddis@0: AN_spikesOrProbability='spikes'; rmeddis@0: rmeddis@0: % [response, method]=MAPsequenceSeg(audio, method, 1:8); rmeddis@0: global ICoutput ANdt rmeddis@0: MAP1_14(audio, 1/method.dt, method.nonlinCF,... rmeddis@0: MAPparamsName, AN_spikesOrProbability); rmeddis@0: rmeddis@0: if showPlotsAndDetails rmeddis@0: options.showModelParameters=0; rmeddis@0: options.showModelOutput=1; rmeddis@0: options.printFiringRates=1; rmeddis@0: options.showACF=0; rmeddis@0: options.showEfferent=1; rmeddis@0: showMAP(options) rmeddis@0: end rmeddis@0: rmeddis@0: % No response, probably caused by hitting 'stop' button rmeddis@0: if isempty(ICoutput), return, end rmeddis@0: rmeddis@0: % MacGregor response is the sum total of all final stage spiking rmeddis@0: MacGregorResponse= sum(ICoutput,1); % use IC rmeddis@0: rmeddis@0: % ---------------------------------------------------------- end model run rmeddis@0: rmeddis@0: dt=ANdt; rmeddis@0: time=dt:dt:dt*length(MacGregorResponse); rmeddis@0: rmeddis@0: % group delay on unit response rmeddis@0: MacGonsetDelay= 0.004; rmeddis@0: MacGoffsetDelay= 0.022; rmeddis@0: rmeddis@0: % now find the response of the MacGregor model during the target presentation + group delay rmeddis@0: switch experiment.threshEstMethod rmeddis@0: case {'2I2AFC++', '2I2AFC+++'} rmeddis@0: idx= time>stimulusParameters.testTargetBegins+MacGonsetDelay ... rmeddis@0: & timestimulusParameters.testNonTargetBegins+MacGonsetDelay ... rmeddis@0: & time0 rmeddis@0: % hit rmeddis@0: nSpikesDuringTarget=experiment.MacGThreshold+1; rmeddis@0: elseif difference<0 rmeddis@0: % miss (wrong choice) rmeddis@0: nSpikesDuringTarget=experiment.MacGThreshold-1; rmeddis@0: else rmeddis@0: if rand>0.5 rmeddis@0: % hit (random choice) rmeddis@0: nSpikesDuringTarget=experiment.MacGThreshold+1; rmeddis@0: else rmeddis@0: % miss (random choice) rmeddis@0: nSpikesDuringTarget=experiment.MacGThreshold-1; rmeddis@0: end rmeddis@0: end rmeddis@0: disp(['level target dummy decision: ' ... rmeddis@0: num2str([withinRuns.variableValue nSpikesTrueWindow ... rmeddis@0: nSpikesFalseWindow nSpikesDuringTarget], '%4.0f') ] ) rmeddis@0: rmeddis@0: otherwise rmeddis@0: % idx=find(time>stimulusParameters.testTargetBegins+MacGonsetDelay ... rmeddis@0: % & timestimulusParameters.testTargetBegins +MacGonsetDelay... rmeddis@0: & timestimulusParameters.testTargetBegins-0.02 ... rmeddis@0: & time0.2 rmeddis@0: modelResponse=2; % gap detected rmeddis@0: else rmeddis@0: modelResponse=1; % gap not detected rmeddis@0: end rmeddis@0: [nSpikesDuringTarget maskerRate gapResponse modelResponse] rmeddis@0: figure(22), plot(timeX,earObject(idx)) rmeddis@0: otherwise rmeddis@0: if nSpikesDuringTarget>experiment.MacGThreshold rmeddis@0: modelResponse=2; % stimulus detected rmeddis@0: else rmeddis@0: modelResponse=1; % nothing heard (default) rmeddis@0: end rmeddis@0: end rmeddis@0: rmeddis@0: rmeddis@0: path(savePath)