%% 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