annotate multithreshold 1.46/testRP.m @ 0:f233164f4c86

first commit
author Ray Meddis <rmeddis@essex.ac.uk>
date Fri, 27 May 2011 13:19:21 +0100
parents
children eafe11c86f44
rev   line source
rmeddis@0 1 function testRP(BFs,MAPparamsName,paramChanges)
rmeddis@0 2 % testIHC used for IHC I/O function
rmeddis@0 3
rmeddis@0 4 global experiment method inputStimulusParams
rmeddis@0 5 global stimulusParameters IHC_VResp_VivoParams IHC_cilia_RPParams
rmeddis@0 6 savePath=path;
rmeddis@0 7 addpath (['..' filesep 'utilities'],['..' filesep 'MAP'])
rmeddis@0 8 dbstop if error
rmeddis@0 9
rmeddis@0 10 figure(4), clf,
rmeddis@0 11 set (gcf, 'name', ['IHC'])
rmeddis@0 12 % set(gcf,'position',[613 354 360 322])
rmeddis@0 13 drawColors='rgbkmcy';
rmeddis@0 14 drawnow
rmeddis@0 15
rmeddis@0 16 if nargin<3, paramChanges=[]; end
rmeddis@0 17
rmeddis@0 18 levels=-20:10:100;
rmeddis@0 19 nLevels=length(levels);
rmeddis@0 20 toneDuration=.05;
rmeddis@0 21 silenceDuration=.01;
rmeddis@0 22 sampleRate=50000;
rmeddis@0 23 dt=1/sampleRate;
rmeddis@0 24
rmeddis@0 25 allIHC_RP_peak=[];
rmeddis@0 26 allIHC_RP_dc=[];
rmeddis@0 27
rmeddis@0 28 changes{1}=[];
rmeddis@0 29 % changes{1}='IHC_cilia_RPParams.Et= 0.100;';
rmeddis@0 30 % changes{2}='IHC_cilia_RPParams.Et= 0.070;';
rmeddis@0 31
rmeddis@0 32 for changeNo=1:length(changes)
rmeddis@0 33 if isempty(changes{1})
rmeddis@0 34 paramChanges=[];
rmeddis@0 35 else
rmeddis@0 36 paramChanges{1}=changes{changeNo};
rmeddis@0 37 end
rmeddis@0 38 for BFno=1:length(BFs)
rmeddis@0 39 BF=BFs(BFno);
rmeddis@0 40 targetFrequency=BF;
rmeddis@0 41 % OR
rmeddis@0 42 %Patuzzi and Sellick test (see ELP & AEM, 2006)
rmeddis@0 43 % targetFrequency=100;
rmeddis@0 44
rmeddis@0 45 IHC_RP_peak=zeros(nLevels,1);
rmeddis@0 46 IHC_RP_min=zeros(nLevels,1);
rmeddis@0 47 IHC_RP_dc=zeros(nLevels,1);
rmeddis@0 48
rmeddis@0 49 time=dt:dt:toneDuration;
rmeddis@0 50
rmeddis@0 51 rampDuration=0.004;
rmeddis@0 52 rampTime=dt:dt:rampDuration;
rmeddis@0 53 ramp=[0.5*(1+cos(2*pi*rampTime/(2*rampDuration)+pi)) ...
rmeddis@0 54 ones(1,length(time)-length(rampTime))];
rmeddis@0 55 ramp=ramp.*fliplr(ramp);
rmeddis@0 56
rmeddis@0 57 silence=zeros(1,round(silenceDuration/dt));
rmeddis@0 58
rmeddis@0 59 toneStartptr=length(silence)+1;
rmeddis@0 60 toneMidptr=toneStartptr+round(toneDuration/(2*dt)) -1;
rmeddis@0 61 toneEndptr=toneStartptr+round(toneDuration/dt) -1;
rmeddis@0 62
rmeddis@0 63 levelNo=0;
rmeddis@0 64 for leveldB=levels
rmeddis@0 65 levelNo=levelNo+1;
rmeddis@0 66 % replicate at all levels
rmeddis@0 67 amp=28e-6*10^(leveldB/20);
rmeddis@0 68
rmeddis@0 69 %% create signal (leveldB/ frequency)
rmeddis@0 70 inputSignal=amp*sin(2*pi*targetFrequency'*time);
rmeddis@0 71 inputSignal= ramp.*inputSignal;
rmeddis@0 72 inputSignal=[silence inputSignal silence];
rmeddis@0 73 inputStimulusParams.sampleRate=1/dt;
rmeddis@0 74 % global IHC_ciliaParams
rmeddis@0 75
rmeddis@0 76 %% disable efferent for fast processing
rmeddis@0 77 method.DRNLSave=1;
rmeddis@0 78 method.IHC_cilia_RPSave=1;
rmeddis@0 79 method.IHCpreSynapseSave=1;
rmeddis@0 80 method.IHC_cilia_RPSave=1;
rmeddis@0 81 method.segmentDuration=-1;
rmeddis@0 82 moduleSequence=1:4;
rmeddis@0 83
rmeddis@0 84 %% run the model
rmeddis@0 85 global DRNLoutput IHC_cilia_output IHCrestingCiliaCond IHCrestingV...
rmeddis@0 86 IHCoutput
rmeddis@0 87 AN_spikesOrProbability='probability';
rmeddis@0 88
rmeddis@0 89 MAP1_14(inputSignal, sampleRate, BF, ...
rmeddis@0 90 MAPparamsName, AN_spikesOrProbability, paramChanges);
rmeddis@0 91
rmeddis@0 92 % DRNL
rmeddis@0 93 DRNLoutput=DRNLoutput;
rmeddis@0 94 DRNL_peak(levelNo,1)=max(DRNLoutput(toneMidptr:toneEndptr));
rmeddis@0 95 DRNL_min(levelNo,1)=min(DRNLoutput(toneMidptr:toneEndptr));
rmeddis@0 96 DRNL_dc(levelNo,1)=mean(DRNLoutput(toneMidptr:toneEndptr));
rmeddis@0 97
rmeddis@0 98 % cilia
rmeddis@0 99 IHC_ciliaData=IHC_cilia_output;
rmeddis@0 100 IHC_ciliaData=IHC_ciliaData;
rmeddis@0 101 IHC_cilia_peak(levelNo,1)=...
rmeddis@0 102 max(IHC_ciliaData(toneMidptr:toneEndptr));
rmeddis@0 103 IHC_cilia_min(levelNo,1)=...
rmeddis@0 104 min(IHC_ciliaData(toneMidptr:toneEndptr));
rmeddis@0 105 IHC_cilia_dc(levelNo,1)=...
rmeddis@0 106 mean(IHC_ciliaData(toneMidptr:toneEndptr));
rmeddis@0 107
rmeddis@0 108 % RP
rmeddis@0 109 IHC_RPData=IHCoutput;
rmeddis@0 110 IHC_RPData=IHC_RPData;
rmeddis@0 111 IHC_RP_peak(levelNo,1)=...
rmeddis@0 112 max(IHC_RPData(toneMidptr:toneEndptr));
rmeddis@0 113 IHC_RP_min(levelNo,1)=...
rmeddis@0 114 min(IHC_RPData(toneMidptr:toneEndptr));
rmeddis@0 115 IHC_RP_dc(levelNo,1)=...
rmeddis@0 116 mean(IHC_RPData(toneMidptr:toneEndptr));
rmeddis@0 117
rmeddis@0 118 end % level
rmeddis@0 119
rmeddis@0 120
rmeddis@0 121 disp(['parameter file was: ' MAPparamsName])
rmeddis@0 122 fprintf('\n')
rmeddis@0 123
rmeddis@0 124 %% plot DRNL
rmeddis@0 125 subplot(2,2,1)
rmeddis@0 126 % referenceDisp= 9e-9*1000/targetFrequency;
rmeddis@0 127 % plot(levels,20*log10(DRNL_peak/referenceDisp), drawColors(BFno), ...
rmeddis@0 128 % 'linewidth',2), hold on
rmeddis@0 129 referenceDisp=10e-9;
rmeddis@0 130 plot(levels,20*log10(DRNL_peak/referenceDisp), drawColors(BFno), ...
rmeddis@0 131 'linewidth',2), hold on
rmeddis@0 132 title([' DRNL peak: ' num2str(BFs) ' Hz'])
rmeddis@0 133 ylabel ('log10DRNL(m)'), xlabel('dB SPL')
rmeddis@0 134 xlim([min(levels) max(levels)]), ylim([-10 50])
rmeddis@0 135 grid on
rmeddis@0 136
rmeddis@0 137 %% plot cilia displacement
rmeddis@0 138 figure(4)
rmeddis@0 139 subplot(2,2,2)
rmeddis@0 140 restingIHC_cilia=IHCrestingCiliaCond;
rmeddis@0 141 plot(levels, IHC_cilia_peak,'k', 'linewidth',2), hold on
rmeddis@0 142 plot(levels, IHC_cilia_min,'r', 'linewidth',2)
rmeddis@0 143 hold on,
rmeddis@0 144 plot([min(levels) max(levels)], ...
rmeddis@0 145 [restingIHC_cilia restingIHC_cilia], 'g')
rmeddis@0 146 title(' IHC apical cond.')
rmeddis@0 147 ylabel ('IHCcilia(conductance)'), xlabel('dB SPL')
rmeddis@0 148 xlim([min(levels) max(levels)])
rmeddis@0 149 grid on
rmeddis@0 150
rmeddis@0 151 %% plot receptor potentials
rmeddis@0 152 figure(4)
rmeddis@0 153 subplot(2,2,3)
rmeddis@0 154 % RP I/O function min and max
rmeddis@0 155 restingRP=IHC_RP_peak(1);
rmeddis@0 156 restingRP=IHCrestingV;
rmeddis@0 157 toPlot= [fliplr(IHC_RP_min(:,1)') IHC_RP_peak(:,1)'];
rmeddis@0 158 microPa= 28e-6*10.^(levels/20);
rmeddis@0 159 microPa=[-fliplr(microPa) microPa];
rmeddis@0 160 plot(microPa,toPlot, drawColors(BFno), 'linewidth',2)
rmeddis@0 161 % ylim([0 300])
rmeddis@0 162
rmeddis@0 163 %% Dallos and Harris data
rmeddis@0 164 dallosx=[-0.9 -0.1 -0.001 0.001 0.01 0.9];
rmeddis@0 165 dallosy=[-8 -7.8 -6.5 11 16.5 22]/1000 + restingRP;
rmeddis@0 166 hold on, plot(dallosx,dallosy, 'o')
rmeddis@0 167 plot([-1 1], [restingRP restingRP], 'r')
rmeddis@0 168 title(' Dallos(86) data at 800 Hz')
rmeddis@0 169 ylabel ('receptor potential(V)'), xlabel('Pa')
rmeddis@0 170 ylim([-0.08 -0.02]), xlim([-1 1])
rmeddis@0 171 grid on
rmeddis@0 172
rmeddis@0 173 %% RP I/O function min and max
rmeddis@0 174 figure(4)
rmeddis@0 175 subplot(2,2,4)
rmeddis@0 176 restingRP=IHC_RP_peak(1);
rmeddis@0 177 peakRP=max(IHC_RP_peak);
rmeddis@0 178 plot(levels, IHC_RP_peak,drawColors(BFno), 'linewidth',2)
rmeddis@0 179 hold on
rmeddis@0 180 plot(levels, IHC_RP_dc, [drawColors(BFno) ':'], 'linewidth',2)
rmeddis@0 181 hold on,
rmeddis@0 182 plot([min(levels) max(levels)], [restingRP restingRP], 'r')
rmeddis@0 183 xlim([min(levels) max(levels)])
rmeddis@0 184 grid on
rmeddis@0 185 title(['Et= ' num2str(IHC_cilia_RPParams.Et) ': RP (AC- / DC:'])
rmeddis@0 186 ylabel ('RP(V)'), xlabel('dB SPL')
rmeddis@0 187 ylim([-0.08 -0.02])
rmeddis@0 188 allIHC_RP_peak=[allIHC_RP_peak IHC_RP_peak];
rmeddis@0 189 allIHC_RP_dc=[allIHC_RP_dc IHC_RP_dc];
rmeddis@0 190
rmeddis@0 191 fprintf('level\t peak\t DC\n')
rmeddis@0 192 UTIL_printTabTable([levels' IHC_RP_peak IHC_RP_dc])
rmeddis@0 193 % disp(['restingIHC_cilia= ' num2str(restingIHC_cilia)])
rmeddis@0 194 fprintf('peakRP= \t%6.3f', peakRP)
rmeddis@0 195 fprintf('\nrestingRP= \t%6.3f', restingRP)
rmeddis@0 196 fprintf('\ndifference= \t%6.3f\n', (peakRP-restingRP))
rmeddis@0 197 drawnow
rmeddis@0 198 end
rmeddis@0 199 end
rmeddis@0 200 % UTIL_showStruct(IHC_VResp_VivoParams, 'IHC_VResp_VivoParams')
rmeddis@0 201 UTIL_showStruct(IHC_cilia_RPParams, 'IHC_cilia_RPParams')
rmeddis@0 202 fprintf('level\t peak\n')
rmeddis@0 203 UTIL_printTabTable([levels' allIHC_RP_peak])
rmeddis@0 204 fprintf('level\t DC\n')
rmeddis@0 205 UTIL_printTabTable([levels' allIHC_RP_dc])
rmeddis@0 206
rmeddis@0 207 path(savePath);
rmeddis@0 208 disp(paramChanges)