%single gene L based interaction shift display function EZinterAgingDev0 global Exp global matFile [matFile,scansDir]=uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','on'); AgMPDM=load(fullfile(scansDir,'MasterPlateFiles','MPDMmat.mat')); for i=1:size(matFile,2) ExpOutmat{i}=fullfile(scansDir,matFile{i}); EScan{i}=load(ExpOutmat{1}); end % single gene L based interaction shift display % function EZinteractDev3 % expN=1; % User Input decode for application prompt={... 'Enter LeftSide Central Boundary in Percent:',... 'Enter RightSide Central Boundary in Percent:', ... 'Enter Perturbation Numbers for set intersect:' ... 'Remove No Growth Infinite Interactors:' ... 'Number of Bins for Histograms'... 'Subplots(Y), Multiple Plots(N), Suspend Plots(S)'}; % 'Select Experiment(zone) number:' name='Interaction User Input'; numlines=1; defaultanswer={'80','60','1','N','39','Y'}; answer=inputdlg(prompt,name,numlines,defaultanswer); negPercent=str2double(cell2mat(answer(1))); posPercent=str2double(cell2mat(answer(2))); DMstr=cell2mat(answer(3)); DMcomas=strfind((cell2mat(answer(3))),','); removInfinL=answer(4); numBins=str2double(cell2mat(answer(5))); subplotX=answer(6); % expN=str2double(cell2mat(answer(7))); n=0; for i=DMcomas, n=n+1 DMsel(n)=str2double(DMstr(i-1:i)) if i==max(DMcomas) DMsel(n+1)=str2double(DMstr(i:end)) end end Rn=Exp(expN).RFmean; Rs=Exp(expN).RFstd; dmN=length(Exp(expN).DM.drug); mpN=length(Exp(expN).MP); % Intc1=3; IntcLst=5; % Calculate Interaction values (with and without % standardDeviation/Upper-Lower boundary compensation for j=1:dmN for m=1:mpN scnN=j + (dmN*(m-1)) % 1,6,11..; 2,7,12 ..; 3,8,13..; Xn{m,j,:}=Exp(expN).scan(scnN).plate(1).CFout(:,5); % Exp(expN).scan(DM{j}(m)).plate(1).CFout(:,5); Xn{m,j,:}(Xn{m,j,:}==0)=140; Xln{m,j,:}=Exp(expN).scan(scnN).plate(1).CFout(:,11); % Exp(expN).scan(DM{j}(m)).plate(1).CFout(:,11); Xhn{m,j,:}=Exp(expN).scan(scnN).plate(1).CFout(:,12); % Exp(expN).scan(DM{j}(m)).plate(1).CFout(:,12); intL{m,j,:}=(Xn{m,j,:} - Rn(j)); intL{m,j,:}(Xn{m,j,:}==140)=100; intLhw{m,j,:}=((Xn{m,1,:}-Xn{m,j,:}) - Rn(1)-Rn(j)); intLhw{m,j,:}(Xn{m,j,:}==140)=100; deltaXR{m,j}(Xn{m,j} >=(Rn(j)+Rs(j)))=( Xln{m,j}(Xn{m,j} >=(Rn(j)+Rs(j))))- (Rn(j)+Rs(j)); deltaXR{m,j}(Xn{m,j} < (Rn(j)-Rs(j)))=( Xhn{m,j}(Xn{m,j} < (Rn(j)-Rs(j))))- (Rn(j)-Rs(j)); Xneg=Xhn{m,j}- (Rn(j)-Rs(j)); Xpos=Xln{m,j}- (Rn(j)+Rs(j)); deltaXR{m,j}=zeros(1,384); for i=1:length(Xpos(:)) % deltaXR{m,j}(i)=Xpos(i); if deltaXR{m,j}(i)==0 try if abs(Xpos(i))abs(Xneg(i)), deltaXR{m,j}(i)=Xneg(i); end catch end end deltaXR{m,j,:}(Xln{m,j,:}==0)=100; deltaXR{m,j,:}(isnan(Xln{m,j,:}))=120; deltaXR{m,j,:}(Xhn{m,j,:}==0)=100; deltaXR{m,j,:}(isnan(Xhn{m,j,:}))=120; % Compile all gene related L values for the each pert-DM (j). addend=(1+((m-1)*384)) % ((((m-1)*j)*384)+1); intLcmp(addend:addend+383,j)=cell2mat(intL(m,j,:)); % ((addend:addend+383),j)=cell2mat(intL(j,m,:)); intLadjcmp(addend:addend+383,j)=cell2mat(deltaXR(m,j,:)); % ((addend:addend+383),j)=cell2mat(deltaXR(j,m,:)); end % Remove RFs and Blank (or non annotated ' ') orf data Then % Filter data per user intput intLc{j}=intLcmp(:,j); intLwoRFs{j}(1,:)=intLcmp(Exp(expN).mutSpotIndx.woRFs,j); intLwoRFs{j}(2,:)=Exp(expN).mutSpotIndx.woRFs; % index of non-RF non-blank spots %Crude early intLcmp(385:(mpN-1)*384,j); if strcmpi(removInfinL,'Y') intLwoRFs0{j}(1,:)=intLwoRFs{j}(1,(intLwoRFs{j}(1,:)~=100)); % intLcmp(Exp(1).mutSpotIndx.woRFs,j); intLwoRFs0{j}(2,:)=intLwoRFs{j}(2,(intLwoRFs{j}(1,:)~=100)); % intLcmp(385:(mpN-1)*384,j); clear intLwoRFs intLwoRFs{j}(1,:)=intLwoRFs0{j}(1,:); intLwoRFs{j}(2,:)=intLwoRFs0{j}(2,:); end intLwoRFsorted{j}=sortrows(intLwoRFs{j}',1); clear intLcmpSortGT0 intLcmpSortLT0 tempIntL=intLwoRFsorted{j}(:,1); intLcmpSortGT0=tempIntL((tempIntL) >=0); intLcmpSortLT0=tempIntL((tempIntL) <0); centPosCnt=round(posPercent/100 * length(intLcmpSortGT0)); centNegCnt=round(negPercent/100 * length(intLcmpSortLT0)); intLposSel{j}=intLwoRFsorted{j}((length(intLcmpSortLT0)+centPosCnt): end,:); intLnegSel{j}=intLwoRFsorted{j}((1:(length(intLcmpSortLT0)-centNegCnt)),:); posIntboundryCentralVal(j)=intLcmpSortGT0((centPosCnt),:); % For Histogram use negIntboundryCentralVal(j)=intLcmpSortLT0(((length(intLcmpSortLT0))-(centNegCnt)),:); % For Histogram use % Find potential Interactors within selected range if j==DMsel(1) % Intc1, InterslstPos{1}=intLposSel{DMsel(1)}(:,2) % intLcmpposInd{Intc1} InterslstNeg{1}=intLnegSel{DMsel(1)}(:,2) % intLcmpnegInd{Intc1} elseif sum(ismember(DMsel,j))==1 %Intc1 && j<=IntcLst InterslstPos{1}=(intersect(InterslstPos{1},intLposSel{j}(:,2))); % ,intLcmpposInd{j})) InterslstNeg{1}=(intersect(InterslstNeg{1},intLnegSel{j}(:,2))); % ,intLcmpnegInd{j})) end % Convolute experiment spot index to get scan#, MP# and plateIndx needed % later to obtain genename and other descriptors and correlate data intLposDIndx{j}(:,2)=ceil((intLposSel{j}(:,2))/384); % mp plate numb column intLposDIndx{j}(:,3)=(rem(intLposSel{j}(:,2),384)); nn=(intLposDIndx{j}(:,3)==0); intLposDIndx{j}(nn,3)=384; intLposDIndx{j}(:,1)=j + (dmN*((intLposDIndx{j}(:,2))-1)); % scan numb column %intLposDIndx(:,2)* intLposDIndx(:,3); intLnegDIndx{j}(:,2)=ceil((intLnegSel{j}(:,2))/384); % mp plate numb column intLnegDIndx{j}(:,3)=(rem(intLnegSel{j}(:,2),384)); nn=(intLposDIndx{j}(:,3)==0); intLnegDIndx{j}(nn,3)=384; intLnegDIndx{j}(:,1)=j + (dmN*((intLnegDIndx{j}(:,2))-1)); % scan numb % ADJUSTED L for Reference Standard deviation(More conservative) Interaction List compilation intLadjwoRFs{j}(1,:)=intLadjcmp(Exp(expN).mutSpotIndx.woRFs,j); intLadjwoRFs{j}(2,:)=Exp(expN).mutSpotIndx.woRFs; % intLadjcmp(385:(mpN-1)*384,j); %intLadjcmp(Exp(expN).mutSpotIndx.woRFs,j); if strcmpi(removInfinL,'Y') intLadjwoRFs0{j}(1,:)=intLadjwoRFs{j}(1,(intLadjwoRFs{j}(1,:)~=100)) ; %intLcmp(Exp(1).mutSpotIndx.woRFs,j); intLadjwoRFs0{j}(2,:)=intLadjwoRFs{j}(2,(intLadjwoRFs{j}(1,:)~=100)) ; % Remove Index where spots are infinite (=100); clear intLadjwoRFs intLadjwoRFs{j}(1,:)=intLadjwoRFs0{j}(1,:); intLadjwoRFs{j}(2,:)=intLadjwoRFs0{j}(2,:); end intLwoRFsortedAdj{j}=sortrows(intLadjwoRFs{j}',1); clear intLadjSortGT0 intLadjSortLT0 tempIntLadj=intLwoRFsortedAdj{j}(:,1); intLadjSortGT0=tempIntLadj((tempIntLadj) >=0); intLadjSortLT0=tempIntLadj((tempIntLadj) <0); centPosCntAdj=round(posPercent/100 * length(intLadjSortGT0)); centNegCntAdj=round(negPercent/100 * length(intLadjSortLT0)); intLposSelAdj{j}=intLwoRFsortedAdj{j}((length(intLadjSortLT0)+centPosCntAdj): end,:); intLnegSelAdj{j}=intLwoRFsortedAdj{j}((1:(length(intLadjSortLT0)-centNegCntAdj)),:); posIntboundryCentralValAdj(j)=intLadjSortGT0((centPosCntAdj),:); negIntboundryCentralValAdj(j)=intLadjSortLT0(((length(intLadjSortLT0))-(centNegCntAdj)),:); if j==DMsel(1) % Intc1 InterslstPosAdj{1}=intLposSelAdj{DMsel(1)}(:,2) % intLcmpposInd{Intc1} InterslstNegAdj{1}=intLnegSelAdj{DMsel(1)}(:,2) % intLcmpnegInd{Intc1} elseif sum(ismember(DMsel,j))==1 % j>Intc1 && j<=IntcLst InterslstPosAdj{1}=(intersect(InterslstPosAdj{1},intLposSelAdj{j}(:,2))); % ,intLcmpposInd{j})) InterslstNegAdj{1}=(intersect(InterslstNegAdj{1},intLnegSelAdj{j}(:,2))); % ,intLcmpnegInd{j})) end % Convolute experiment spot index to get scan#, MP# and plateIndx needed % later to obtain genename and other descriptors and correlate data intLposDIndxAdj{j}(:,2)=ceil((intLposSelAdj{j}(:,2))/384); % mp plate numb column intLposDIndxAdj{j}(:,3)=(rem(intLposSelAdj{j}(:,2),384)); nn=(intLposDIndxAdj{j}(:,3)==0); intLposDIndx{j}(nn,3)=384; intLposDIndxAdj{j}(:,1)=j + (dmN*((intLposDIndxAdj{j}(:,2))-1)); % scan numb column %intLposDIndx(:,2)* intLposDIndx(:,3); intLnegDIndxAdj{j}(:,2)=ceil((intLnegSelAdj{j}(:,2))/384); % mp plate numb column intLnegDIndxAdj{j}(:,3)=(rem(intLnegSelAdj{j}(:,2),384)); nn=(intLposDIndxAdj{j}(:,3)==0); intLnegDIndxAdj{j}(nn,3)=384; intLnegDIndxAdj{j}(:,1)=j + (dmN*((intLnegDIndxAdj{j}(:,2))-1)); % scan numb end % Get interaction values for each DM drugmedia agar type IntersValsPos=intLcmp(InterslstPos{1},DMsel); IntersValsNeg=intLcmp(InterslstNeg{1},DMsel); IntersValsPosAdj=intLadjcmp(InterslstPosAdj{1},DMsel); IntersValsNegAdj=intLadjcmp(InterslstNegAdj{1},DMsel); % Build 'genelist' data sheet for interactors selIntPx{1}(:,6)=InterslstPos{1}; selIntPx{1}(:,2)=ceil((InterslstPos{1})/384); % mp plate numb column selIntPx{1}(:,3)=(rem(InterslstPos{1},384)); nn=(selIntPx{1}(:,3)==0); selIntPx{1}(nn,3)=384; selIntPx{1}(:,4)=ceil(selIntPx{1}(:,3)/24); % row numb selIntPx{1}(:,5)=rem(selIntPx{1}(:,3),24); mm=(selIntPx{1}(:,5)==0); selIntPx{1}(mm,5)=24; selIntPx{1}(:,1)=j + (dmN*((selIntPx{1}(:,2))-1)); % scan numb column %intLposDIndx(:,2)* intLposDIndx(:,3); selIntP=cell2mat(selIntPx); selIntNx{1}(:,6)=InterslstNeg{1}; selIntNx{1}(:,2)=ceil((InterslstNeg{1})/384); % mp plate numb column selIntNx{1}(:,3)=(rem(InterslstNeg{1},384)); nn=(selIntNx{1}(:,3)==0); selIntNx{1}(nn,3)=384; selIntNx{1}(:,4)=ceil(selIntNx{1}(:,3)/24); % row numb selIntNx{1}(:,5)=rem(selIntNx{1}(:,3),24); mm=(selIntNx{1}(:,5)==0); selIntNx{1}(mm,5)=24; selIntNx{1}(:,1)=j + (dmN*((selIntNx{1}(:,2))-1)); % scan numb selIntN=cell2mat(selIntNx); for i=1:size(selIntP,1) IPgene(i)=Exp(expN).MP(selIntP(i,2)).genename{1}(selIntP(i,3)); IPorf(i)=Exp(expN).MP(selIntP(i,2)).orf{1}(selIntP(i,3)); IPstrain(i)=Exp(expN).MP(selIntP(i,2)).strain{1}(selIntP(i,3)); IPspecifics(i)=Exp(expN).MP(selIntP(i,2)).specifics{1}(selIntP(i,3)); IPorfRep(i)=Exp(expN).MP(selIntP(i,2)).orfRep{1}(selIntP(i,3)); % Bad this is the L data for only the last selected DM perturbation % Would need to calculate each scan# for each DMsel value ipL(i)=Exp(expN).scan(selIntP(i,1)).plate(1).CFout(selIntP(i,3),5); ipLlower(i)=Exp(expN).scan(selIntP(i,1)).plate(1).CFout(selIntP(i,3),11); ipLupper(i)=Exp(expN).scan(selIntP(i,1)).plate(1).CFout(selIntP(i,3),12); end for i=1:size(selIntN,1) INgene(i)=Exp(expN).MP(selIntN(i,2)).genename{1}(selIntN(i,3)); INorf(i)=Exp(expN).MP(selIntN(i,2)).orf{1}(selIntN(i,3)); INstrain(i)=Exp(expN).MP(selIntN(i,2)).strain{1}(selIntN(i,3)); INspecifics(i)=Exp(expN).MP(selIntN(i,2)).specifics{1}(selIntN(i,3)); INorfRep(i)=Exp(expN).MP(selIntN(i,2)).orfRep{1}(selIntN(i,3)); % Bad this is the L data for only the last selected DM perturbation % Would need to calculate each scan# for each DMsel value inL(i)=Exp(expN).scan(selIntN(i,1)).plate(1).CFout(selIntN(i,3),5); inLlower(i)=Exp(expN).scan(selIntN(i,1)).plate(1).CFout(selIntN(i,3),11); inLupper(i)=Exp(expN).scan(selIntN(i,1)).plate(1).CFout(selIntN(i,3),12); end % ADJUSTED with STD and curve fit boundaries to produce more conservative interaction values % Build 'genelist' data sheet for interactors selIntPxAdj{1}(:,2)=ceil((InterslstPosAdj{1})/384); %mp plate numb column selIntPxAdj{1}(:,3)=(rem(InterslstPosAdj{1},384)); nn=(selIntPxAdj{1}(:,3)==0); selIntPxAdj{1}(nn,3)=384; selIntPxAdj{1}(:,4)=ceil(selIntPxAdj{1}(:,3)/24); %row numb selIntPxAdj{1}(:,5)=rem(selIntPxAdj{1}(:,3),24); mm=(selIntPxAdj{1}(:,5)==0); selIntPxAdj{1}(mm,5)=24; selIntPxAdj{1}(:,1)=j + (dmN*((selIntPxAdj{1}(:,2))-1)); %scan numb column %intLposDIndx(:,2)* intLposDIndx(:,3); selIntPAdj=cell2mat(selIntPxAdj); selIntNxAdj{1}(:,2)=ceil((InterslstNegAdj{1})/384); %mp plate numb column selIntNxAdj{1}(:,3)=(rem(InterslstNegAdj{1},384)); nn=(selIntNxAdj{1}(:,3)==0); selIntNxAdj{1}(nn,3)=384; selIntNxAdj{1}(:,4)=ceil(selIntNxAdj{1}(:,3)/24); %row numb selIntNxAdj{1}(:,5)=rem(selIntNxAdj{1}(:,3),24); mm=(selIntNxAdj{1}(:,5)==0); selIntNxAdj{1}(mm,5)=24; selIntNxAdj{1}(:,1)=j + (dmN*((selIntNxAdj{1}(:,2))-1)); %scan numb selIntNAdj=cell2mat(selIntNxAdj); for i=1:size(selIntPAdj,1) IPgeneAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).genename{1}(selIntPAdj(i,3)); IPorfAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).orf{1}(selIntPAdj(i,3)); IPstrainAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).strain{1}(selIntPAdj(i,3)); IPspecificsAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).specifics{1}(selIntPAdj(i,3)); IPorfRepAdj(i)=Exp(expN).MP(selIntPAdj(i,2)).orfRep{1}(selIntPAdj(i,3)); % Bad this is the L data for only the last selected DM perturbation % Would need to calculate each scan# for each DMsel value ipLAdj(i)=Exp(expN).scan(selIntPAdj(i,1)).plate(1).CFout(selIntPAdj(i,3),5); ipLlowerAdj(i)=Exp(expN).scan(selIntPAdj(i,1)).plate(1).CFout(selIntPAdj(i,3),11); ipLupperAdj(i)=Exp(expN).scan(selIntPAdj(i,1)).plate(1).CFout(selIntPAdj(i,3),12); end for i=1:size(selIntNAdj,1) INgeneAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).genename{1}(selIntNAdj(i,3)); INorfAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).orf{1}(selIntNAdj(i,3)); INstrainAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).strain{1}(selIntNAdj(i,3)); INspecificsAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).specifics{1}(selIntNAdj(i,3)); INorfRepAdj(i)=Exp(expN).MP(selIntNAdj(i,2)).orfRep{1}(selIntNAdj(i,3)); %Bad this is the L data for only the last selected DM perturbation %Would need to calculate each scan# for each DMsel value inLAdj(i)=Exp(expN).scan(selIntNAdj(i,1)).plate(1).CFout(selIntNAdj(i,3),5); inLlowerAdj(i)=Exp(expN).scan(selIntNAdj(i,1)).plate(1).CFout(selIntNAdj(i,3),11); inLupperAdj(i)=Exp(expN).scan(selIntNAdj(i,1)).plate(1).CFout(selIntNAdj(i,3),12); end % Plot Histogram % subplotX=1; figure if strcmpi(subplotX,'Y') for j=1:dmN histLdata=intLwoRFsorted{j}(:,1); % intLcmp(385:(mpN-1)*384,j); % histLadjData=intLadjcmp(385:(mpN-1)*384,j); hgLdat{j}=histfitJR(histLdata,numBins,'kernel'); x{j}=get(hgLdat{j}(2),'xdata'); y{j}=get(hgLdat{j}(2),'ydata'); xb{j}=get(hgLdat{j}(1),'xdata'); yb{j}=get(hgLdat{j}(1),'ydata'); ybpostot{j}=sum(yb{j}(2,(xb{j}(1,:)>=0))); ybnegtot{j}=sum(yb{j}(2,(xb{j}(1,:) <0))); xbb(j,:)=xb{j}(2,:); ybb(j,:)=yb{j}(2,:); clf end % Figure for j=1:dmN histLdata=intLwoRFsorted{j}(:,1); % intLcmp(385:(mpN-1)*384,j); hgL{j}=subplot(2, 4, j), histfitJR(histLdata,numBins,'kernel') ; hold %hgL{j}=histfit(intLcmp(:,j),31,'kernel') subplot(2, 4, j),plot(posIntboundryCentralVal(j), 1:3000,'--r') subplot(2, 4, j),plot(negIntboundryCentralVal(j), 1:3000,'--g') hold off end scnsize=get(0,'screensize') pos1=[round(scnsize(3)/40), round(scnsize(4)/2 +(scnsize(3)/80)),... round(scnsize(3) -round(scnsize(3)/80)),round(scnsize(4)/2 -round(scnsize(4)/80))] set(gcf,'outerposition',pos1) set(gcf,'Name', 'Interaction Values '); figure for j=1:dmN histLadjData=intLwoRFsortedAdj{j}(:,1); %intLadjcmp(385:(mpN-1)*384,j); hgLadj{j}=subplot(2, 4, j),histfitJR(histLadjData,numBins,'kernel') ; hold %hgLadj{j}=histfit(intLadjcmp(:,j),31,'kernel') subplot(2, 4, j),plot(posIntboundryCentralValAdj(j), 1:3000,'--r') subplot(2, 4, j),plot(negIntboundryCentralValAdj(j), 1:3000,'--g') hold off end pos2=[round(scnsize(3)/40), round(scnsize(4)/30),... round(scnsize(3) -scnsize(3)/80),round(scnsize(4)/2 -scnsize(4)/80)] set(gcf,'outerposition',pos2) set(gcf,'Name', 'Interaction Compensated by Standard Deviation and Upper/Lower Curvefit boundaries') elseif strcmpi(subplotX,'N') for j=1:dmN histLdata=intLwoRFsorted{j}(:,1); %intLcmp(385:(mpN-1)*384,j); histLadjData=intLwoRFsortedAdj{j}(:,1); %intLadjcmp(385:(mpN-1)*384,j);%intLadjcmp(385:(mpN-1)*384,j); %intLcmp(:,j); %intLadjcmp(:,j); figure hgL{j}=histfitJR(histLdata,numBins,'kernel') ; hold %hgL{j}=histfit(intLcmp(:,j),31,'kernel') plot(posIntboundryCentralVal(j), 1:3000,'--r') plot(negIntboundryCentralVal(j), 1:3000,'--g') hold off figure hgLadj{j}=histfitJR(histLadjData,numBins,'kernel') ; hold %hgLadj{j}=histfit(intLadjcmp(:,j),31,'kernel') plot(posIntboundryCentralValAdj(j), 1:3000,'--r') plot(negIntboundryCentralValAdj(j), 1:3000,'--g') hold off x{j}=get(hgL{j}(2),'xdata') y{j}=get(hgL{j}(2),'ydata'); xb{j}=get(hgL{j}(1),'xdata') yb{j}=get(hgL{j}(1),'ydata') ybpostot{j}=sum(yb{j}(2,(xb{j}(1,:)>=0))) ybnegtot{j}=sum(yb{j}(2,(xb{j}(1,:) <0))) xbb(j,:)=xb{j}(2,:); ybb(j,:)=yb{j}(2,:); end if strcmpi(subplotX,'N') figure bar3(ybb); % xxbb=yb{1}(2,:); % figure end else end % histograms placed in subplot figure else multiple histogram plots if strcmpi(subplotX,'Y') figure bar3(ybb); set(gcf,'Name', 'Unfiltered Interaction Histogram for all DrugMedias; NoGrowth Interactors set to 100hr (highest bin)') %xxbb=yb{1}(2,:); %figure end EZintPrint a=1 % TODO what is this for end