From 8a171a348ced50d2936a54419a7b9b2cbe46ee88 Mon Sep 17 00:00:00 2001 From: Bryan Roessler Date: Tue, 23 Jul 2024 12:35:04 -0400 Subject: [PATCH] EASYconsole2.m rewrite --- workflow/templates/easy/EASYconsole2.m | 690 +++++++++++++++++++++++++ 1 file changed, 690 insertions(+) create mode 100644 workflow/templates/easy/EASYconsole2.m diff --git a/workflow/templates/easy/EASYconsole2.m b/workflow/templates/easy/EASYconsole2.m new file mode 100644 index 00000000..d538bdad --- /dev/null +++ b/workflow/templates/easy/EASYconsole2.m @@ -0,0 +1,690 @@ +%% 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 + +function varargout = EASYconsole(varargin) + % initialize global variables for function EASYconsole + global ExpOutmat + global ExpPath + global fhconsole + global resDir + global wCodeDir + global ImParMat + + % changing directory to wCodeDir + returnHome + +%% GUI INTERFACE DESIGN %% + % beginning of GUI formation & design, see help GUI or help GUIDE in + % command window for more information + gui_Singleton = 1; + gui_State = struct('gui_Name', mfilename, ... + 'gui_Singleton', gui_Singleton, ... + 'gui_OpeningFcn', @EASYconsole_OpeningFcn, ... + 'gui_OutputFcn', @EASYconsole_OutputFcn, ... + 'gui_LayoutFcn', [] , ... + 'gui_Callback', []); + if nargin && ischar(varargin{1}) + gui_State.gui_Callback = str2func(varargin{1}); + end + + if nargout + [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); + else + gui_mainfcn(gui_State, varargin{:}); + end +end + + +% Try to enter WCodeDir +function returnHome + global wCodeDir + try + cd(wCodeDir) + catch + msgbox('Failed to enter selected default directory so starting search at root.'); + if ispc + cd(fullfile('C:\')); + elseif (isunix | ismac) + cd(fullfile('/mnt/data')); + else + msgbox('Unknown platform') + end + end +end + +% GUI +% Easyconcole_OpeningFcn executes just before the EASYconsole GUI is made visible. +% This function has no output args, see OutputFcn. +% hObject--handle to figure +% eventdata reserved - to be defined in a future version of MATLAB +% handles--structure with handles and user data (see GUIDATA) +% varargin--input arguments to EASYconsole (see VARARGIN) +function EASYconsole_OpeningFcn(hObject, ~, handles, varargin) + + global ExpOutmat + global ExpPath + global fhconsole + global resDir + global wCodeDir + global ImParMat + + % Choose default command line output for EASYconsole + handles.output = hObject; + + % Update handles structure + guidata(hObject, handles); + + %Figure header, Toolbar, etc. Setup + fhconsole=gcf; + set(fhconsole,'Toolbar','none'); + fhconsole=gcf; + + if exist('resDir','var')&&~isempty(resDir) + set(fhconsole,'Name',strcat('EASYconsole- ',char(resDir))); + else + 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) + + % 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) +end +% Load Experiment Button Interface +function LoadExp_Callback(~, ~, ~) + global wCodeDir + cd(wCodeDir) +end +% New Experiment Button Interface +function NewExpDat_Callback(~, ~, ~) + global newExpfile + global newExppath + global SWnewExp + global ExpOutmat + global ExpPath + global matDir + global resDir + global wCodeDir + 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('/')); + end + end + if ismac + cd(wcode) %JH has argued strongly to send user to code directory + 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')); + 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')); +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 +function LoadDatFile_Callback(~, ~, ~) +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) + + % 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('/')); + end + end + if ismac + cd(wcode) %JH has argued strongly to send user to code directory + 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) + end +else %If Epson 10Plate Scans Then> + if exist(fullfile(resDir,'PTmats','ImParameters.mat')) + load(fullfile(resDir,'PTmats','ImParameters.mat')); + else + curDir=pwd; + cd(wCodeDir) + load ImParameters.mat + cd(curDir) + 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) +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 +end + +function NImCFcombo_Callback(~, ~, ~) +global wCodeDir +cd(wCodeDir) +try +par4Gbl_Main8c +catch +cd(wCodeDir) +EASYconsole +end +end + +function runPlateImAnal_Callback(~, ~, ~) +global wCodeDir +cd(wCodeDir) +try +NImStartupOnly +catch ME +cd(wCodeDir) +EASYconsole +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 +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 +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 +end +end +% -------------------------------------------------------------------- +function Tools_Callback(~, ~, ~) +end + +% -------------------------------------------------------------------- +function runOverlayPlots_Callback(~, ~, ~) +global wCodeDir +cd(wCodeDir) +try +DoverlayPlots2 +cd(wCodeDir) +EASYconsole +catch ME +cd(wCodeDir) +EASYconsole +end +end + +% -------------------------------------------------------------------- +function runFotoStrip_Callback(~, ~, ~) +global wCodeDir +cd(wCodeDir) +try +F_NImStartup_CentCir +cd(wCodeDir) +EASYconsole +catch ME +cd(wCodeDir) +EASYconsole +end +end + +% -------------------------------------------------------------------- +function runDisplayFig_Callback(~, ~, ~) +global wCodeDir +cd(wCodeDir) +try + UfigDisplay +catch ME +cd(wCodeDir) +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 + try + cd fullfile(ExpPath) + catch + if ispc cd c:\ + else + cd (fullfile('~')); + end + end + QkviewImages +catch ME +cd(wCodeDir) +EASYconsole +end +end + +% -------------------------------------------------------------------- +function CFdisplay_Callback(~, ~, ~) +global wCodeDir +cd(wCodeDir) +try +NCsingleDisplay +cd(wCodeDir) +EASYconsole +catch ME +cd(wCodeDir) +EASYconsole +end +end \ No newline at end of file