% Launch the MATLAB EASY console 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. % 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(~, ~, ~) returnHome end % Load Experiment Button Interface function LoadExp_Callback(~, ~, ~) returnHome 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 % put all users on same working directory 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 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 returnHome disp('Error Creating a New Experiment') 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 function LoadDatFile_Callback(~, ~, ~) global openExpfile global openExppath global SWnewExp global ExpOutmat global ExpPath global matDir global resDir global wCodeDir global fhconsole global ImParMat returnHome % 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 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 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 returnHome 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 %% % callback for the 'Run' in the dropdown menu function run_Callback(~, ~, ~) returnHome end function runPlateMapPintool_Callback(~, ~, ~) returnHome try NImapPT catch ME returnHome EASYconsole end end function NImCFcombo_Callback(~, ~, ~) returnHome try par4Gbl_Main8c catch returnHome EASYconsole end end function runPlateImAnal_Callback(~, ~, ~) returnHome try NImStartupOnly catch ME returnHome EASYconsole end end function PlateCFit_Callback(~, ~, ~) global ExpOutmat returnHome try NCstart catch ME returnHome end end function GenPrintouts_Callback(~, ~, ~) end function uploadExcelMP2DB_Callback(~, ~, ~) end function runDMPexcel_Callback(~, ~, ~) global ExpPath try DMPexcel2mat_2024winLinix %DMPexcel2mat_2023winLinix catch ME returnHome EASYconsole end end function runResults_DBcombo_Callback(~, ~, ~) 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 function Tools_Callback(~, ~, ~) end function runOverlayPlots_Callback(~, ~, ~) returnHome try DoverlayPlots2 returnHome EASYconsole catch ME returnHome EASYconsole end end function runFotoStrip_Callback(~, ~, ~) returnHome try F_NImStartup_CentCir returnHome EASYconsole catch ME returnHome EASYconsole end end function runDisplayFig_Callback(~, ~, ~) returnHome try UfigDisplay catch ME returnHome EASYconsole end end function runViewParameters_Callback(~, ~, ~) returnHome try catch ME returnHome EASYconsole end end 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