annotate testPrograms/testRP.m @ 37:771a643d5c29

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