EASYconsole2.m reformat

This commit is contained in:
2024-07-23 13:03:35 -04:00
parent 8a171a348c
commit cbc40c3cac

View File

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