diff --git a/workflow/templates/easy/EASYconsole2.m b/workflow/templates/easy/EASYconsole2.m index d538bdad..7e2c8a03 100644 --- a/workflow/templates/easy/EASYconsole2.m +++ b/workflow/templates/easy/EASYconsole2.m @@ -1,24 +1,4 @@ -%% MAIN WORKING FUNCTION: EASYconsole.m %% -%This is a 2023a Expoorted App so that it can be edited in the unfortunate -%new Matlab versions. Created by using the Matlab porting utility in 2023. -% EASYconsole is a function designed to have a variable number of inputs and -% outputs - -% These were defined globally in the parent script -% global ExpOutmat -% global ExpPath -% global fhconsole -% global resDir -% global wCodeDir -% global ImParMat -% global openExpfile -% global openExppath -% global newExpfile -% global newExppath -% global SWnewExp -% global matDir -% global scan - +% Launch the MATLAB EASY console function varargout = EASYconsole(varargin) % initialize global variables for function EASYconsole global ExpOutmat @@ -103,28 +83,29 @@ function EASYconsole_OpeningFcn(hObject, ~, handles, varargin) set(fhconsole,'Name','EASYconsole -Exp. Analysis NOT selected.') end end + %% EASYconsole OUTPUT FUNCTION %% % Outputs from this function are returned to the command line. -function varargout = EASYconsole_OutputFcn(~, ~, handles) % varargout--cell array for returning output args (see VARARGOUT); % hObject--handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles--structure with handles and user data (see GUIDATA) - +function varargout = EASYconsole_OutputFcn(~, ~, handles) % Get default command line output from handles structure varargout{1} = handles.output; end + %% CONSOLE BUTTON INTERFACES %% % File Button Interface function FileMenu_Callback(~, ~, ~) - global wCodeDir - cd(wCodeDir) + returnHome end + % Load Experiment Button Interface function LoadExp_Callback(~, ~, ~) - global wCodeDir - cd(wCodeDir) + returnHome end + % New Experiment Button Interface function NewExpDat_Callback(~, ~, ~) global newExpfile @@ -138,553 +119,332 @@ function NewExpDat_Callback(~, ~, ~) global fhconsole global scan -%% RESULTS DIRECTORY CREATION %% -try % put all users on same working directory - cd(wCodeDir) - wcode=pwd; - if ispc - try - % first attempt to begin search at current working directory - cd(fullfile('C:\')); - catch - % if first attempt fails, throw message box and begin the search at the PC's C drive - msgbox('Failure to find selected default Directory so starting Load search at the C Drive .'); - %cd(fullfile('C:\')); - wcode - end - end - - - if isunix - try - name = getenv('USER'); - if isequal(name,'jwrodger') - cd('/mnt/data/ExpJobs') - else - %could provide other contingency options here if desireable for other users - %if fails, just go to EASY code folder per JH - cd(wcode) %JH has argued strongly to send user to code directory - end - - catch - msgbox('Failure to find selected default Directory so start Load search at root.'); - cd(fullfile('/')); + returnHome + + % Create a new experiment + try + questdlg('\fontsize{20} NAME the file and NAVIGATE to the directory with the image folders.','File Creation','OK', struct('Default','OK','Interpreter','tex')); + [newExpfile,newExppath] = uiputfile(' .mat'); + SWnewExp=1; + cd (wcode) + newExpfilePref= strrep(newExpfile,'.mat',''); + resDirName=strcat('Results',datestr(now,29),newExpfilePref); + + % creation of the Results file + if ~exist(fullfile(newExppath,resDirName,'matResults')) + mkdir (fullfile(newExppath,resDirName,'matResults')); + end + + % assigning paths to global variables + resDir= fullfile(newExppath,resDirName); + matDir= fullfile(newExppath,resDirName,'matResults'); + ExpOutmat=fullfile(matDir,strcat(datestr(now,29),newExpfile)); + ExpPath= fullfile(newExppath); + + %***Added for 'parfor global' to preallocate 'scan' structure 20-0123***** + nlist=dir(fullfile(ExpPath,'*')); + nnn=0; + for n=1:size(nlist,1) + if (~isempty(str2num(nlist(n).name))) + nnn=nnn+1; + PnumLst(nnn)= (str2num(nlist(n).name)); + sl(nnn,1)={(nlist(n).name)}; end end - if ismac - cd(wcode) %JH has argued strongly to send user to code directory + scanSize= size(sl,1); + scanMax= max(str2double(sl)); + clear scan; + scan(scanMax)= struct(); %[]; %changed for parfor global 20_0118 + save(ExpOutmat,'scan') + + % create 'PrintResults' file + if ~exist(fullfile(ExpPath,resDirName,'PrintResults')) + mkdir(fullfile(ExpPath,resDirName,'PrintResults')); end - -% CREATE NEW EXPERIMENT % -questdlg('\fontsize{20} NAME the file and NAVIGATE to the directory with the image folders.','File Creation','OK', struct('Default','OK','Interpreter','tex')); -[newExpfile,newExppath] = uiputfile(' .mat'); - SWnewExp=1; - cd (wcode) - newExpfilePref= strrep(newExpfile,'.mat',''); - resDirName=strcat('Results',datestr(now,29),newExpfilePref); - - % creation of the Results file - if ~exist(fullfile(newExppath,resDirName,'matResults')) - mkdir (fullfile(newExppath,resDirName,'matResults')); + % copy 'figs' file and place it in ExpPath Directory + if ~exist(fullfile(ExpPath,resDirName,'figs')) + copyfile((fullfile(wCodeDir,'figs')), (fullfile(ExpPath,resDirName,'figs'))) + end + % create 'CFfigs' file + if ~exist(fullfile(ExpPath,resDirName,'CFfigs')) + mkdir(fullfile(ExpPath,resDirName,'CFfigs')); + end + % copy 'PTmats' file and place it in ExpPath Directory + if ~exist(fullfile(ExpPath,resDirName,'PTmats')) + copyfile((fullfile(wCodeDir,'PTmats')), (fullfile(ExpPath,resDirName,'PTmats'))) + end + % create 'Fotos' file + if ~exist(fullfile(ExpPath,resDirName,'Fotos')) + mkdir(fullfile(ExpPath,resDirName,'Fotos')); + clear sbdg % reduce possible retention of a previous job sdbg + sbdg= cell(1,scanMax); + save((fullfile(resDir,'Fotos','Nbdg')),'sbdg'); + end + % create backup 'Fotos' file + if ~exist(fullfile(ExpPath,resDirName,'Fotos','BkUp')) + mkdir(fullfile(ExpPath,resDirName,'Fotos','BkUp')); + end + + catch ME + returnHome + disp('Error Creating a New Experiment') end - - % assigning paths to global variables - resDir= fullfile(newExppath,resDirName); - matDir= fullfile(newExppath,resDirName,'matResults'); - ExpOutmat=fullfile(matDir,strcat(datestr(now,29),newExpfile)); - ExpPath= fullfile(newExppath); - %***Added for 'parfor global' to preallocate 'scan' structure 20-0123***** - nlist=dir(fullfile(ExpPath,'*')); - nnn=0; - for n=1:size(nlist,1) - if (~isempty(str2num(nlist(n).name))) - nnn=nnn+1; - PnumLst(nnn)= (str2num(nlist(n).name)); - sl(nnn,1)={(nlist(n).name)}; - end - end - scanSize= size(sl,1); - scanMax= max(str2double(sl)); - clear scan; - scan(scanMax)= struct(); %[]; %changed for parfor global 20_0118 - - %************************************************************************* - save(ExpOutmat,'scan') - -% create 'PrintResults' file -if ~exist(fullfile(ExpPath,resDirName,'PrintResults')) - mkdir(fullfile(ExpPath,resDirName,'PrintResults')); -end -% copy 'figs' file and place it in ExpPath Directory -if ~exist(fullfile(ExpPath,resDirName,'figs')) - copyfile((fullfile(wCodeDir,'figs')), (fullfile(ExpPath,resDirName,'figs'))) -end -% create 'CFfigs' file -if ~exist(fullfile(ExpPath,resDirName,'CFfigs')) - mkdir(fullfile(ExpPath,resDirName,'CFfigs')); -end -% copy 'PTmats' file and place it in ExpPath Directory -if ~exist(fullfile(ExpPath,resDirName,'PTmats')) - copyfile((fullfile(wCodeDir,'PTmats')), (fullfile(ExpPath,resDirName,'PTmats'))) -end -% create 'Fotos' file -if ~exist(fullfile(ExpPath,resDirName,'Fotos')) - mkdir(fullfile(ExpPath,resDirName,'Fotos')); - clear sbdg % reduce possible retention of a previous job sdbg - sbdg= cell(1,scanMax); - save((fullfile(resDir,'Fotos','Nbdg')),'sbdg'); -end -% create backup 'Fotos' file -if ~exist(fullfile(ExpPath,resDirName,'Fotos','BkUp')) - mkdir(fullfile(ExpPath,resDirName,'Fotos','BkUp')); + % set the title for fhconsole depending on existence + if exist('resDir','var')&&~isempty(resDir) + set(fhconsole,'Name',strcat('EASYconsole- ',char(resDir))) + else + set(fhconsole,'Name','EASYconsole -Exp. Analysis NOT selected.') + end end -catch ME - cd(wCodeDir) - disp('Error Creating a New Experiment. Loc: EASYconsole.m Lines 106-197') -end -% set the title for fhconsole depending on existence -if exist('resDir','var')&&~isempty(resDir) - set(fhconsole,'Name',strcat('EASYconsole- ',char(resDir))) -else - set(fhconsole,'Name','EASYconsole -Exp. Analysis NOT selected.') -end -end -%% LOAD A PREVIOUS EXPERIMENT %% -%*******LOAD Experiment Analysis directory/file structure +% Load a previous experiment function LoadDatFile_Callback(~, ~, ~) -global openExpfile -global openExppath -global SWnewExp -global ExpOutmat -global ExpPath -global matDir -global resDir -global wCodeDir -global fhconsole -global ImParMat + global openExpfile + global openExppath + global SWnewExp + global ExpOutmat + global ExpPath + global matDir + global resDir + global wCodeDir + global fhconsole + global ImParMat -try -%cd(wCodeDir) -%wcode=pwd; -%cd .. -%cd(wcode) + returnHome - % put all users on same working directory - cd(wCodeDir) - wcode=pwd; - - if ispc - try - % first attempt to begin search at current working directory - cd(fullfile('C:\')); - catch - % if first attempt fails, throw message box and begin the search at the PC's C drive - msgbox('Failure to find selected default Directory so starting Load search at the C Drive .'); - %cd(fullfile('C:\')); - wcode - end - end - + % TODO this entire try block needs work + try + % TODO this section is highly questionable + questdlg('\fontsize{20} Load file from ExpJobs/YourJob/YourResults/matResults','File Creation','OK', struct('Default','OK','Interpreter','tex')); + [openExpfile,openExppath] = uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','off'); + SWnewExp=0; + ExpOutmat= fullfile(openExppath,openExpfile); + load(ExpOutmat); + cd(openExppath) + cd ..; + resDir=pwd; + cd ..; + ExpPath=pwd; + cd (wcode) + ExpPath= fullfile(ExpPath); - if isunix - try - name = getenv('USER'); - if isequal(name,'jwrodger') - cd('/mnt/data/ExpJobs') - else - %could provide other contingency options here if desireable for other users - %if fails, just go to EASY code folder per JH - cd(wcode) %JH has argued strongly to send user to code directory - end - - catch - msgbox('Failure to find selected default Directory so start Load search at root.'); - cd(fullfile('/')); - end + if isfolder(fullfile(openExppath, '..','..','1')) %If Inovation Vrobot Then + if exist(fullfile(resDir,'PTmats','NImParameters.mat')) + load(fullfile(resDir,'PTmats','NImParameters.mat')); + else + curDir=pwd; + returnHome + load NImParameters.mat + cd(curDir) + end + else %If Epson 10Plate Scans Then> + if exist(fullfile(resDir,'PTmats','ImParameters.mat')) + load(fullfile(resDir,'PTmats','ImParameters.mat')); + else + curDir=pwd; + returnHome + load ImParameters.mat + cd(curDir) + end end - if ismac - cd(wcode) %JH has argued strongly to send user to code directory + + matDir= fullfile(openExppath,'\'); + mkdir(fullfile(matDir,'BkUp')); + + % create supporting files + if ~exist(fullfile(resDir,'PrintResults')) + mkdir(fullfile(resDir,'PrintResults')); end - %****************End - %Navigation****************************************** - -questdlg('\fontsize{20} Load file from ExpJobs/YourJob/YourResults/matResults','File Creation','OK', struct('Default','OK','Interpreter','tex')); -[openExpfile,openExppath] = uigetfile('.mat','Open Experiment folder and data storage .mat file name','MultiSelect','off'); -SWnewExp=0; - -ExpOutmat= fullfile(openExppath,openExpfile); -load(ExpOutmat); - -cd(openExppath) -cd ..; -resDir=pwd; -cd ..; -ExpPath=pwd; -cd (wcode) -ExpPath= fullfile(ExpPath); - - - -if isfolder(fullfile(openExppath, '..','..','1')) %If Inovation Vrobot Then - if exist(fullfile(resDir,'PTmats','NImParameters.mat')) - load(fullfile(resDir,'PTmats','NImParameters.mat')); - else - curDir=pwd; - cd(wCodeDir) - load NImParameters.mat - cd(curDir) + if ~exist(fullfile(resDir,'figs')) + mkdir(fullfile(resDir,'figs')); + end + if ~exist(fullfile(resDir,'CFfigs')) + mkdir(fullfile(resDir,'CFfigs')); + end + if ~exist(fullfile(resDir,'PTmats')) + mkdir(fullfile(resDir,'PTmats')); + end + if ~exist(fullfile(resDir,'Fotos')) + mkdir(fullfile(resDir,'Fotos')); + end + catch + returnHome end -else %If Epson 10Plate Scans Then> - if exist(fullfile(resDir,'PTmats','ImParameters.mat')) - load(fullfile(resDir,'PTmats','ImParameters.mat')); + + clear scan + + if exist('resDir','var')&&~isempty(resDir) + fhconsole= gcf; + set(fhconsole,'Name',strcat('EASYconsole- ',char(resDir))) else - curDir=pwd; - cd(wCodeDir) - load ImParameters.mat - cd(curDir) - end + set(fhconsole,'Name','EASYconsole -Exp. Analysis NOT selected.') + end end -matDir= fullfile(openExppath,'\'); -mkdir(fullfile(matDir,'BkUp')); -% create supporting files -if ~exist(fullfile(resDir,'PrintResults')) - mkdir(fullfile(resDir,'PrintResults')); -end -if ~exist(fullfile(resDir,'figs')) - mkdir(fullfile(resDir,'figs')); -end -if ~exist(fullfile(resDir,'CFfigs')) - mkdir(fullfile(resDir,'CFfigs')); -end -if ~exist(fullfile(resDir,'PTmats')) - mkdir(fullfile(resDir,'PTmats')); -end -if ~exist(fullfile(resDir,'Fotos')) - mkdir(fullfile(resDir,'Fotos')); -end - -catch - cd(wCodeDir) -end -clear scan - -if exist('resDir','var')&&~isempty(resDir) - fhconsole= gcf; -set(fhconsole,'Name',strcat('EASYconsole- ',char(resDir))) -else - set(fhconsole,'Name','EASYconsole -Exp. Analysis NOT selected.') -end -end %% CALLBACKS %% -% function Parameters_Callback(~, ~, ~) -% global wCodeDir -% cd(wCodeDir) -% function CFparameters_Callback(~, ~, ~) -% global wCodeDir -% cd(wCodeDir) - - -% function RunCF_Callback(~, ~, ~) -% global wCodeDir -% cd(wCodeDir) -% try -% CcurveFitStartup -% catch ME -% cd(wCodeDir) -% end -% % callback for the 'Run' in the dropdown menu function run_Callback(~, ~, ~) -global wCodeDir -try -catch ME -cd(wCodeDir) + returnHome end -end -% function Dbase_Callback(~, ~, ~) -% global wCodeDir -% try -% catch ME -% cd(wCodeDir) -% end - -% function runImAnal_Callback(~, ~, ~) -% global wCodeDir -% cd(wCodeDir) -% try -% ImStartup -% catch ME -% cd(wCodeDir) -% EASYconsole -% end function runPlateMapPintool_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try -NImapPT -catch ME -cd(wCodeDir) -EASYconsole -end + returnHome + try + NImapPT + catch ME + returnHome + EASYconsole + end end function NImCFcombo_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try -par4Gbl_Main8c -catch -cd(wCodeDir) -EASYconsole -end + returnHome + try + par4Gbl_Main8c + catch + returnHome + EASYconsole + end end function runPlateImAnal_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try -NImStartupOnly -catch ME -cd(wCodeDir) -EASYconsole + returnHome + try + NImStartupOnly + catch ME + returnHome + EASYconsole + end end -end - -% function runCF_Callback(~, ~, ~) -% global wCodeDir -% try -% cd(wCodeDir) -% CcurveFitStartup -% catch ME -% cd(wCodeDir) -% end function PlateCFit_Callback(~, ~, ~) -global wCodeDir -global ExpOutmat -try -cd(wCodeDir) -NCstart -catch ME - cd(wCodeDir) -end + global ExpOutmat + returnHome + try + NCstart + catch ME + returnHome + end end -% function Gen_CF_GenORF_Callback(~, ~, ~) -% global wCodeDir -% try -% DgenCFoutWnum -% catch ME -% cd(wCodeDir) -% EASYconsole -% end - -% function ImParams_Callback(~, ~, ~) -% global wCodeDir -% try -% catch ME -% cd(wCodeDir) -% EASYconsole -% end - -%************************* -% function createPTmap_Callback(~, ~, ~) -% global wCodeDir -% try -% cd(wCodeDir) -% ImapPT() -% catch ME -% cd(wCodeDir) -% end -%************************* function GenPrintouts_Callback(~, ~, ~) end -% -% function Gen_YXmaster_Callback(~, ~, ~) -% global wCodeDir -% try -% Dgen_YXmasterFile -% catch ME -% cd(wCodeDir) -% EASYconsole -% end - -% function Gen_CurveFitOut_Callback(~, ~, ~) -% global wCodeDir -% try -% DgenLegCFout -% catch ME -% cd(wCodeDir) -% EASYconsole -% end - - -% function Gen_CF_withNums_Callback(~, ~, ~) -% global wCodeDir -% try -% DgenCFoutWnum -% catch ME -% cd(wCodeDir) -% EASYconsole -% end - - -% function Gen_CF_withNumsOrfsGenes_Callback(~, ~, ~) -% global wCodeDir -% try -% DgenCFoutWnumOrfgene -% catch ME -% cd(wCodeDir) -% EASYconsole -% end - -% function Gen_CF_withNumsOrfsGenesPerts_Callback(~, ~, ~) -% global wCodeDir -% try -% DgenCFoutWnumOrfgenePertsDev -% catch ME -% cd(wCodeDir) -% EASYconsole -% end - - -% function zx_Callback(~, ~, ~) function uploadExcelMP2DB_Callback(~, ~, ~) end -% function uploadYXmaster2DB_Callback(~, ~, ~) -% -% function Gen_CF4DB_Callback(~, ~, ~) -% -% -% function Gen_CF4DB_Extras4Review_Callback(~, ~, ~) -% -% -% function uploadCF2DB_Callback(~, ~, ~) - - -% -------------------------------------------------------------------- function runDMPexcel_Callback(~, ~, ~) -global wCodeDir -global ExpPath -try - DMPexcel2mat_2024winLinix %DMPexcel2mat_2023winLinix -catch ME - cd(wCodeDir) - EASYconsole -end + global ExpPath + try + DMPexcel2mat_2024winLinix %DMPexcel2mat_2023winLinix + catch ME + returnHome + EASYconsole + end end -% -------------------------------------------------------------------- + function runResults_DBcombo_Callback(~, ~, ~) -global wCodeDir -try - DgenResults240430 %similar but semicolons removed to restore so cmdLine display info. - %Dgen241010qhtcp %par4global -convert 1x1cell of 384cells to be like previous 1x384 cells CFparameter -catch ME - disp('Error in DgenResults240430') - cd(wCodeDir) - EASYconsole + + try + DgenResults240430 %similar but semicolons removed to restore so cmdLine display info. + %Dgen241010qhtcp %par4global -convert 1x1cell of 384cells to be like previous 1x384 cells CFparameter + catch ME + disp('Error in DgenResults240430') + returnHome + EASYconsole + end end -end -% -------------------------------------------------------------------- + + function Tools_Callback(~, ~, ~) end -% -------------------------------------------------------------------- + function runOverlayPlots_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try -DoverlayPlots2 -cd(wCodeDir) -EASYconsole -catch ME -cd(wCodeDir) -EASYconsole -end + returnHome + try + DoverlayPlots2 + returnHome + EASYconsole + catch ME + returnHome + EASYconsole + end end -% -------------------------------------------------------------------- + function runFotoStrip_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try -F_NImStartup_CentCir -cd(wCodeDir) -EASYconsole -catch ME -cd(wCodeDir) -EASYconsole -end + returnHome + try + F_NImStartup_CentCir + returnHome + EASYconsole + catch ME + returnHome + EASYconsole + end end -% -------------------------------------------------------------------- + function runDisplayFig_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try - UfigDisplay -catch ME -cd(wCodeDir) -EASYconsole -end + returnHome + try + UfigDisplay + catch ME + returnHome + EASYconsole + end end -% -------------------------------------------------------------------- + function runViewParameters_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try - -catch ME -cd(wCodeDir) -EASYconsole -end -end -% -------------------------------------------------------------------- -function QkviewN_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try + returnHome try - cd fullfile(ExpPath) - catch - if ispc cd c:\ - else - cd (fullfile('~')); - end - end - QkviewImages -catch ME -cd(wCodeDir) -EASYconsole -end + catch ME + returnHome + EASYconsole + end end -% -------------------------------------------------------------------- -function CFdisplay_Callback(~, ~, ~) -global wCodeDir -cd(wCodeDir) -try -NCsingleDisplay -cd(wCodeDir) -EASYconsole -catch ME -cd(wCodeDir) -EASYconsole + +function QkviewN_Callback(~, ~, ~) + returnHome + try + try + cd(fullfile(ExpPath)) + catch + if ispc + cd('C:\') + else + cd(fullfile('~')); + end + end + QkviewImages + catch ME + returnHome + EASYconsole + end end + + +function CFdisplay_Callback(~, ~, ~) + returnHome + try + NCsingleDisplay + returnHome + EASYconsole + catch ME + returnHome + EASYconsole + end end \ No newline at end of file