From a672b66e1a52696082ede22ec68c0c3d61bc7f5d Mon Sep 17 00:00:00 2001 From: Bryan Roessler Date: Wed, 31 Jul 2024 21:48:10 -0400 Subject: [PATCH] Export more vars on declare --- workflow/qhtcp-workflow | 151 +++++++++++++++++++--------------------- 1 file changed, 72 insertions(+), 79 deletions(-) diff --git a/workflow/qhtcp-workflow b/workflow/qhtcp-workflow index 272be156..7c0befc6 100755 --- a/workflow/qhtcp-workflow +++ b/workflow/qhtcp-workflow @@ -582,12 +582,12 @@ easy() { * Click on the 'GenReports' dropdown and select 'Results_Generate.' * You will first see '!!ResultsElr_.txt' generated in the 'PrintResults' folder. * Refreshing will reveal an increasing file size until you see the '!!ResultsStd_.txt' being generated. - * When finished, the '!!ResultsStd_.txt' will be about the same file size and it should be used in the following StudiesQHTCP analysis. + * When finished, the '!!ResultsStd_.txt' will be about the same file size and it should be used in the following StudiesQHTCP analysis. - 'NoGrowth_.txt', and 'GrowthOnly_.txt' files will be generated in the 'PrintResults' folder. + 'NoGrowth_.txt', and 'GrowthOnly_.txt' files will be generated in the 'PrintResults' folder. EOF - EASY_DIR="$APPS_DIR/matlab/easy" + declare -gx EASY_DIR="$APPS_DIR/matlab/easy" script="$EASY_DIR/EASYconsole.m" # Copy templates @@ -604,14 +604,12 @@ easy() { # TODO will need to play with the -sd startup option to see what works (well) # Skip this step altogether in auto mode since it requires graphical interaction if ! ((YES)) && ask "Start EASY in MATLAB? This requires a GUI."; then - export PROJECT_SCANS_DIR PROJECT_DATE PROJECT_USER PROJECT - export EASY_DIR EASY_NAME EASY_SUFFIX EASY_RESULTS_DIR - export MASTER_PLATE_FILE DRUG_MEDIA_FILE + # export PROJECT_SCANS_DIR PROJECT_DATE PROJECT_USER PROJECT + # export EASY_DIR EASY_NAME EASY_SUFFIX EASY_RESULTS_DIR + # export MASTER_PLATE_FILE DRUG_MEDIA_FILE - choose_easy_results_dir - - DRUG_MEDIA_FILE="$EASY_RESULTS_DIR/DrugMedia_$PROJECT.xls" - MASTER_PLATE_FILE="$EASY_RESULTS_DIR/MasterPlate_$PROJECT.xls" + declare -gx DRUG_MEDIA_FILE="$EASY_RESULTS_DIR/DrugMedia_$PROJECT.xls" + declare -gx MASTER_PLATE_FILE="$EASY_RESULTS_DIR/MasterPlate_$PROJECT.xls" # Make EASY dirs debug "mkdir -p $EASY_RESULTS_DIR" @@ -631,9 +629,6 @@ easy() { # matlab -nosplash -sd "$PROJECT_SCANS_DIR" -r "run $script" matlab -nosplash -r "run $script" fi - - # Use the function return code see if we succeeded - # choose_easy_results_dir || (err "No EASY results found in $PROJECT_SCANS_DIR"; return 1) } @@ -642,18 +637,16 @@ module ezview # @description TODO WIP ezview() { debug "Running: ${FUNCNAME[0]}" - export PROJECT_SCANS_DIR PROJECT_DATE PROJECT_USER EZVIEW_DIR - export EASY_RESULTS_DIR - - EZVIEW_DIR="$APPS_DIR/matlab/ezview" + + declare -gx EZVIEW_DIR="$APPS_DIR/matlab/ezview" script="$EZVIEW_DIR/EZviewGui.m" - # Try to load EASY output dir fromENV or easy module - # Then scan for EASY results - [[ -z $EASY_RESULTS_DIR ]] && choose_easy_results_dir + if ! ((YES)) && ask "Start EASY in MATLAB? This requires a GUI."; then + # Make EZview dirs - # Make EZview dirs - matlab -nosplash -r "run $script" + # Start EZview + matlab -nosplash -r "run $script" + fi } @@ -1397,57 +1390,57 @@ get_studies() { } -submodule choose_easy_results_dir # -# @description Chooses an EASY scans directory if the information is undefined -# TODO: Standardize EASY output, it's hard to understand -# TODO eventually we could run this on multiple results dirs simultaneously with some refactoring -# @exitcode 0 if successfully choose an EASY results dir -# @set EASY_RESULTS_DIR string The working EASY output directory -choose_easy_results_dir() { - debug "Running: ${FUNCNAME[0]}" +# submodule choose_easy_results_dir # +# # @description Chooses an EASY scans directory if the information is undefined +# # TODO: Standardize EASY output, it's hard to understand +# # TODO eventually we could run this on multiple results dirs simultaneously with some refactoring +# # @exitcode 0 if successfully choose an EASY results dir +# # @set EASY_RESULTS_DIR string The working EASY output directory +# choose_easy_results_dir() { +# debug "Running: ${FUNCNAME[0]}" - declare -g EASY_RESULTS_DIR="$QHTCP_PROJECT_DIR/easy" + - # Always backup existing output - # This would happen if you ran the same experiment twice in one day, for instance - [[ -d $EASY_RESULTS_DIR ]] && backup "$EASY_RESULTS_DIR" +# # Always backup existing output +# # This would happen if you ran the same experiment twice in one day, for instance +# [[ -d $EASY_RESULTS_DIR ]] && backup "$EASY_RESULTS_DIR" - if [[ ! -d $EASY_RESULTS_DIR ]]; then - debug "mkdir $EASY_RESULTS_DIR" - mkdir "$EASY_RESULTS_DIR" - else - err "Could not create $EASY_RESULTS_DIR" - return 0 - fi +# if [[ ! -d $EASY_RESULTS_DIR ]]; then +# debug "mkdir $EASY_RESULTS_DIR" +# mkdir "$EASY_RESULTS_DIR" +# else +# err "Could not create $EASY_RESULTS_DIR" +# return 0 +# fi - # echo "Hit enter to use the default EASY results directory: $default_easy_results_dir" - # if ! (( YES )); then - # read -r -p "Or enter a custom directory name, example: $PROJECT" dirname - # [[ -z $dirname ]] && EASY_RESULTS_DIR="$default_easy_results_dir" && return 0 - # fi - # ((YES)) && return 0 - # # Let's get a little fancy - # shopt -s nullglob - # declare -la easy_results_dirs=( "$easy_out_dir/"*/ ) - # shopt -u nullglob - # # Sort the dirs - # mapfile -t easy_results_dirs < <(printf '%s\n' "${easy_results_dirs[@]}" | sort) - # last_index=$(( ${#easy_results_dirs} - 1 )) - # ((YES)) && EASY_RESULTS_DIR="${easy_results_dirs[$last_index]}" && return 0 - # echo "Multiple EASY results dirs found in $PROJECT_SCANS_DIR" - # echo "Here is a list: " - # for i in "${!easy_results_dirs[@]}"; do - # printf "%d. %s\n" "$((i+1))" "${easy_results_dirs[i]}" - # done - # printf "%s\n" "${easy_results_dirs[@]}" - # last_index=$(( ${#easy_results_dirs} - 1 )) - # read -r -p "Enter the item number to select EASY results directory, default ($last_index): " response - # [[ -z $response ]] && response=$last_index - # response=$(( response - 1 )) # bash arrays use zero indexing - # EASY_RESULTS_DIR="${easy_results_dirs[$response]}" - # EASY_RESULTS_FILES=("$EASY_RESULTS_DIR/"*"/PrintResults/!!"*) - # [[ ${#easy_results_dirs[@]} -gt 0 ]] -} +# # echo "Hit enter to use the default EASY results directory: $default_easy_results_dir" +# # if ! (( YES )); then +# # read -r -p "Or enter a custom directory name, example: $PROJECT" dirname +# # [[ -z $dirname ]] && EASY_RESULTS_DIR="$default_easy_results_dir" && return 0 +# # fi +# # ((YES)) && return 0 +# # # Let's get a little fancy +# # shopt -s nullglob +# # declare -la easy_results_dirs=( "$easy_out_dir/"*/ ) +# # shopt -u nullglob +# # # Sort the dirs +# # mapfile -t easy_results_dirs < <(printf '%s\n' "${easy_results_dirs[@]}" | sort) +# # last_index=$(( ${#easy_results_dirs} - 1 )) +# # ((YES)) && EASY_RESULTS_DIR="${easy_results_dirs[$last_index]}" && return 0 +# # echo "Multiple EASY results dirs found in $PROJECT_SCANS_DIR" +# # echo "Here is a list: " +# # for i in "${!easy_results_dirs[@]}"; do +# # printf "%d. %s\n" "$((i+1))" "${easy_results_dirs[i]}" +# # done +# # printf "%s\n" "${easy_results_dirs[@]}" +# # last_index=$(( ${#easy_results_dirs} - 1 )) +# # read -r -p "Enter the item number to select EASY results directory, default ($last_index): " response +# # [[ -z $response ]] && response=$last_index +# # response=$(( response - 1 )) # bash arrays use zero indexing +# # EASY_RESULTS_DIR="${easy_results_dirs[$response]}" +# # EASY_RESULTS_FILES=("$EASY_RESULTS_DIR/"*"/PrintResults/!!"*) +# # [[ ${#easy_results_dirs[@]} -gt 0 ]] +# } submodule documentation @@ -1575,16 +1568,16 @@ main() { # Loop over projects for PROJECT in "${PROJECTS[@]}"; do - declare -g PROJECT_SCANS_DIR="$SCANS_DIR/$PROJECT" - declare -g PROJECT_DATE="${PROJECT%"${PROJECT#????????}"}" # e.g. 20240723 - declare -g PROJECT_SUFFIX="${PROJECT#????????_*_}" - declare -g PROJECT_USER="${PROJECT#????????_}"; PROJECT_USER="${PROJECT_USER%%_*}" - declare -g STUDIES_ARCHIVE_FILE="$OUT_DIR/StudiesDataArchive.txt" - declare -g QHTCP_PROJECT_DIR="$OUT_DIR/$PROJECT" - declare -g QHTCP_TEMPLATE_DIR="$TEMPLATES_DIR/qhtcp" - declare -g STUDY_TEMPLATE_DIR="$TEMPLATES_DIR/exp" - declare -g STUDY_INFO_FILE="$QHTCP_PROJECT_DIR/StudyInfo.csv" - + declare -gx PROJECT_SCANS_DIR="$SCANS_DIR/$PROJECT" + declare -gx PROJECT_DATE="${PROJECT%"${PROJECT#????????}"}" # e.g. 20240723 + declare -gx PROJECT_SUFFIX="${PROJECT#????????_*_}" + declare -gx PROJECT_USER="${PROJECT#????????_}"; PROJECT_USER="${PROJECT_USER%%_*}" + declare -gx STUDIES_ARCHIVE_FILE="$OUT_DIR/StudiesDataArchive.txt" + declare -gx QHTCP_PROJECT_DIR="$OUT_DIR/$PROJECT" + declare -gx QHTCP_TEMPLATE_DIR="$TEMPLATES_DIR/qhtcp" + declare -gx STUDY_TEMPLATE_DIR="$TEMPLATES_DIR/exp" + declare -gx STUDY_INFO_FILE="$QHTCP_PROJECT_DIR/StudyInfo.csv" + declare -gx EASY_RESULTS_DIR="$QHTCP_PROJECT_DIR/easy" if ((DEBUG)); then declare -p SCANS_DIR OUT_DIR TEMPLATES_DIR APPS_DIR \ PROJECTS PROJECT \