diff --git a/workflow/apps/matlab/ezview/EZexpSel.m b/workflow/apps/matlab/ezview/EZexpSel.m index 1bd620cc..0a3a6254 100755 --- a/workflow/apps/matlab/ezview/EZexpSel.m +++ b/workflow/apps/matlab/ezview/EZexpSel.m @@ -73,7 +73,7 @@ end Exp(expN).htmapRFanswer= {'G','L'}; %ZoneData if expType==1 - Exp(expN).DexpType= 'single'; + Exp(expN).DexpType='single'; % Test for Bad MP cell array (usually 384 [NaN}'s) % replaced length(Exp(expN).Dexp(1).MP) with MPnum @@ -86,65 +86,29 @@ if expType==1 end end - % TODO don't want to cd here - try - cd(usrExpJobsDir); - catch - if ispc - cd(fullfile('C:\')); %end % \Easy\Experiments')); - else - cd(fullfile('/mnt/data/scans')) - end - end - datacursormode off; - - if ispc - try - cd(usrExpJobsDir); - catch - cd(fullfile('C:\')); %end % \Easy\Experiments')); - end - else - try - cd(usrExpJobsDir); - catch - cd(fullfile('~')); - end - end - try - [openExpfile,openExppath] = uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','off') - catch ME - catchissue='Ln50' - ME - cd(w) + + % Return without execution if user cancels or doesn't select a .mat file + try + if openExpfile==0 || scansDir==0 return + end + catch end -%Return without execution if user cancels or doesn't select a .mat file -try - if openExpfile==0 || openExppath==0, cd(w), return, end -catch -end -if expN==1 + if expN==1 || expN==2 || expN==3 orfLstSel=get(handles.GeneOrfTog,'value') -end + end -if expN==2 - orfLstSel=get(handles.GeneOrfTog,'value') -end -if expN==3 - orfLstSel=get(handles.GeneOrfTog,'value') -end Exp(expN).Dexp(1).srtGnLst={('CheckMP/MPDMfile')}; Exp(expN).Dexp(1).srtOrfLst={('CheckMP/MPDMfile')}; set(handles.listboxGnOrf,'value',1) %Fix accomodation for bug in App Designer .. .wlapp converter 230906 set(handles.listboxGnOrf,'string',cellstr([{'Failed To Load'}; {' '}])); %try - ExpOutmat= fullfile(openExppath,openExpfile); + ExpOutmat=fullfile(scansDir,openExpfile); load(ExpOutmat); - cd(openExppath) + cd(scansDir) cd ..; resDir=pwd; Exp(expN).Dexp(1).resDir=resDir; diff --git a/workflow/apps/matlab/ezview/EZinterAgingDev0.m b/workflow/apps/matlab/ezview/EZinterAgingDev0.m index 4e60858a..40fee1da 100755 --- a/workflow/apps/matlab/ezview/EZinterAgingDev0.m +++ b/workflow/apps/matlab/ezview/EZinterAgingDev0.m @@ -1,453 +1,392 @@ %single gene L based interaction shift display function EZinterAgingDev0 + global Exp -[openExpfile,openExppath] = uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','on'); + [openExpfile,scansDir]=uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','on'); + AgMPDM=load(fullfile(scansDir,'MasterPlateFiles','MPDMmat.mat')); -AgMPDM=load (fullfile(openExppath,'MasterPlateFiles','MPDMmat.mat')); + for i=1:size(openExpfile,2) + ExpOutmat{i}= fullfile(scansDir,openExpfile{i}); + EScan{i}=load(ExpOutmat{1}); + end -for i=1:size(openExpfile,2) -ExpOutmat{i}= fullfile(openExppath,openExpfile{i}); -EScan{i}=load(ExpOutmat{1}); -end - - - - -%single gene L based interaction shift display -%function EZinteractDev3 -global Exp -% expN=1; + % 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:' + % 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); + 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, + 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 %m=1:mpN - %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,:); + DMsel(n+1)= str2double(DMstr(i:end)) + end 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); + 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); - 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)),:); - + for i=1:length(Xpos(:)), + % deltaXR{m,j}(i)= Xpos(i); + if deltaXR{m,j}(i)==0 + try + if abs(Xpos(i))Intc1 && j<=IntcLst - InterslstPosAdj{1}=(intersect(InterslstPosAdj{1},intLposSelAdj{j}(:,2))); %,intLcmpposInd{j})) - InterslstNegAdj{1}=(intersect(InterslstNegAdj{1},intLnegSelAdj{j}(:,2))); %,intLcmpnegInd{j})) - end + for i=1:length(Xneg(:)) + if deltaXR{m,j}(i)==0, deltaXR{m,j}(i)= Xneg(i); end + try + if abs(Xpos(i))>abs(Xneg(i)), deltaXR{m,j}(i)= Xneg(i); end + catch + end + 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); + 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 - 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 %j=1:dmN -%**************************************************************************************** + 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); -%********************************************************* + % 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); + %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 + 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(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 + 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; - - + % 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}(:,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)); + 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 - %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 -%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 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') + % 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 + 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 + % 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 -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 % for j= when subplotX~=1 standard one plot per figure + 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 -if strcmpi(subplotX,'N') - figure - bar3(ybb); - %xxbb=yb{1}(2,:); - %figure + EZintPrint + a=1 % TODO what is this for end -else -end %if subplotX==1 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 - - - - diff --git a/workflow/apps/matlab/ezview/EZmultiExLoad.m b/workflow/apps/matlab/ezview/EZmultiExLoad.m index fe13885f..a6358200 100755 --- a/workflow/apps/matlab/ezview/EZmultiExLoad.m +++ b/workflow/apps/matlab/ezview/EZmultiExLoad.m @@ -8,23 +8,8 @@ global Expbb global exDlst global exFolder -%Test for Bad MP cell array (usually 384 [NaN}'s) -%replaced length(Exp(expN).Dexp(1).MP) with MPnum -%{ -for mx=1:length(Exp(expN).Dexp(1).MP) - try - char((Exp(expN).Dexp(n).MP(mx).genename{1}(384))) - MPnum=mx; - catch - break - end -end -%************************************************* -%} -%******************************************************************************** -%Begin .mat Data Loading section -%******************************************************************************** -expN= zonePB; %added to accomodate AppDesigner limitations 230821 +% Load .mat file +expN=zonePB; % added to accomodate AppDesigner limitations 230821 Exp(expN).UgeneCnt=0; Exp(expN).DexpLength= size(matFile,2); DexpLength= size(matFile,2); for n=1:Exp(expN).DexpLength %size(matFile,2) @@ -45,9 +30,9 @@ Exp(expN).Dexp(n).srtOrfLst={('CheckMP/MPDMfile')}; set(handles.listboxGnOrf,'value',1) %Fix accomodation for bug in App Designer .. .wlapp converter 230918 set(handles.listboxGnOrf,'string',cellstr([{'Failed To Load'}; {' '}])); %try - ExpOutmat= matFile(n) %fullfile(openExppath,openExpfile); + ExpOutmat= matFile(n) %fullfile(scansDir,openExpfile); load(char(ExpOutmat)); - %cd(openExppath) + %cd(scansDir) %cd ..; %resDir=pwd; Exp(expN).Dexp(n).resDir= cell2mat(resDir(n)); @@ -57,7 +42,7 @@ set(handles.listboxGnOrf,'string',cellstr([{'Failed To Load'}; {' '}])); Exp(expN).Dexp(n).ExpFoldr= ExpPath; cd(w) %Experiment LOADs -load (fullfile(Exp(expN).Dexp(n).ExpFoldr,'MasterPlateFiles','MPDMmat.mat')) +load(fullfile(Exp(expN).Dexp(n).ExpFoldr,'MasterPlateFiles','MPDMmat.mat')) load(fullfile(Exp(expN).Dexp(n).resDir,'Fotos','Coordinates')) load(fullfile(Exp(expN).Dexp(n).resDir,'Fotos','anlZones')) load(fullfile(Exp(expN).Dexp(n).resDir,'Fotos','BGatTpts')) diff --git a/workflow/apps/matlab/ezview/EZvInitLoad.m b/workflow/apps/matlab/ezview/EZvInitLoad.m index 153588af..f0a19695 100755 --- a/workflow/apps/matlab/ezview/EZvInitLoad.m +++ b/workflow/apps/matlab/ezview/EZvInitLoad.m @@ -6,6 +6,76 @@ global userPars global usrExpJobsDir global zonePB +% Initialize some variables from matlab +ezPath=which(mfilename); +[ezDir,ezFileName]=fileparts(ezPath); +ezDir=fullfile(easyDir); +[parentDir, ~]=fileparts(ezDir); +parentDir=fullfile(parentDir); % ../easy/apps + +debug=1; +if debug + disp('Running in debug mode'); + disp('Initialized variables:'); + whos; +end + +% Set scansDir (project scans directory) intelligently +if exist('PROJECT', 'var') && ~isempty(getenv('PROJECT')) + scansDir=getenv('PROJECT'); + fprintf('Using project path: %s from environment variable PROJECT\n', scansDir); + disp('This usually indicates that we are in standalone mode'); +elseif exist('PROJECT_SCANS_DIR', 'var') && ~isempty(getenv('PROJECT_SCANS_DIR')) + scansDir=getenv('PROJECT_SCANS_DIR'); + fprintf('Using scans directory: %s from environment variable PROJECT_SCANS_DIR\n', scansDir); + disp('This usually indicates that we are in module mode'); +else + % TODO Lots of this is hardcoded logic, this TODO is just a reminder to change this block + % when changing EZ_DIR and other variables in the parent script + fprintf('Beginning parent scans directory search\n'); + fprintf('This usually indicates that we are in stand-alone mode without PROJECT or PROJECT_SCANS_DIR environment variables\n'); + dirsToScan={ + fullfile(parentDir,'..', '..', 'scans'), + fullfile(parentDir, '..', '..', 'ExpJobs'), + fullfile('/mnt/data/scans'), + fullfile('/mnt/data/ExpJobs'), + fullfile(parentDir, '..', '..', 'templates', 'scans-demo') + }; + for d=dirsToScan + if exist(d, 'dir') + subDirs=dir(d); + if ~isempty(subDirs) + fprintf('Found a non-empty parent scans directory in our list: %s\n', d); + fprintf('Scanning inside for a project scan directory\n'); + [~, sortedIndices]=sort(datenum({dirs.date}), 'descend'); % sort by newest first + sortedDirs=dirs{sortedIndices}; + scansDir=sortedDirs{1}; + fprintf('Selected newest project scans directory: %s\n', scansDir); + end + end + end +end + +% User sanity check and warning +if exist('PROJECT_USER', 'var') && ~isempty(getenv('PROJECT_USER')) + if ~equal(getenv('PROJECT_USER'), userName) + disp("WARNING: PROJECT_USER does not match the current namespace"); + end +end + +% Allow module to override hardcoded default EZview directory +if exist('EZVIEW_DIR','var') && ~isempty(getenv('EZVIEW_DIR')) + EZVIEW_DIR=fullfile(getenv('EZVIEW_DIR')); + if ~strcmp(ezDir, EZVIEW_DIR) % sanity check + disp("WARNING: EZVIEW_DIR does not match this script's hardcoded EZview location"); + disp("This is probably OK but if strange beahvior arises, we'll need to fix it in code"); + ezDir=EZVIEW_DIR; + end + fprintf('Using EZview script directory: %s from environment variable EZVIEW_DIR\n', ezDir); +else + fprintf('Using EZview script directory: %s from hardcoded default\n', ezDir); +end + userPars.BPdefault={'on','on','0.3','8','45','1000'}; userPars.boxplotFlg=1; userPars.BPoutliers='On'; @@ -16,92 +86,54 @@ userPars.BProt=45; userPars.Trenddefault={'1000'}; userPars.kfiltLim=str2double(userPars.BPdefault(6)); -% Exp(expN).expLoadCnt=0; ??? May need to add in Future -Exp(1).cTraceN= 1; %Added for Cummulative Composite Olay plotting -Exp(2).cTraceN=1; -Exp(3).cTraceN=1; -Exp(1).cTraceIndx(1)=1; -Exp(2).cTraceIndx(1)=1; -Exp(3).cTraceIndx(1)=1; -Exp(1).CompositPlot=0;Exp(2).CompositPlot=0;Exp(3).CompositPlot=0; -w=pwd; -Exp(1).DexpType='single'; -Exp(2).DexpType='single'; -Exp(3).DexpType='single'; -Exp(1).DexpN=1; -Exp(2).DexpN=1; -Exp(3).DexpN=1; -Exp(1).DexpLength=1; -Exp(2).DexpLength=1; -Exp(3).DexpLength=1; -set(handles.DN1,'value',1) -set(handles.DN2,'value',1) -set(handles.DN3,'value',1) -set(handles.GeneOrfTog,'value',0) + + + + + + +% Generate the Exp arrays +numExps=3; +for i=1:numExps + Exp(i).cTraceN=0; + Exp(i).cTraceIndx(1)=1; +end +Exp(1).CompositPlot=0;Exp(2).CompositPlot=0;Exp(3).CompositPlot=0; +for i=1:numExps + Exp(i).DexpType='single'; + Exp(i).DexpN=1; + Exp(i).DexpLength=1; + eval(['set(handles.DN' num2str(i) ', ''value'', 1);']); % MATLAB level unlocked +end +set(handles.GeneOrfTog,'value',0) try load('EZsgdInfo'); catch disp('Fail to load EZsgdInfo file from code directory'); end -Exp(4).SGDnum=SGDnum; -Exp(4).SGDtext=SGDtext; -Exp(4).SGDraw=SGDraw; -Exp(4).interacPBsel=0; +Exp(numExps+1).SGDnum=SGDnum; +Exp(numExps+1).SGDtext=SGDtext; +Exp(numExps+1).SGDraw=SGDraw; +Exp(numExps+1).interacPBsel=0; -try %big outer loop try catch to ln844 end ln868 - %try to use user selected 'ExpJobs' folder otherwise use a default - %directory in the uigetfile to load the experiment .mat file. - %try %Linux accommodatition - if ispc - try - cd(usrExpJobsDir); - catch - cd(fullfile('C:\')); %end % \Easy\Experiments')); - end - - else - try - cd(usrExpJobsDir); - catch - cd(fullfile('~')) - end - end - [openExpfile,openExppath] = uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','off') +% Big outer loop try catch to ln844 end ln868 +% try to use user selected 'ExpJobs' folder otherwise use a default +% directory in the uigetfile to load the experiment .mat file. + +try + [openExpfile,scansDir] = uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','off') + - try - ExpOutmat= fullfile(openExppath,openExpfile); - load(ExpOutmat); - cd(openExppath) - cd ..; - resDir=pwd; - Exp(1).Dexp(1).resDir=resDir; - Exp(2).Dexp(1).resDir=resDir; - Exp(3).Dexp(1).resDir=resDir; - cd ..; - try - test4imageDir= imread(fullfile(pwd,'1','1.bmp')); - ExpPath=pwd; - Exp(1).Dexp(1).ExpFoldr=ExpPath; - Exp(2).Dexp(1).ExpFoldr=ExpPath; - Exp(3).Dexp(1).ExpFoldr=ExpPath; - catch - try - cd .. - test4imageDir= imread(fullfile(pwd,'1','1.bmp')); - ExpPath=pwd; - Exp(1).Dexp(1).ExpFoldr=ExpPath; - Exp(2).Dexp(1).ExpFoldr=ExpPath; - Exp(3).Dexp(1).ExpFoldr=ExpPath; - catch - cd(w) - end - end - - cd(w) load (fullfile(Exp(1).Dexp(1).ExpFoldr,'MasterPlateFiles','MPDMmat.mat')) + for i=1:numExps + Exp(i).Dexp.DM=; + Exp(i).cTraceIndx(1)=1; + end + + Exp(1).Dexp(1).DM=DM; Exp(2).Dexp(1).DM=DM; Exp(3).Dexp(1).DM=DM; @@ -224,7 +256,7 @@ try %big outer loop try catch to ln844 end ln868 msg='LOADing or Setup issue' %if no load, then Message try SelExp PB to reload or try and different %Experiment - end %nested try-catch-end from ->ExpOutmat= fullfile(openExppath,openExpfile); + end %nested try-catch-end from ->ExpOutmat= fullfile(scansDir,openExpfile); try DNLaxes1= handles.DNLaxes1; DNLaxes2= handles.DNLaxes2; DNLaxes3= handles.DNLaxes3; @@ -847,14 +879,14 @@ try %big outer loop try catch to ln844 end ln868 Exp(2).Dexp(1).srtOrfLst=cellstr([{'Failed To Load'}; {' '}]); Exp(3).Dexp(1).srtOrfLst=cellstr([{'Failed To Load'}; {' '}]); - %[openExpfile,openExppath] + %[openExpfile,scansDir] if isempty(strfind(openExpfile,'.mat')) - cd(openExppath) + cd(scansDir) cd .. ExpPath=pwd; cd(w) - ExpOutImFile= fullfile(openExppath,openExpfile); + ExpOutImFile= fullfile(scansDir,openExpfile); EZvImagesOnly end diff --git a/workflow/apps/matlab/ezview/EZviewGui.m b/workflow/apps/matlab/ezview/EZviewGui.m index 0043366a..0fa418e2 100755 --- a/workflow/apps/matlab/ezview/EZviewGui.m +++ b/workflow/apps/matlab/ezview/EZviewGui.m @@ -84,13 +84,7 @@ function EZviewGui_OpeningFcn(hObject, eventdata, handles, varargin) %} % Load experiment data .... - newMLgraph=0; - if newMLgraph==0 - clear Exp - Exp=[]; - EZvInitLoad - else - end + EZvInitLoad % Func Call setup for @myupdatfcn dcm_obj=datacursormode(gcf); diff --git a/workflow/qhtcp-workflow b/workflow/qhtcp-workflow index d742d33a..0815bbaa 100755 --- a/workflow/qhtcp-workflow +++ b/workflow/qhtcp-workflow @@ -606,6 +606,7 @@ easy() { DRUG_MEDIA_FILE="$PROJECT_SCANS_DIR/MasterPlateFiles/DrugMedia_$PROJECT.xls" MASTER_PLATE_FILE="$PROJECT_SCANS_DIR/MasterPlateFiles/MasterPlate_$PROJECT.xls" + # Make EASY dirs debug "mkdir -p $EASY_RESULTS_DIR" mkdir -p "$EASY_RESULTS_DIR" @@ -638,6 +639,10 @@ ezview() { EZVIEW_DIR="$APPS_DIR/matlab/ezview" script="$EZVIEW_DIR/EZviewGui.m" + # Make EZview dirs + debug "mkdir -p $EZVIEW_DIR" + + matlab -nosplash -r "run $script"