Files
hartman-server/workflow/apps/matlab/ezview/EZusrSelRefx.m

224 lines
9.3 KiB
Matlab
Executable File

%EZusrSelRef
%User Select Reference Diaglog Box
try
if n==1 && ~exist('RF1scanN','var') && ~exist('RF2scanN','var') %change || &&
%{
prompt={'Enter Masterplate Number(s) of Your Reference GeneName spots:',...
'Enter GeneName of Your Reference:'};
rfMPstr= cell2mat(answer(1));
rfMPcomas=strfind((cell2mat(answer(1))),',');
n=0;
if isempty(rfMPcomas)|| max(rfMPcomas)== length(rfMPstr)
usrMPs= rfMPstr
else
for i= rfMPcomas,
n=n+1
usrMPs(n)= str2double(rfMPstr(i-1:i))
if i== max(rfMPcomas)
usrMPs(n+1)= str2double(rfMPstr(i:end))
end
end
end
usrMPs= answer(1);
refGene= answer(2);
%}
prompt={'Enter GeneName to use as Reference:',...
'Enter Specifics Term if used to futher specify Reference '}
dlg_title='User Reference Input';
num_lines=1;
def={'None','Specifics Term'};
answer=inputdlg(prompt,dlg_title,num_lines,def);
rfGenestr= cell2mat(answer(1));
rfSpec= cell2mat(answer(2));
end
%try
for mp=1:length(Exp(expN).Dexp(DexpN).MP)
for ind384=1:384
spN=spN+1;
end
%catch
%end %try for user selected Reference routine
end
%***********DISPERSE REFERENCE PLATES
Exp(expN).Dexp(DexpN).RFmdPindx=[];
Exp(expN).Dexp(DexpN).RFmdPpltN=[];
if exist('drf','var') %('RF1scanN','var')
%Det. index of change from one MP to the next
i=2;
chgIndx(1)=1;
for j=1:length(drf(:,3))
if j>1
if cell2mat(drf(j,3))~= cell2mat(drf((j-1),3)), chgIndx(i)=j; i=i+1; end
end
end
chgIndx(length(chgIndx)+1)= length(drf)+1;
uu=zeros(size(drf,1),4);
uu(:,1:4)= cell2mat(drf(:,3:6))
vv= zeros(length(drf),DMnum);
%************************************
dMPs= unique(cell2mat(drf(:,3)));
%*****************************************
%{
for mm=1:MPnum
nonZrfIndx.mp{mm,:}=drfPindx((find(drfPindx(:,mm))),mm);
end
%}
%nzValsG= zeros(DMnum,size(drf,1));
%nzValsAcc= zeros(DMnum,384);
for mm=1:length(dMPs) % length(chgIndx)
for d=1:(DMnum)
medianIndxDisp=[];
NZrefIndxP=[];
nonZeroValsP=[];
medValLstDisp=[];
rf1scNdisp=((dMPs(mm)-1)*DMnum)+(d);
try % Determine the dispersed RFs median mean and std if such exist
NZrefIndxP= drfPindx((find(drfPindx(:,dMPs(mm)))),dMPs(mm)); %find(Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(drf(chgIndx(cI):chgIndx(cI+1)),5));
%vv= Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
vv(chgIndx(mm):(chgIndx(mm+1)-1),d)=Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
nonZeroValsP= nonzeros(Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5));
std1Disp= std(nonZeroValsP);
mean1Disp= mean(nonZeroValsP);
minDisp= min(nonZeroValsP);
maxDisp= max(nonZeroValsP);
drfVals=Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5);
%nzValsAcc(mm).DM(d,:)= nonZeroValsP;
%MEDIAN Determination for PLATES with Dispersed RFs
%NZrefIndxP= NZrefIndxP %find(Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5));
if isempty(NZrefIndxP), nonZeroCntDisp=0, medianIndxDisp= NZrefIndxP;
else nonZeroCntDisp=length(NZrefIndxP);
end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)==0, medianIndxDisp= NZrefIndxP(1:nonZeroCntDisp-1); end
if ~isempty(NZrefIndxP) && mod(nonZeroCntDisp,2)~=0, medianIndxDisp= NZrefIndxP; end
if ~isempty(NZrefIndxP) && length(medianIndxDisp) > 3 %(.15*384) %To calc. a median, more than 15% of spots must be nonZero
medValLstDisp= Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(medianIndxDisp,5);
%medValList1Disp{d}= medValLstDisp;
mval1Disp=median(medValLstDisp); %mval1=median(Exp(expN).Dexp(DexpN).scan(RF1mps).plate(1).CFout(1:384,5)); %CFout(1:383,5));
nonZeroMedPosIndx=find(mval1Disp==nonZeroValsP); %(Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5))); %(nonZeroIndxDisp,5))); %((nonZrfIndx.mp{dMPs(mm),:}),5)));
RFmd1posD= NZrefIndxP(nonZeroMedPosIndx); %drfPindx((RFmd1posIndx),dMPs(mm));
RFmd1locD(1)= ceil(RFmd1posD/24); %calc r value
RFmd1locD(2)= RFmd1posD - ((RFmd1locD(1)-1)*24); %calc c value
lstindx=lstindx+1;
lstindxOrf= lstindxOrf+1;
aa(lstindx,1)= {strcat('RF1mdP(',num2str(d),')')};
aa(lstindx,2)={strcat(':',num2str(dMPs(mm)),':',num2str(RFmd1locD(1)),':',num2str(RFmd1locD(2)))};
bb(lstindxOrf,1)= {strcat('RF1mdP(',num2str(d),')')};
bb(lstindxOrf,2)={strcat(':',num2str(dMPs(mm)),':',num2str(RFmd1locD(1)),':',num2str(RFmd1locD(2)))};
Exp(expN).Dexp(DexpN).RFmdPLB(d,dMPs(mm))= strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm))= RFmd1posD;
Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm))= dMPs(mm); %This is a storage of the MasterPlate used NOT the ScanPlate? WeMight wish to store the ScanPlateNumber also???
Exp(expN).Dexp(DexpN).RFmdPscanN(d,dMPs(mm))=rf1scNdisp;
Exp(expN).Dexp(DexpN).RFmedianP(d,dMPs(mm))= mval1Disp;
Exp(expN).Dexp(DexpN).stdP(d,dMPs(mm))= std1Disp;
Exp(expN).Dexp(DexpN).meanP(d,dMPs(mm))= mean1Disp;
Exp(expN).Dexp(DexpN).minP(d,dMPs(mm))= minDisp;
Exp(expN).Dexp(DexpN).maxP(d,dMPs(mm))= maxDisp;
else
% Need to set L r K values to zeros or pick the first spot with zeros
%Spot 1 could be other than zero as the median isn't calculated if fewer than some percent are nonzero
medianCalcFailedD= 'To Few nonZero spots for valid median RF1 selection'
firstZeroDindx= find(((Exp(expN).Dexp(DexpN).scan(rf1scNdisp).plate(1).CFout(NZrefIndxP,5))==0),1,'first');
firstZeroD= drfPindx((firstZeroDindx),dMPs(mm));
Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm))=firstZeroD;
Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm))= dMPs(mm); %RF1mp; %Is this supposed to be the MP number or the ScanPlate number???
end %~isempty(NZrefIndxP) && length(medianIndxDisp) > 3 ln584
catch %try ln565
medianCalcTryFailed1D= 'Failed! Failed! Ln565 {Dispersed RF1s} "try" But process continued with bogus Plate spot value!'
try
firstZeroindxD= find(vv((chgIndx(d):chgIndx(d+1)-1),5)==0,1,'first');
firstZeroPindx= uu(firstZeroindxD,4);
Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm))= dMPs(mm);
Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm))=firstZeroPindx;
catch
catchissue='try at Ln565'
Exp(expN).Dexp(DexpN).RFmdPpltN(d,dMPs(mm))= dMPs(mm);
Exp(expN).Dexp(DexpN).RFmdPindx(d,dMPs(mm))=384; %if crapout,Then use spot384 as default to keep going
end
try
Exp(expN).Dexp(DexpN).RFmdPpltN= dMPs(mm);
catch
catchissue='Ln619'
Exp(expN).Dexp(DexpN).RFmdPpltN= 1; %This might keep from breaking BUT ???
end
error='EZexpSel lineAfter 565'
end %try ~ln565
end %for d=0:DMnum
end %for mm=1:length(dMPs)
%****************CALC. GLOBAL MEAN, STD, AND MEDIAN FOR DISTRIBUTED REFERENCES******************************************************************
uu= horzcat(uu,vv);
for d=1:DMnum
medianIndxG=[];
NZrfIndxG=[];
minG=min(nonzeros(vv(:,d)));
maxG=max(nonzeros(vv(:,d)));
RFmeanG= mean(nonzeros(vv(:,d)));
RFstdG= std(nonzeros(vv(:,d)));
NZrfIndxG= find(nonzeros(vv(:,d)));
if isempty(RFmeanG), nonZeroCntD=0, %medianIndxDisp= RFmeanG(d);
else nonZeroCntD= length(nonzeros(vv(:,d)));
end
%Calc. of median requires an odd number of indx items
if ~isempty(NZrfIndxG) && mod(nonZeroCntD,2)==0, medianIndxD= NZrfIndxG(1:(size(NZrfIndxG,1)-1)); end
if ~isempty(NZrfIndxG) && mod(nonZeroCntD,2)~=0, medianIndxD= NZrfIndxG(:); end
if ~isempty(NZrfIndxG) && length(medianIndxD) > (.15*size(drf,1)) %To calc. a median, more than 15% of spots must be nonZero
mvalsDG= median(vv(medianIndxD,d)); %(nonzeros(vv(:,d)));
nzPosIndxDG=find(mvalsDG==vv(:,d));
RFmdDGloc(d,1)= uu(nzPosIndxDG,1); %MP of distributedGlobal Median value
RFmdDGloc(d,2)= uu(nzPosIndxDG,2); %calc r value
RFmdDGloc(d,3)= uu(nzPosIndxDG,3); %calc c value
lstindx=lstindx+1;
lstindxOrf= lstindxOrf+1;
aa(lstindx,1)= {strcat('RF1mdG(',num2str(d),')')};
aa(lstindx,2)={strcat(':',num2str(RFmdDGloc(d,1)),':',num2str(RFmdDGloc(d,2)),':',num2str(RFmdDGloc(d,3)))}; %,'std_',num2str(std2))};
bb(lstindxOrf,1)= {strcat('RF1mdG(',num2str(d),')')};
bb(lstindxOrf,2)={strcat(':',num2str(RFmdDGloc(d,1)),':',num2str(RFmdDGloc(d,2)),':',num2str(RFmdDGloc(d,3)))}; %,'std_',num2str(std2))};
Exp(expN).Dexp(DexpN).RFmdGLB(d)= strcat(aa(lstindx,1),aa(lstindx,2));
Exp(expN).Dexp(DexpN).RFmdGindx(d)= nzPosIndxDG;
Exp(expN).Dexp(DexpN).RFmdGpltN(d)= RFmdDGloc(d,1);
Exp(expN).Dexp(DexpN).RFmdGscanN(d)= uu(nzPosIndxDG,4);
Exp(expN).Dexp(DexpN).RFmedianG(d)= mvalsDG;
Exp(expN).Dexp(DexpN).RFminG(d)= minG;
Exp(expN).Dexp(DexpN).RFmaxG(d)= maxG;
Exp(expN).Dexp(DexpN).RFstdG(d)= RFstdG;
Exp(expN).Dexp(DexpN).RFmeanG(d)= RFmeanG;
end
end
end % if exist('drf','var')
%END OF DISPERSE REFERENCE PLATAES CALCULATIONS AND LIST ADDITIONS
%*********************************************************************
catch
msg= 'Failed attempt to apply User Selected Reference'
end %if n==1 && ~exist('RF1scanN','var') && ~exist('RF2scanN','var')