Mostly documentation updates
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright 2024 Bryan C. Roessler
|
||||
#
|
||||
# This is a flexible yet opinionated analysis workflow for the Hartman Lab
|
||||
# It contains a mixture of code/pseudocode and shouldn't be run until this message is removed
|
||||
# This program contains a mixture of code/pseudocode and shouldn't be run until this message is removed
|
||||
#
|
||||
# Allow indirect functions
|
||||
# shellcheck disable=SC2317
|
||||
@@ -10,7 +8,14 @@
|
||||
# shdoc info
|
||||
# @name HartmanLabWorkflow
|
||||
# @brief One script to rule them all (see: xkcd #927)
|
||||
# @description Executes the Hartman Lab image analysis workflow
|
||||
# @description A flexible yet opinionated analysis framework for the Hartman Lab
|
||||
# There should be at least 4 subdirectories to organize Q-HTCP data and analysis. The parent directory is simply called 'Q-HTCP' and the 4 are subdirectories described below (Fig. 1):
|
||||
# * **ExpJobs** - This directory contains raw image data and image analysis results for the entire collection of Q-HTCP experiments. We recommend each subdirectory within 'ExpJobs" should represent a single Q-HTCP experiment and be named using the following convention (AB yyyy_mmdd_PerturbatationsOfInterest): experimenter initials ('AB '), date ('yyyy_mmdd_'), and brief description ('drugs_medias'). Each subdirectory contains the Raw Image Folders for that experiment (a series of N folders with successive integer labels 1 to N, each folder containing the time series of images for a single cell array). It also contains a user-supplied subfolder, which must be named ''MasterPlateFiles" and must contain two excel files, one named 'DrugMedia_experimentdescription' and the other named 'MasterPlate_experimentdescription'. The bolded part of the file name including the underscore is required. The italicized part is optional description. Generally the 'DrugMedia_' file merits description. If the standard MasterPlate_Template file is being used, it's not needed to customize then name. On the other hand if the template is modified, it is recommended to rename it and describe accordingly - a useful convention is to use the same name for the MP files as given to the experiment (i.e, the parent ExpJobs subdirectory described above) after the underscores. The 'MasterPlate_' file contain associated cell array information (culture IDs for all of the cell arrays in the experiment) while the 'DrugMedia_' file contains information about the media that the cell array is printed to. Together they encapsulate and define the experimental design. The QHTCPImageFolders and 'MasterPlateFiles' folder are the inputs for image analysis with EASY software. As further described below, EASY will automatically generate a 'Results' directory (within the ExpJobs/'ExperimentJob' folder) with a name that consists of a system-generated timestamp and an optional short description provided by the user (Fig.2). The 'Results' directory is created and entered, using the "File >> New Experiment" dropdown in EASY. Multiple 'Results' files may be created (and uniquely named) within an 'ExperimentJob' folder.
|
||||
# * **EASY** - This directory contains the GUI-enabled MATLAB software to accomplish image analysis and growth curve fitting. EASY analyzes Q-HTCP image data within an 'ExperimentJob'' folder (described above; each cell array has its own folder containing its entire time series of images). EASY analysis produces image quantification data and growth curve fitting results for each cell array; these results are subsequently assembled into a single file and labeled, using information contained in the 'MasterPlate_' and 'DrugMedia_' files in the 'MasterPlateFiles' subdirectory. The final files (named '!!ResultsStd_.txt' or '!!ResultsELr_.txt') are produced in a subdirectory that EASY creates within the 'ExperimentJob' folder, named '/ResultsTimeStampDesc/PrintResults' (Fig. 2). The /EASY directory is simply where the latest EASY version resides (additional versions in development or legacy versions may also be stored there). Note: The raw data inputs and result outputs for EASY are kept in the 'ExpJobs' directory. EASY also outputs a '.mat' file that is stored in the 'matResults' folder and is named with the TimeStamp and user-provided name appended to the 'Results' folder name when 'New Experiment' is executed from the 'File' Dropdown menu in the EASY console.
|
||||
# * **EZview** - This directory contains the GUI-enabled MATLAB software to conveniently and efficiently mine the raw cell array image data for a Q-HTCP experiment. It takes the Results.m file (created by EASY software) as an input and permits the user to navigate through the raw image data and growth curve results for the experiment. The /EZview provides a place for storing the the latest EZview version (as well as other EZview versions). EZview provides a GUI for examining the EASY results as provided in the …/matResults/… .mat file.
|
||||
# * **StudiesQHTCP** - A software composite (MATLAB, JAVA, R, Python, Perl, Shell) that takes growth curve results (created by EASY software) as an input and successively generates interaction Z-score results, which are used for graphing gene interactions, Clustering, Gene Ontology analysis, and other ways of interpreting and visualizing the experimental quality and outcomes. {The /StudiesQHTCP folder contains the ordered command line scripts that call sets of other scripts to perform data selection and adaptation from the extracted text results spreadsheet found in the /ExpJobs/experiment name/Results…/PrintResults/ folder. In particular the 'user customize interactionCode4experiment.R' file. It also contains a multitude of R generated plots based on the selected data and possible adaptation. All clustering and Gene ontology analysis are derived from the 'ZScores_Interaction.csv' file found in the/ZScores subdirectory.}
|
||||
# * **Master Plates** - This optional folder is a convenient place to store copies of the 'MasterPlate_' and a 'DrugMedia_' file templates, along with previously used files that may have been modified and could be reused or further modified to enable future analyses. These two file types are required in the 'MasterPlateFiles' folder, which catalogs experimental information specific to individual Jobs in the ExpJobs folder, as described further below.
|
||||
#
|
||||
# @option -p<value> | --project=<value> Include one or more projects in the analysis
|
||||
# @option -i<value> | --include=<value> Include one or more modules in the analysis (default: all modules)
|
||||
# @option -x<value> | --exclude=<value> Exclude one or more modules in the analysis
|
||||
@@ -20,16 +25,19 @@
|
||||
# @option -h | --help Print help message and exit (overrides other options)
|
||||
|
||||
DEBUG=1 # Turn debugging ON by default during development
|
||||
shopt -s extglob
|
||||
shopt -s extglob# Overview and Introduction to Directory Structure
|
||||
|
||||
|
||||
# @section Libraries
|
||||
# @description Change these variables to use different libraries
|
||||
JAVA="${JAVA:-java}"
|
||||
PYTHON="${PYTHON:-python3}"
|
||||
PERL="${PERL:-perl}"
|
||||
RSCRIPT="${RSCRIPT:-Rscript}"
|
||||
|
||||
# @section Help
|
||||
# @description Print a helpful message
|
||||
# @noargs
|
||||
print_help() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
|
||||
@@ -85,7 +93,13 @@ print_help() {
|
||||
|
||||
|
||||
# @section User Input
|
||||
# @set PROJECTS array List of projects to work on
|
||||
# @set INCLUDE_MODULES array List of modules to run
|
||||
# @set EXCLUDE_MODULES array List of modules not to run
|
||||
# @set DEBUG int Turn debugging on
|
||||
# @set YES int Turn assume yes on
|
||||
# @description Creates array and switches from user input
|
||||
# parse_input() takes all of the arguments passed to the script
|
||||
parse_input() {
|
||||
debug "Running: ${FUNCNAME[0]}" "$@"
|
||||
|
||||
@@ -145,12 +159,15 @@ parse_input() {
|
||||
}
|
||||
|
||||
# @section Helper functions
|
||||
# @arg ALL_MODULES array A list of all available modules (that have been passed to module())
|
||||
# @internal
|
||||
module() {
|
||||
debug "Adding $1 module"
|
||||
ALL_MODULES+=("$1")
|
||||
declare -gA "$1"
|
||||
}
|
||||
# @arg ALL_SUBMODULES array A list of all available modules (that have been passed to module())
|
||||
# @internal
|
||||
submodule() {
|
||||
debug "Adding $1 submodule"
|
||||
ALL_SUBMODULES+=("$1")
|
||||
@@ -183,20 +200,51 @@ debug() { (( DEBUG )) && echo "Debug: $*"; }
|
||||
# @description A module contains a cohesive set of actions/experiments to run on a project
|
||||
# Use a module when:
|
||||
# * Building a new type of analysis from scratch
|
||||
# * Generates project directories
|
||||
# * Can combine other modules and submodules
|
||||
#
|
||||
#
|
||||
# * Generating project directories
|
||||
# * Grouping multiple submodules (and modules) into a larger task
|
||||
# * Dictating the ordering of multiple submodules
|
||||
# * Modules should competently handle pushd and popd for their submodules if they do not reside in the SCANS/PROJECT_DIR
|
||||
|
||||
|
||||
module install_dependencies
|
||||
# @section Install dependencies
|
||||
# @description Installs dependencies for the workflow
|
||||
# Software - These can all be downloaded from the respective online platforms for each operating system
|
||||
# R
|
||||
# RStudio (Why?)
|
||||
# Perl
|
||||
# Java
|
||||
# MATLAB
|
||||
#
|
||||
# For MacOS: It is recommended that MacOS users download Homebrew for easy installation of the following packages.
|
||||
# The command prompt to download Homebrew followed by the prompts to download the necessary packages are listed below.
|
||||
# export HOMEBREW_BREW_GIT_REMOTE=https://github.com/Homebrew/brew
|
||||
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
# cpan File::Map ExtUtils::PkgConfig GD GO::TermFinder
|
||||
# brew install graphiz gd pdftk-java pandoc shdoc nano rsync
|
||||
#
|
||||
# For Linux:
|
||||
# cpan File::Map ExtUtils::PkgConfig GD GO::TermFinder
|
||||
# apt-get install graphviz libgd-dev pdftk-java pandoc shdoc nano rsync
|
||||
# or
|
||||
# dnf install graphviz pandoc pdftk-java gd-devel shdoc nano rsync
|
||||
#
|
||||
# For R:
|
||||
# install.packages(“BiocManager”)
|
||||
# BiocManager::install(“org.Sc.sgd.db”)
|
||||
# install.packages(c(‘ontologyIndex’, 'ggrepel', 'tidyverse', 'sos', 'openxlsx'), dep=TRUE)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
install_dependencies() {
|
||||
debug "Running: ${FUNCNAME[0]}" "$@"
|
||||
|
||||
# Dependency arrays
|
||||
depends_rpm=(graphviz pandoc pdftk-java gd-devel shdoc)
|
||||
depends_deb=(graphviz pandoc pdftk-java libgd-dev shdoc)
|
||||
depends_brew=(graphiz pandoc gd pdftk-java shdoc)
|
||||
depends_rpm=(graphviz pandoc pdftk-java gd-devel shdoc nano rsync)
|
||||
depends_deb=(graphviz pandoc pdftk-java libgd-dev shdoc nano rsync)
|
||||
depends_brew=(graphiz pandoc gd pdftk-java shdoc nano rsync)
|
||||
depends_perl=(File::Map ExtUtils::PkgConfig GD GO::TermFinder)
|
||||
depends_r=(BiocManager ontologyIndex ggrepel tidyverse sos openxlsx ggplot2
|
||||
plyr extrafont gridExtra gplots stringr plotly ggthemes pandoc rmarkdown)
|
||||
@@ -244,32 +292,46 @@ install_dependencies() {
|
||||
}
|
||||
depends_r_to_string
|
||||
|
||||
debug "Rscript -e install.packages(c(\"$depends_r_str), dep=TRUE, repos=\"https://cloud.r-project.org\")"
|
||||
Rscript -e "install.packages(c(\"$depends_r_str), dep=TRUE, repos=\"https://cloud.r-project.org\")"
|
||||
Rscript -e "BiocManager::install(\"${depends_bioc[0]}\")"
|
||||
debug "$RSCRIPT -e install.packages(c(\"$depends_r_str), dep=TRUE, repos=\"https://cloud.r-project.org\")"
|
||||
"$RSCRIPT" -e "install.packages(c(\"$depends_r_str), dep=TRUE, repos=\"https://cloud.r-project.org\")"
|
||||
"$RSCRIPT" -e "BiocManager::install(\"${depends_bioc[0]}\")"
|
||||
}
|
||||
|
||||
|
||||
module init_job
|
||||
# @section Initialize a new job in the scans directory
|
||||
# @description Create a new ExpJobs project
|
||||
module init_project
|
||||
# @section Initialize a new project in the scans directory
|
||||
# @description This function creates and initializes project directories
|
||||
# We make the general assumption that a project will have most modules run on it and handle
|
||||
# This module is responsible for the following tasks:
|
||||
# * Initializing a project directory in the scans directory
|
||||
# * Initializing a QHTCP project directory in the qhtcp directory
|
||||
#
|
||||
|
||||
# TODO Copy over source image directories from robot - are these alse named by the ExpJobs name?
|
||||
init_job() {
|
||||
# TODO Suggest renaming ExpJobs to something like "scans" or "images"
|
||||
# TODO Best practices:
|
||||
# * Copy over the images from the robot and then DO NOT TOUCH that directory except to copy from it
|
||||
# * Write-protect (read-only) if we need to
|
||||
# * Copy data from scans/images directory to the project working dir and then begin analysis
|
||||
# * You may think...but doesn't that 2x data?
|
||||
# * No, btrfs subvolume uses reflinks, only data that is altered will be duplicated
|
||||
# * Most of the data are static images that are not written to, so the data is deduplicated
|
||||
# TODO Where are MasterPlate and DrugMedia blank sheets?
|
||||
init_project() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
|
||||
if [[ -d $SCAN_DIR ]]; then
|
||||
ask "$SCAN_DIR already exists, re-initialize?" || return 0
|
||||
else
|
||||
ask "Initialize a new project at $SCAN_DIR?" || return 1
|
||||
mkdir -p "$SCAN_DIR"
|
||||
fi
|
||||
# We handle this in main() and pushd to it
|
||||
# But do it one more time in case this is run as a module
|
||||
[[ -d $SCAN_DIR ]] ||
|
||||
( mkdir -p "$SCAN_DIR" && pushd "$SCAN_DIR" || return 1 )
|
||||
|
||||
ask "Initialize a project at $SCAN_DIR?" || return 1
|
||||
|
||||
[[ -d $SCAN_DIR/MasterPlateFiles ]] || mkdir -p "$SCAN_DIR/MasterPlateFiles"
|
||||
|
||||
DRUG_MEDIA_FILE="$SCAN_DIR/MasterPlateFiles/DrugMedia_$PROJECT.xls"
|
||||
MASTER_PLATE_FILE="$SCAN_DIR/MasterPlateFiles/MasterPlate_$PROJECT.xls"
|
||||
|
||||
# TODO Where are the actual templates?
|
||||
for f in $DRUG_MEDIA_FILE $MASTER_PLATE_FILE; do
|
||||
touch "$f"
|
||||
done
|
||||
@@ -279,18 +341,110 @@ init_job() {
|
||||
module easy
|
||||
# @section EASY
|
||||
# @description Start an EASY analysis
|
||||
# The QHTCPImageFolders and ‘MasterPlateFiles’ folder are the inputs for image analysis with EASY software.
|
||||
# EASY will automatically generate a ‘Results’ directory (within the ExpJobs/‘ExperimentJob’ folder) w/ timestamp and an optional short description provided by the user (Fig.2).
|
||||
# The ‘Results’ directory is created and entered, using the “File >> New Experiment” dropdown in EASY.
|
||||
# Multiple ‘Results’ files may be created (and uniquely named) within an ‘ExperimentJob’ folder.
|
||||
# * The QHTCPImageFolders and 'MasterPlateFiles' folder are the inputs for image analysis with EASY software.
|
||||
# * EASY will automatically generate a 'Results' directory (within the ExpJobs/'ExperimentJob' folder) w/ timestamp and an optional short description provided by the user (Fig.2).
|
||||
# * The 'Results' directory is created and entered, using the "File >> New Experiment" dropdown in EASY.
|
||||
# * Multiple 'Results' files may be created (and uniquely named) within an 'ExperimentJob' folder.
|
||||
#
|
||||
# Directory Layout
|
||||
# EASY
|
||||
# /figs
|
||||
# /PTmats
|
||||
# datatipp.m
|
||||
# DgenNoGrowthResults200809.m
|
||||
# DMPexcel2mat_2023winLinix.m
|
||||
# EASYconsole.fig
|
||||
# EASYconsole.m
|
||||
# NCdisplayGui.m
|
||||
# NCfitImCFparforFailGbl2.m
|
||||
# NCscurImCF_3parfor.m
|
||||
# NCsingleDisplay.m
|
||||
# NIcircle.m
|
||||
# NImParamRadiusGui.m
|
||||
# NIscanIntensBGpar4GblFnc.m
|
||||
# p4loop8c.m
|
||||
# par4Gbl_Main8c.m
|
||||
# par4GblFnc8c.m
|
||||
#
|
||||
# To analyze a new Q-HTCP experiment:
|
||||
# * Open the EASY Software.
|
||||
# * Open 'EstartConsole.m' with MATLAB
|
||||
# * Click the Run icon (play button)
|
||||
# * When prompted, click "Change Folder" (do not select "Add to Path").
|
||||
# * In the pop-up display, select from the 'File' dropdown: 'New Experiment'.
|
||||
# * From the pop-up, choose where to save the new file.
|
||||
# * Navigate to the relevant job in the ExpJobs folder, name the file accordingly, and click 'save'.
|
||||
# * The newly created .mat file in the newly created Results folder will automatically be loaded.
|
||||
# * The file name will then be automatically appended by the code with the current date information (e.g. 'A1.mat' will become 'Results2023-07-19A1)
|
||||
# * If the experiment has already been created, it can be reloaded by clicking 'Load Experiment' instead of 'New Experiment' and selecting the relevant results
|
||||
# * In the pop-up display, click on the 'Run' dropdown menu and select 'Image CurveFit ComboAnalysis'.
|
||||
# * In the updated pop-up, choose/highlight all desired image folders for analysis (this is generally all of the folders, since only the ones that need analysis should be there) and then click on 'continue'.
|
||||
# * As the program is running, updates will periodically appear in the Command Window; there will be an initial pause at "Before call to NIscanIntens…..".
|
||||
# * When the curve fitting is finished, the EASY console will pop back up.
|
||||
# * Check to see the completed analysis results in the newly created 'PrintResults' Folder, inside of the 'Results' Folder.
|
||||
# * Other folders ('CFfigs', 'figs', 'Fotos') are created for later optional use and will be empty.
|
||||
# * **NOTE:** The image analysis is completed independent of labeling the data (strains, media type, etc. Labeling happens next with the 'GenReports' function).
|
||||
# * Click on the 'GenReports' dropdown and select 'DrugMediaMP Generate .mat'
|
||||
# * **NOTE:** The 'MasterPlate' and 'DrugMedia' files have very specific formats and should be completed from a template.
|
||||
# * The Masterplate file must be exact (it must contain all and only the strains that were actually tested).
|
||||
# * For example, if only part of a library is tested, the complete library file must be modified to remove irrelevant strains.
|
||||
# * You will be prompted to first select the 'MasterPlate' file. You will need to navigate away from the working directory to get to it.
|
||||
# * It is fine for the 'MasterPlate_' file to be .xlsx (or .xls), and if you don't see it in the popup window, then change the file type from '.xls' to "all files" and then select it.
|
||||
# * Once it is selected, a report of the number of master plates in the file will pop up; when the report appears, assuming it is correct, click on 'OK'.
|
||||
# * You will then be prompted to select the 'DrugMedia' file from the relevant job folder. You will automatically return to the correct prior directory location.
|
||||
# * Choose it and click 'OK'. You may see a warning about column headers being modified, but that's ok.
|
||||
# * This will create an additional file in the 'MasterPlatesFiles' folder named 'MPDMmat.mat'
|
||||
# * 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.
|
||||
# * 'NoGrowth_.txt', and 'GrowthOnly_.txt' files will be generated in the 'PrintResults' folder.
|
||||
#
|
||||
easy() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
EASY="/mnt/data/EASY/EasyDev2024/BU/EASY240430AppExported/EstartConsole.m"
|
||||
|
||||
pushd "$SCAN_DIR" || return 1
|
||||
|
||||
cat <<-EOF
|
||||
To analyze a new Q-HTCP experiment:
|
||||
* Open the EASY Software.
|
||||
* Open 'EstartConsole.m' with MATLAB
|
||||
* Click the Run icon (play button)
|
||||
* When prompted, click "Change Folder" (do not select "Add to Path").
|
||||
* In the pop-up display, select from the 'File' dropdown: 'New Experiment'.
|
||||
* From the pop-up, choose where to save the new file.
|
||||
* Navigate to the relevant job in the ExpJobs folder, name the file accordingly, and click 'save'.
|
||||
* The newly created .mat file in the newly created Results folder will automatically be loaded.
|
||||
* The file name will then be automatically appended by the code with the current date information (e.g. 'A1.mat' will become 'Results2023-07-19A1)
|
||||
* If the experiment has already been created, it can be reloaded by clicking 'Load Experiment' instead of 'New Experiment' and selecting the relevant results
|
||||
* Next, in the pop-up display, click on the 'Run' dropdown menu and select 'Image CurveFit ComboAnalysis'.
|
||||
* In the updated pop-up, choose/highlight all desired image folders for analysis (this is generally all of the folders, since only the ones that need analysis should be there) and then click on 'continue'.
|
||||
* As the program is running, updates will periodically appear in the Command Window; there will be an initial pause at "Before call to NIscanIntens…..".
|
||||
* When the curve fitting is finished, the EASY console will pop back up.
|
||||
* Check to see the completed analysis results in the newly created 'PrintResults' Folder, inside of the 'Results' Folder.
|
||||
* Other folders ('CFfigs', 'figs', 'Fotos') are created for later optional use and will be empty.
|
||||
* NOTE: The image analysis is completed independent of labeling the data (strains, media type, etc. Labeling happens next with the 'GenReports' function).
|
||||
* Next, click on the 'GenReports' dropdown and select 'DrugMediaMP Generate .mat'
|
||||
* NOTE: The 'MasterPlate' and 'DrugMedia' files have very specific formats and should be completed from a template.
|
||||
* The Masterplate file must be exact (it must contain all and only the strains that were actually tested).
|
||||
* For example, if only part of a library is tested, the complete library file must be modified to remove irrelevant strains.
|
||||
* You will be prompted to first select the 'MasterPlate' file. You will need to navigate away from the working directory to get to it.
|
||||
* It is fine for the 'MasterPlate_' file to be .xlsx (or .xls), and if you don't see it in the popup window, then change the file type from '.xls' to "all files" and then select it.
|
||||
* Once it is selected, a report of the number of master plates in the file will pop up; when the report appears, assuming it is correct, click on 'OK'.
|
||||
* You will then be prompted to select the 'DrugMedia' file from the relevant job folder. You will automatically return to the correct prior directory location.
|
||||
* Choose it and click 'OK'. You may see a warning about column headers being modified, but that's ok.
|
||||
* This will create an additional file in the 'MasterPlatesFiles' folder named 'MPDMmat.mat'
|
||||
* 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.
|
||||
|
||||
'NoGrowth_.txt', and 'GrowthOnly_.txt' files will be generated in the 'PrintResults' folder.
|
||||
EOF
|
||||
|
||||
# Launch graphical matlab if the user wants
|
||||
ask "Start EASY in MATLAB? This requires a GUI." && matlab -nosplash -r "$EASY"
|
||||
! ((YES)) && ask "Start EASY in MATLAB? This requires a GUI." && matlab -nosplash -r "$EASY"
|
||||
|
||||
# glob EASY output and make sure it exists
|
||||
shopt -s nullglob
|
||||
@@ -316,7 +470,8 @@ easy() {
|
||||
|
||||
|
||||
module ezview
|
||||
# @section EZView
|
||||
# @section EZview
|
||||
# @description TODO WIP
|
||||
ezview() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
EZVIEW_DIR="/mnt/data/EZVIEW"
|
||||
@@ -326,53 +481,433 @@ ezview() {
|
||||
|
||||
module qhtcp
|
||||
# @section QHTCP
|
||||
# @description Main QHTCP module (functional rewrite of REMcMaster3.sh)
|
||||
# @description System for Multi-QHTCP-Experiment Gene Interaction Profiling Analysis
|
||||
# * Functional rewrite of REMcMaster3.sh
|
||||
# * Order the experiment names in the way you want them to appear in the REMc heatmaps
|
||||
# * Added a newline character to the end of StudyInfo.csv so it is a valid text file
|
||||
# TODO Suggest renaming StudiesQHTCP to something like qhtcp qhtcp_output or output
|
||||
# TODO Store StudyInfo somewhere better
|
||||
# TODO Move (hide) the study template somewhere else
|
||||
# Rerunning this module uses rsync --update to only copy files that are newer in the template
|
||||
# If you wish for the template to overwrite your changes, delete the file from your QHTCP project dir
|
||||
#
|
||||
# * StudyInfo.csv instructions:
|
||||
# * In your files directory, open the /Code folder, edit the 'StudyInfo.csv' spreadsheet, and save it as a 'csv' file to give each experiment the labels you wish to be used for the plots and specific files.
|
||||
# * Enter the desired Experiment names- **order the names in the way you want them to appear in the REMc heatmaps; and make sure to run the front end programs (below) in the correct order (e.g., run front end in 'exp1' folder to call the !!Results file for the experiment you named as exp1 in the StudyInfo.csv file)
|
||||
# * The GTA and pairwise, TSHeatmaps, JoinInteractions and GTF Heatmap scripts use this table to label results and heatmaps in a meaningful way for the user and others. The BackgroundSD and ZscoreJoinSD fields will be filled automatically according to user specifications, at a later step in the QHTCP study process.
|
||||
#
|
||||
# * MATLAB ExpFrontend.m was made for recording into a spreadsheet ('StudiesDataArchive.txt') the date and files used (i.e., directory paths to the !!Results files used as input for Z-interaction script) for each multi-experiment study.
|
||||
# Give each experiment the labels you wish to be used for the plots and specific files.
|
||||
# Enter the desired Experiment names and order them in the way you want them to appear in the REMc heatmaps;
|
||||
# Run the front end MATLAB programs in the correct order (e.g., run front end in 'exp1' folder to call the !!Results file for the experiment you named as exp1 in the StudyInfo.csv file)
|
||||
# The GTA and pairwise, TSHeatmaps, JoinInteractions and GTF Heatmap scripts use this table to label results and heatmaps in a meaningful way for the user and others.
|
||||
# The BackgroundSD and ZscoreJoinSD fields will be filled automatically according to user specifications, at a later step in the QHTCP study process.
|
||||
#
|
||||
# * Open MATLAB and in the application navigate to each specific /Exp folder, call and execute ExpFrontend.m by clicking the play icon.
|
||||
# * Use the "Open file" function from within Matlab.
|
||||
# * Do not double-click on the file from the directory.
|
||||
# * When prompted, navigate to the ExpJobs folder and the PrintResults folder within the correct job folder.
|
||||
# * Repeat this for every Exp# folder depending on how many experiments are being performed.
|
||||
#
|
||||
# TODO MUST CLEAN UP QHTCP TEMPLATE DIRECTORY
|
||||
#
|
||||
# Code/Directory Structure:
|
||||
# templates/qhtcp
|
||||
# * [A_QHTCP Study Design and Notes](templates/qhtcp/A_QHTCP Study Design and Notes)
|
||||
# * [A_Suggestions for system improvements.odt](templates/qhtcp/A_QHTCP Study Design and Notes/A_Suggestions for system improvements.odt)
|
||||
# * [QHTCP Study Design and Notes.odt](templates/qhtcp/A_QHTCP Study Design and Notes/QHTCP Study Design and Notes.odt)
|
||||
# * [Code](templates/qhtcp/Code)
|
||||
# * [22_0602_Remy_DAmPsList.txt](templates/qhtcp/Code/22_0602_Remy_DAmPsList.txt)
|
||||
# * [All_SGD_GOTerms.csv](templates/qhtcp/Code/All_SGD_GOTerms.csv)
|
||||
# * [All_SGD_GOTerms_for_QHTCPtk.csv](templates/qhtcp/Code/All_SGD_GOTerms_for_QHTCPtk.csv)
|
||||
# * [devStuff](templates/qhtcp/Code/devStuff)
|
||||
# * [InteractTemplateB4fixes.R](templates/qhtcp/Code/devStuff/InteractTemplateB4fixes.R)
|
||||
# * [InteractTemplateB4Prompt4SDinput.R](templates/qhtcp/Code/devStuff/InteractTemplateB4Prompt4SDinput.R)
|
||||
# * [gene_association.sgd](templates/qhtcp/Code/gene_association.sgd)
|
||||
# * [gene_ontology_edit.obo](templates/qhtcp/Code/gene_ontology_edit.obo)
|
||||
# * [go_terms.tab](templates/qhtcp/Code/go_terms.tab)
|
||||
# * [GTAtemplate.R](templates/qhtcp/Code/GTAtemplate.R)
|
||||
# * [ORF_List_DAmPs_Only.txt](templates/qhtcp/Code/ORF_List_DAmPs_Only.txt)
|
||||
# * [ORF_List_Without_DAmPs.txt](templates/qhtcp/Code/ORF_List_Without_DAmPs.txt)
|
||||
# * [ORFs_w_DAmP_list.txt](templates/qhtcp/Code/ORFs_w_DAmP_list.txt)
|
||||
# * [PairwiseLK.R](templates/qhtcp/Code/PairwiseLK.R)
|
||||
# * [Parameters.csv](templates/qhtcp/Code/Parameters.csv)
|
||||
# * [RenameFiles2.sh](templates/qhtcp/Code/RenameFiles2.sh)
|
||||
# * [ScriptTemplates](templates/qhtcp/Code/ScriptTemplates)
|
||||
# * [BU_Legacy](templates/qhtcp/Code/ScriptTemplates/BU_Legacy)
|
||||
# * [InteractTemplate.R](templates/qhtcp/Code/ScriptTemplates/BU_Legacy/InteractTemplate.R)
|
||||
# * [Concatenate_GTF_resultsB4REMcMaster2.py](templates/qhtcp/Code/ScriptTemplates/Concatenate_GTF_resultsB4REMcMaster2.py)
|
||||
# * [Concatenate_GTF_results.py](templates/qhtcp/Code/ScriptTemplates/Concatenate_GTF_results.py)
|
||||
# * [GTAtemplate.R](templates/qhtcp/Code/ScriptTemplates/GTAtemplate.R)
|
||||
# * [InteractionTemplate230119.R](templates/qhtcp/Code/ScriptTemplates/InteractionTemplate230119.R)
|
||||
# * [JoinInteractExps3dev.R](templates/qhtcp/Code/ScriptTemplates/JoinInteractExps3dev.R)
|
||||
# * [JoinInteractExps.R](templates/qhtcp/Code/ScriptTemplates/JoinInteractExps.R)
|
||||
# * [PairwiseK_lbl.R](templates/qhtcp/Code/ScriptTemplates/PairwiseK_lbl.R)
|
||||
# * [PairwiseLK.R](templates/qhtcp/Code/ScriptTemplates/PairwiseLK.R)
|
||||
# * [PairwiseL_lbl.R](templates/qhtcp/Code/ScriptTemplates/PairwiseL_lbl.R)
|
||||
# * [Remy_yor_dF_correlation_study.R](templates/qhtcp/Code/ScriptTemplates/Remy_yor_dF_correlation_study.R)
|
||||
# * [TSHeatmaps5dev2.R](templates/qhtcp/Code/ScriptTemplates/TSHeatmaps5dev2.R)
|
||||
# * [SGD_features.tab](templates/qhtcp/Code/SGD_features.tab)
|
||||
# * [SGD_features.tab.txt](templates/qhtcp/Code/SGD_features.tab.txt)
|
||||
# * [SSscripts](templates/qhtcp/Code/SSscripts)
|
||||
# * [18_0205_heatmaps_zscores_2SD_color_NARem_Z_lm.R](templates/qhtcp/Code/SSscripts/18_0205_heatmaps_zscores_2SD_color_NARem_Z_lm.R)
|
||||
# * [22_0603_Remy_Exclude_DAmPs.R](templates/qhtcp/Code/SSscripts/22_0603_Remy_Exclude_DAmPs.R)
|
||||
# * [cmd_Doxo_SumZScore_Z_lm_Interaction_drug_all_rm_onedrug_V4_yor1_with_Dox_validationedit.R](templates/qhtcp/Code/SSscripts/cmd_Doxo_SumZScore_Z_lm_Interaction_drug_all_rm_onedrug_V4_yor1_with_Dox_validationedit.R)
|
||||
# * [cmd_ScoreAllGOTerms_From_Z_lm_V2.R](templates/qhtcp/Code/SSscripts/cmd_ScoreAllGOTerms_From_Z_lm_V2.R)
|
||||
# * [Compare_GTF_Averages_BetweenScreens_lm_Kvals_v2.R](templates/qhtcp/Code/SSscripts/Compare_GTF_Averages_BetweenScreens_lm_Kvals_v2.R)
|
||||
# * [Compare_GTF_Averages_BetweenScreens_lm_Lvals_v2.R](templates/qhtcp/Code/SSscripts/Compare_GTF_Averages_BetweenScreens_lm_Lvals_v2.R)
|
||||
# * [Compare_GTF_Averages_BetweenScreens_lm_v2.R](templates/qhtcp/Code/SSscripts/Compare_GTF_Averages_BetweenScreens_lm_v2.R)
|
||||
# * [GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_3terms_V2.R](templates/qhtcp/Code/SSscripts/GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_3terms_V2.R)
|
||||
# * [GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_4terms_aging.R](templates/qhtcp/Code/SSscripts/GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_4terms_aging.R)
|
||||
# * [GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_4terms_v2.R](templates/qhtcp/Code/SSscripts/GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_4terms_v2.R)
|
||||
# * [GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_5terms_V2.R](templates/qhtcp/Code/SSscripts/GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_5terms_V2.R)
|
||||
# * [GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_V2.R](templates/qhtcp/Code/SSscripts/GO_list_All_ChildTerms_lmZscore_max100child_Heatmaps_V2.R)
|
||||
# * [ScoreAllGOTerms_From_Z_lm_V2.R](templates/qhtcp/Code/SSscripts/ScoreAllGOTerms_From_Z_lm_V2.R)
|
||||
# * [StudyInfo.csv](templates/qhtcp/Code/StudyInfo.csv)
|
||||
# * [TSHeatmaps5dev2.R](templates/qhtcp/Code/TSHeatmaps5dev2.R)
|
||||
# * [Updating files](templates/qhtcp/Code/Updating files)
|
||||
# * [23_0929](templates/qhtcp/Code/Updating files/23_0929)
|
||||
# * [gene_association.sgd](templates/qhtcp/Code/Updating files/23_0929/gene_association.sgd)
|
||||
# * [gene_ontology_edit.obo](templates/qhtcp/Code/Updating files/23_0929/gene_ontology_edit.obo)
|
||||
# * [go_terms.tab](templates/qhtcp/Code/Updating files/23_0929/go_terms.tab)
|
||||
# * [ORFs_NO_DAmPs.txt](templates/qhtcp/Code/Updating files/23_0929/ORFs_NO_DAmPs.txt)
|
||||
# * [ORFs_w_DAmP_list.txt](templates/qhtcp/Code/Updating files/23_0929/ORFs_w_DAmP_list.txt)
|
||||
# * [SGD_features.tab](templates/qhtcp/Code/Updating files/23_0929/SGD_features.tab)
|
||||
# * [SGD_features.tab.txt](templates/qhtcp/Code/Updating files/23_0929/SGD_features.tab.txt)
|
||||
# * [original_outdated](templates/qhtcp/Code/Updating files/original_outdated)
|
||||
# * [gene_association.sgd](templates/qhtcp/Code/Updating files/original_outdated/gene_association.sgd)
|
||||
# * [gene_ontology_edit.obo](templates/qhtcp/Code/Updating files/original_outdated/gene_ontology_edit.obo)
|
||||
# * [go_terms.tab](templates/qhtcp/Code/Updating files/original_outdated/go_terms.tab)
|
||||
# * [ORFs_w_DAmP_list.txt](templates/qhtcp/Code/Updating files/original_outdated/ORFs_w_DAmP_list.txt)
|
||||
# * [SGD_features.tab](templates/qhtcp/Code/Updating files/original_outdated/SGD_features.tab)
|
||||
# * [SGD_features.tab.txt](templates/qhtcp/Code/Updating files/original_outdated/SGD_features.tab.txt)
|
||||
# * [SGDFeatureUpdates](templates/qhtcp/Code/Updating files/SGDFeatureUpdates)
|
||||
# * [23_0927_SGDFeatures for KO.DAmP_library.csv](templates/qhtcp/Code/Updating files/SGDFeatureUpdates/23_0927_SGDFeatures for KO.DAmP_library.csv)
|
||||
# * [23_0927_SGDFeatures for KO.DAmP_library.tsv](templates/qhtcp/Code/Updating files/SGDFeatureUpdates/23_0927_SGDFeatures for KO.DAmP_library.tsv)
|
||||
# * [copy of original files before updates](templates/qhtcp/Code/Updating files/SGDFeatureUpdates/copy of original files before updates)
|
||||
# * [SGD_features.tab_updates.xlsx](templates/qhtcp/Code/Updating files/SGDFeatureUpdates/SGD_features.tab_updates.xlsx)
|
||||
# * [SGD_features_UPDATES for 2 files.xlsx](templates/qhtcp/Code/Updating files/SGDFeatureUpdates/SGD_features_UPDATES for 2 files.xlsx)
|
||||
# * [SGD readme files](templates/qhtcp/Code/Updating files/SGD readme files)
|
||||
# * [gene_association.README](templates/qhtcp/Code/Updating files/SGD readme files/gene_association.README)
|
||||
# * [go_terms.README](templates/qhtcp/Code/Updating files/SGD readme files/go_terms.README)
|
||||
# * [_Updating_Notes_23_0329.txt](templates/qhtcp/Code/Updating files/_Updating_Notes_23_0329.txt)
|
||||
# * [Updating Q-HTCP_SourceFiles.docx](templates/qhtcp/Code/Updating files/Updating Q-HTCP_SourceFiles.docx)
|
||||
# * [Documentation](templates/qhtcp/Documentation)
|
||||
# * [20_0329_SS_Q_HTCP_Analysis_Readme.docx](templates/qhtcp/Documentation/20_0329_SS_Q_HTCP_Analysis_Readme.docx)
|
||||
# * [Jingyu_REMc_Instruction for clustering and heatmap plotting _updated2013Mar.docx](templates/qhtcp/Documentation/Jingyu_REMc_Instruction for clustering and heatmap plotting _updated2013Mar.docx)
|
||||
# * [ExpTemplate](templates/qhtcp/ExpTemplate)
|
||||
# * [backups](templates/qhtcp/ExpTemplate/backups)
|
||||
# * [InteractTemplateB4Prompt4SDinput.R](templates/qhtcp/ExpTemplate/backups/InteractTemplateB4Prompt4SDinput.R)
|
||||
# * [ExpFrontend.m](templates/qhtcp/ExpTemplate/ExpFrontend.m)
|
||||
# * [NotesExp1](templates/qhtcp/ExpTemplate/NotesExp1)
|
||||
# * [Z_InteractionTemplate.R](templates/qhtcp/ExpTemplate/Z_InteractionTemplate.R)
|
||||
# * [ZScores](templates/qhtcp/ExpTemplate/ZScores)
|
||||
# * [GTAresults](templates/qhtcp/GTAresults)
|
||||
# * [Exp1](templates/qhtcp/GTAresults/Exp1)
|
||||
# * [Exp2](templates/qhtcp/GTAresults/Exp2)
|
||||
# * [Exp3](templates/qhtcp/GTAresults/Exp3)
|
||||
# * [Exp4](templates/qhtcp/GTAresults/Exp4)
|
||||
# * [REMc](templates/qhtcp/REMc)
|
||||
# * [AddShiftVals2.R](templates/qhtcp/REMc/AddShiftVals2.R)
|
||||
# * [CompileGTF.R](templates/qhtcp/REMc/CompileGTF.R)
|
||||
# * [DconJG2.py](templates/qhtcp/REMc/DconJG2.py)
|
||||
# * [GeneByGOAttributeMatrix_nofiltering-2009Dec07.tab](templates/qhtcp/REMc/GeneByGOAttributeMatrix_nofiltering-2009Dec07.tab)
|
||||
# * [GTF](templates/qhtcp/REMc/GTF)
|
||||
# * [analyze_v2.pl](templates/qhtcp/REMc/GTF/analyze_v2.pl)
|
||||
# * [Component](templates/qhtcp/REMc/GTF/Component)
|
||||
# * [analyze_v2.pl](templates/qhtcp/REMc/GTF/Component/analyze_v2.pl)
|
||||
# * [Concatenate_GTF_results.py](templates/qhtcp/REMc/GTF/Component/Concatenate_GTF_results.py)
|
||||
# * [gene_association.sgd](templates/qhtcp/REMc/GTF/Component/gene_association.sgd)
|
||||
# * [gene_ontology_edit.obo](templates/qhtcp/REMc/GTF/Component/gene_ontology_edit.obo)
|
||||
# * [ORF_List_DAmPs_Only.txt](templates/qhtcp/REMc/GTF/Component/ORF_List_DAmPs_Only.txt)
|
||||
# * [ORF_List_Without_DAmPs.txt](templates/qhtcp/REMc/GTF/Component/ORF_List_Without_DAmPs.txt)
|
||||
# * [ORFs_w_DAmP_list.txt](templates/qhtcp/REMc/GTF/Component/ORFs_w_DAmP_list.txt)
|
||||
# * [SGD_features.tab](templates/qhtcp/REMc/GTF/Component/SGD_features.tab)
|
||||
# * [SGD_features.tab.txt](templates/qhtcp/REMc/GTF/Component/SGD_features.tab.txt)
|
||||
# * [terms2tsv_v4.pl](templates/qhtcp/REMc/GTF/Component/terms2tsv_v4.pl)
|
||||
# * [Concatenate_GTF_results.py](templates/qhtcp/REMc/GTF/Concatenate_GTF_results.py)
|
||||
# * [Function](templates/qhtcp/REMc/GTF/Function)
|
||||
# * [analyze_v2.pl](templates/qhtcp/REMc/GTF/Function/analyze_v2.pl)
|
||||
# * [Concatenate_GTF_results.py](templates/qhtcp/REMc/GTF/Function/Concatenate_GTF_results.py)
|
||||
# * [gene_association.sgd](templates/qhtcp/REMc/GTF/Function/gene_association.sgd)
|
||||
# * [gene_ontology_edit.obo](templates/qhtcp/REMc/GTF/Function/gene_ontology_edit.obo)
|
||||
# * [ORF_List_DAmPs_Only.txt](templates/qhtcp/REMc/GTF/Function/ORF_List_DAmPs_Only.txt)
|
||||
# * [ORF_List_Without_DAmPs.txt](templates/qhtcp/REMc/GTF/Function/ORF_List_Without_DAmPs.txt)
|
||||
# * [ORFs_w_DAmP_list.txt](templates/qhtcp/REMc/GTF/Function/ORFs_w_DAmP_list.txt)
|
||||
# * [SGD_features.tab](templates/qhtcp/REMc/GTF/Function/SGD_features.tab)
|
||||
# * [SGD_features.tab.txt](templates/qhtcp/REMc/GTF/Function/SGD_features.tab.txt)
|
||||
# * [terms2tsv_v4.pl](templates/qhtcp/REMc/GTF/Function/terms2tsv_v4.pl)
|
||||
# * [gene_association.sgd](templates/qhtcp/REMc/GTF/gene_association.sgd)
|
||||
# * [gene_ontology_edit.obo](templates/qhtcp/REMc/GTF/gene_ontology_edit.obo)
|
||||
# * [GOontologyPar.sh](templates/qhtcp/REMc/GTF/GOontologyPar.sh)
|
||||
# * [Process](templates/qhtcp/REMc/GTF/Process)
|
||||
# * [analyze_v2.pl](templates/qhtcp/REMc/GTF/Process/analyze_v2.pl)
|
||||
# * [Concatenate_GTF_results.py](templates/qhtcp/REMc/GTF/Process/Concatenate_GTF_results.py)
|
||||
# * [gene_association.sgd](templates/qhtcp/REMc/GTF/Process/gene_association.sgd)
|
||||
# * [gene_ontology_edit.obo](templates/qhtcp/REMc/GTF/Process/gene_ontology_edit.obo)
|
||||
# * [ORF_List_DAmPs_Only.txt](templates/qhtcp/REMc/GTF/Process/ORF_List_DAmPs_Only.txt)
|
||||
# * [ORF_List_Without_DAmPs.txt](templates/qhtcp/REMc/GTF/Process/ORF_List_Without_DAmPs.txt)
|
||||
# * [ORFs_w_DAmP_list.txt](templates/qhtcp/REMc/GTF/Process/ORFs_w_DAmP_list.txt)
|
||||
# * [SGD_features.tab](templates/qhtcp/REMc/GTF/Process/SGD_features.tab)
|
||||
# * [SGD_features.tab.txt](templates/qhtcp/REMc/GTF/Process/SGD_features.tab.txt)
|
||||
# * [terms2tsv_v4.pl](templates/qhtcp/REMc/GTF/Process/terms2tsv_v4.pl)
|
||||
# * [SeanEmailPython2](templates/qhtcp/REMc/GTF/SeanEmailPython2)
|
||||
# * [SGD_features.tab](templates/qhtcp/REMc/GTF/SGD_features.tab)
|
||||
# * [SGD_features.tab.txt](templates/qhtcp/REMc/GTF/SGD_features.tab.txt)
|
||||
# * [terms2tsv_v4.pl](templates/qhtcp/REMc/GTF/terms2tsv_v4.pl)
|
||||
# * [jingyuJava_1_7_extractLib.jar](templates/qhtcp/REMc/jingyuJava_1_7_extractLib.jar)
|
||||
# * [JoinInteractExps3dev.R](templates/qhtcp/REMc/JoinInteractExps3dev.R)
|
||||
# * [Notes: REMc, GTF_Ontologies and Associated_Heatmaps ](templates/qhtcp/REMc/Notes: REMc, GTF_Ontologies and Associated_Heatmaps )
|
||||
# * [old_orf_lists](templates/qhtcp/REMc/old_orf_lists)
|
||||
# * [ORF_List_DAmPs_Only.txt](templates/qhtcp/REMc/old_orf_lists/ORF_List_DAmPs_Only.txt)
|
||||
# * [ORF_List_Without_DAmPs.txt](templates/qhtcp/REMc/old_orf_lists/ORF_List_Without_DAmPs.txt)
|
||||
# * [ORFs_w_DAmP_list.txt](templates/qhtcp/REMc/old_orf_lists/ORFs_w_DAmP_list.txt)
|
||||
# * [ORF_List_DAmPs_Only.txt](templates/qhtcp/REMc/ORF_List_DAmPs_Only.txt)
|
||||
# * [ORF_List_Without_DAmPs.txt](templates/qhtcp/REMc/ORF_List_Without_DAmPs.txt)
|
||||
# * [ORFs_w_DAmP_list.txt](templates/qhtcp/REMc/ORFs_w_DAmP_list.txt)
|
||||
# * [REMcHeatmaps](templates/qhtcp/REMc/REMcHeatmaps)
|
||||
# * [REMcHeatmapsWithHomology](templates/qhtcp/REMc/REMcHeatmapsWithHomology)
|
||||
# * [17_0503_DAmPs_Only.txt](templates/qhtcp/REMc/REMcHeatmapsWithHomology/17_0503_DAmPs_Only.txt)
|
||||
# * [Homology](templates/qhtcp/REMc/REMcHeatmapsWithHomology/Homology)
|
||||
# * [REMcHeatmaps_Z_lm_wDAmPs_andHomology_221212.R](templates/qhtcp/REMc/REMcHeatmapsWithHomology/REMcHeatmaps_Z_lm_wDAmPs_andHomology_221212.R)
|
||||
# * [Yeast_Human_Homology_Mapping_biomaRt_18_0920.csv](templates/qhtcp/REMc/REMcHeatmapsWithHomology/Yeast_Human_Homology_Mapping_biomaRt_18_0920.csv)
|
||||
# * [REMcHeatmaps_zscores.R](templates/qhtcp/REMc/REMcHeatmaps_zscores.R)
|
||||
# * [REMcJava](templates/qhtcp/REMc/REMcJava)
|
||||
# * [java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64)
|
||||
# * [jre](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre)
|
||||
# * [ASSEMBLY_EXCEPTION](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/ASSEMBLY_EXCEPTION)
|
||||
# * [bin](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin)
|
||||
# * [alt-java](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/alt-java)
|
||||
# * [java](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/java)
|
||||
# * [jjs](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/jjs)
|
||||
# * [keytool](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/keytool)
|
||||
# * [orbd](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/orbd)
|
||||
# * [pack200](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/pack200)
|
||||
# * [policytool](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/policytool)
|
||||
# * [rmid](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/rmid)
|
||||
# * [rmiregistry](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/rmiregistry)
|
||||
# * [servertool](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/servertool)
|
||||
# * [tnameserv](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/tnameserv)
|
||||
# * [unpack200](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/bin/unpack200)
|
||||
# * [lib](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib)
|
||||
# * [amd64](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64)
|
||||
# * [client](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/client)
|
||||
# * [jli](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/jli)
|
||||
# * [libjli.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/jli/libjli.so)
|
||||
# * [jvm.cfg](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/jvm.cfg)
|
||||
# * [libattach.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libattach.so)
|
||||
# * [libawt_headless.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libawt_headless.so)
|
||||
# * [libawt.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libawt.so)
|
||||
# * [libawt_xawt.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libawt_xawt.so)
|
||||
# * [libdt_socket.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libdt_socket.so)
|
||||
# * [libfontmanager.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libfontmanager.so)
|
||||
# * [libhprof.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libhprof.so)
|
||||
# * [libinstrument.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libinstrument.so)
|
||||
# * [libj2gss.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libj2gss.so)
|
||||
# * [libj2pcsc.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libj2pcsc.so)
|
||||
# * [libj2pkcs11.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libj2pkcs11.so)
|
||||
# * [libjaas_unix.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjaas_unix.so)
|
||||
# * [libjava_crw_demo.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjava_crw_demo.so)
|
||||
# * [libjavajpeg.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjavajpeg.so)
|
||||
# * [libjava.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjava.so)
|
||||
# * [libjawt.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjawt.so)
|
||||
# * [libjdwp.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjdwp.so)
|
||||
# * [libjsdt.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjsdt.so)
|
||||
# * [libjsig.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjsig.so)
|
||||
# * [libjsoundalsa.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjsoundalsa.so)
|
||||
# * [libjsound.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libjsound.so)
|
||||
# * [liblcms.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/liblcms.so)
|
||||
# * [libmanagement.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libmanagement.so)
|
||||
# * [libmlib_image.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libmlib_image.so)
|
||||
# * [libnet.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libnet.so)
|
||||
# * [libnio.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libnio.so)
|
||||
# * [libnpt.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libnpt.so)
|
||||
# * [libsaproc.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libsaproc.so)
|
||||
# * [libsctp.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libsctp.so)
|
||||
# * [libsplashscreen.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libsplashscreen.so)
|
||||
# * [libsunec.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libsunec.so)
|
||||
# * [libunpack.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libunpack.so)
|
||||
# * [libverify.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libverify.so)
|
||||
# * [libzip.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/libzip.so)
|
||||
# * [server](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/server)
|
||||
# * [classes.jsa](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/server/classes.jsa)
|
||||
# * [libjsig.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/server/libjsig.so)
|
||||
# * [libjvm.so](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/server/libjvm.so)
|
||||
# * [Xusage.txt](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/amd64/server/Xusage.txt)
|
||||
# * [applet](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/applet)
|
||||
# * [calendars.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/calendars.properties)
|
||||
# * [charsets.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/charsets.jar)
|
||||
# * [classlist](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/classlist)
|
||||
# * [cmm](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/cmm)
|
||||
# * [CIEXYZ.pf](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/cmm/CIEXYZ.pf)
|
||||
# * [GRAY.pf](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/cmm/GRAY.pf)
|
||||
# * [LINEAR_RGB.pf](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/cmm/LINEAR_RGB.pf)
|
||||
# * [PYCC.pf](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/cmm/PYCC.pf)
|
||||
# * [sRGB.pf](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/cmm/sRGB.pf)
|
||||
# * [content-types.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/content-types.properties)
|
||||
# * [currency.data](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/currency.data)
|
||||
# * [ext](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext)
|
||||
# * [cldrdata.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/cldrdata.jar)
|
||||
# * [dnsns.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/dnsns.jar)
|
||||
# * [jaccess.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/jaccess.jar)
|
||||
# * [localedata.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/localedata.jar)
|
||||
# * [meta-index](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/meta-index)
|
||||
# * [nashorn.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/nashorn.jar)
|
||||
# * [sunec.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/sunec.jar)
|
||||
# * [sunjce_provider.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/sunjce_provider.jar)
|
||||
# * [sunpkcs11.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/sunpkcs11.jar)
|
||||
# * [zipfs.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/ext/zipfs.jar)
|
||||
# * [flavormap.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/flavormap.properties)
|
||||
# * [hijrah-config-umalqura.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/hijrah-config-umalqura.properties)
|
||||
# * [images](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images)
|
||||
# * [cursors](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors)
|
||||
# * [cursors.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors/cursors.properties)
|
||||
# * [invalid32x32.gif](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors/invalid32x32.gif)
|
||||
# * [motif_CopyDrop32x32.gif](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors/motif_CopyDrop32x32.gif)
|
||||
# * [motif_CopyNoDrop32x32.gif](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors/motif_CopyNoDrop32x32.gif)
|
||||
# * [motif_LinkDrop32x32.gif](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors/motif_LinkDrop32x32.gif)
|
||||
# * [motif_LinkNoDrop32x32.gif](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors/motif_LinkNoDrop32x32.gif)
|
||||
# * [motif_MoveDrop32x32.gif](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors/motif_MoveDrop32x32.gif)
|
||||
# * [motif_MoveNoDrop32x32.gif](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/images/cursors/motif_MoveNoDrop32x32.gif)
|
||||
# * [jce.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/jce.jar)
|
||||
# * [jexec](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/jexec)
|
||||
# * [jfr](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/jfr)
|
||||
# * [default.jfc](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/jfr/default.jfc)
|
||||
# * [profile.jfc](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/jfr/profile.jfc)
|
||||
# * [jfr.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/jfr.jar)
|
||||
# * [jsse.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/jsse.jar)
|
||||
# * [jvm.hprof.txt](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/jvm.hprof.txt)
|
||||
# * [logging.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/logging.properties)
|
||||
# * [management](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/management)
|
||||
# * [jmxremote.access](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/management/jmxremote.access)
|
||||
# * [jmxremote.password.template](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/management/jmxremote.password.template)
|
||||
# * [management.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/management/management.properties)
|
||||
# * [snmp.acl.template](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/management/snmp.acl.template)
|
||||
# * [management-agent.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/management-agent.jar)
|
||||
# * [meta-index](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/meta-index)
|
||||
# * [net.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/net.properties)
|
||||
# * [psfontj2d.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/psfontj2d.properties)
|
||||
# * [psfont.properties.ja](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/psfont.properties.ja)
|
||||
# * [resources.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/resources.jar)
|
||||
# * [rt.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/rt.jar)
|
||||
# * [security](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security)
|
||||
# * [blacklisted.certs](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/blacklisted.certs)
|
||||
# * [cacerts](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/cacerts)
|
||||
# * [java.policy](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/java.policy)
|
||||
# * [java.security](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/java.security)
|
||||
# * [nss.cfg](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/nss.cfg)
|
||||
# * [policy](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/policy)
|
||||
# * [limited](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/policy/limited)
|
||||
# * [local_policy.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/policy/limited/local_policy.jar)
|
||||
# * [US_export_policy.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/policy/limited/US_export_policy.jar)
|
||||
# * [unlimited](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/policy/unlimited)
|
||||
# * [local_policy.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/policy/unlimited/local_policy.jar)
|
||||
# * [US_export_policy.jar](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/security/policy/unlimited/US_export_policy.jar)
|
||||
# * [sound.properties](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/sound.properties)
|
||||
# * [tzdb.dat](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/lib/tzdb.dat)
|
||||
# * [LICENSE](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/LICENSE)
|
||||
# * [THIRD_PARTY_README](templates/qhtcp/REMc/REMcJava/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/THIRD_PARTY_README)
|
||||
# * [TermSpecificHeatmaps](templates/qhtcp/TermSpecificHeatmaps)
|
||||
#
|
||||
# As stated earlier, the user can add folders to back up temporary results, study-related notes, or other related work.
|
||||
# However, it is advised to set up and use separate STUDIES when evaluating differing data sets whether that is from experiment results files or from differing data selections in the first interaction … .R script stage.
|
||||
# This reduces confusion at the time of the study and especially for those reviewing study analysis in the future.
|
||||
# How-To Procedure: Execute a Multi-experiment Study
|
||||
# * Consider the goals of the study and design a strategy of experiments to include in the study.
|
||||
# * Consider the quality of the experiment runs using EZview to see if there are systematic problems that are readily detectable.
|
||||
# * In some cases, one may wish to design a ‘pilot’ study for discovery purposes.
|
||||
# * There is no problem doing that, just take a template study, copy and rename it as XYZpilotStudy etc.
|
||||
# * However, careful examination of the experimental results using EZview will likely save time in the long run.
|
||||
# * One may be able to relatively quickly run the interaction Z scores (the main challenge there is the user creation of customized interaction… .R code.
|
||||
# * I have tried to simplify this by locating the user edits near the top).
|
||||
#
|
||||
#
|
||||
qhtcp() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
TEMPLATE_DIR="$SCRIPT_DIR/templates/qhtcp"
|
||||
QHTCP_DIR="/mnt/data/StudiesQHTCP/$PROJECT"
|
||||
QHTCP_TEMPLATE_DIR="$SCRIPT_DIR/templates/qhtcp"
|
||||
STUDY_TEMPLATE_DIR="$QHTCP_TEMPLATE_DIR/ExpTemplate"
|
||||
OUTPUT_DIR="/mnt/data/StudiesQHTCP"
|
||||
QHTCP_DIR="$OUTPUT_DIR/$PROJECT"
|
||||
|
||||
# Our list of submodules (functions) to run for this module
|
||||
# Put these in the appropriate order of operations
|
||||
modules=(
|
||||
r_join_interact
|
||||
java_extract
|
||||
r_add_shift_values
|
||||
r_heat_maps_zscores
|
||||
r_heat_maps_homology
|
||||
gtf
|
||||
r_compile_gtf
|
||||
)
|
||||
|
||||
while [[ -d $QHTCP_DIR ]]; do
|
||||
if [[ -d $QHTCP_DIR ]]; then
|
||||
echo "A project already exists at $QHTCP_DIR"
|
||||
ask "Safely update $QHTCP_DIR from the $TEMPLATE_DIR template?" && break
|
||||
if ask "Back up $QHTCP_DIR to $QHTCP_DIR.bk and start fresh?"; then
|
||||
ask "Safely update $QHTCP_DIR from the $QHTCP_TEMPLATE_DIR template?"
|
||||
if ! ((YES)) && ask "Back up $QHTCP_DIR to $QHTCP_DIR.bk first and start fresh?"; then
|
||||
mv "$QHTCP_DIR" "$QHTCP_DIR.bk" || (echo "Backup unsuccessful, exiting"; exit 1)
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Copy template to QHTCP project directory
|
||||
if rsync --archive --update "$TEMPLATE_DIR"/ "$QHTCP_DIR"; then
|
||||
if rsync --archive --update "$QHTCP_TEMPLATE_DIR"/ "$QHTCP_DIR"; then
|
||||
echo "New project created at $QHTCP_DIR"
|
||||
fi
|
||||
|
||||
# Create StudyInfo.csv
|
||||
# Right now this is identical to the template but we can change it later
|
||||
cat <<-EOF > "$QHTCP_DIR/Code/StudyInfo.csv"
|
||||
ExpNumb,ExpLabel,BackgroundSD,ZscoreJoinSD,AnalysisBy
|
||||
1,ExpName1,NA,NA,UserInitials
|
||||
2,ExpName2,NA,NA,UserInitials
|
||||
3,ExpName3,NA,NA,UserInitials
|
||||
4,ExpName4,NA,NA,UserInitials
|
||||
# Print current studies
|
||||
STUDY_INFO_FILE="$QHTCP_DIR/Code/StudyInfo.csv"
|
||||
[[ -f $STUDY_INFO_FILE ]] &&
|
||||
echo "Current studies from $STUDY_INFO_FILE" &&
|
||||
cat "$STUDY_INFO_FILE"
|
||||
|
||||
# Ask user edit STUDY_INFO_FILE
|
||||
if ! ((YES)) && ask "Would you like to edit $STUDY_INFO_FILE to add or modify studies?"; then
|
||||
cat <<-EOF
|
||||
Give each experiment the labels you wish to be used for the plots and specific files.
|
||||
Enter the desired Experiment names and order them in the way you want them to appear in the REMc heatmaps
|
||||
EOF
|
||||
nano "$STUDY_INFO_FILE"
|
||||
fi
|
||||
|
||||
|
||||
# Sets STUDIES_NUM
|
||||
get_studies "$STUDY_INFO_FILE"
|
||||
|
||||
# Initialize missing dirs
|
||||
for s in "${STUDIES_NUM[@]}"; do
|
||||
study_dir="$QHTCP_DIR/Exp$s"
|
||||
if ! [[ -d $study_dir ]]; then
|
||||
if ! rsync --archive "$STUDY_TEMPLATE_DIR" "$study_dir"; then
|
||||
err "Could not copy $STUDY_TEMPLATE_DIR template to $study_dir"
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# MATLAB stuff
|
||||
cat <<-EOF
|
||||
ExpFrontend.m was made for recording into a spreadsheet
|
||||
('StudiesDataArchive.txt') the date and files used (i.e., directory paths to the
|
||||
!!Results files used as input for Z-interaction script) for each multi-experiment study.
|
||||
|
||||
Run the front end MATLAB programs in the correct order (e.g., run front end in "exp1"
|
||||
folder to call the !!Results file for the experiment you named as exp1 in the StudyInfo.csv file)
|
||||
The GTA and pairwise, TSHeatmaps, JoinInteractions and GTF Heatmap scripts use this table
|
||||
to label results and heatmaps in a meaningful way for the user and others.
|
||||
The BackgroundSD and ZscoreJoinSD fields will be filled automatically according to user
|
||||
specifications, at a later step in the QHTCP study process.
|
||||
|
||||
Open MATLAB and in the application navigate to each specific /Exp folder,
|
||||
call and execute ExpFrontend.m by clicking the play icon.
|
||||
Use the "Open file" function from within Matlab.
|
||||
Do not double-click on the file from the directory.
|
||||
When prompted, navigate to the ExpJobs folder and the PrintResults folder within the correct job folder.
|
||||
Repeat this for every Exp# folder depending on how many experiments are being performed.
|
||||
The Exp# folder must correspond to the StudyInfo.csv created above.
|
||||
EOF
|
||||
if ! ((YES)) &&
|
||||
ask "Start MATLAB to run ExpFrontend.m? This requires a GUI."; then
|
||||
matlab -nosplash
|
||||
fi
|
||||
|
||||
|
||||
# Enter REMc directory to run the scripts there
|
||||
pushd "$QHTCP_DIR/REMc" || return 1
|
||||
|
||||
# Run each submodule
|
||||
for s in "${modules[@]}"; do "$s"; done
|
||||
|
||||
# Run modules
|
||||
r_join_interact
|
||||
java_extract
|
||||
r_add_shift_values
|
||||
r_heat_maps_zscores
|
||||
r_heat_maps_homology
|
||||
popd || return 1
|
||||
}
|
||||
|
||||
@@ -389,7 +924,6 @@ gtf() {
|
||||
|
||||
py_gtf_dcon "$process_dir" "$out_dir"
|
||||
|
||||
|
||||
# Perform operations in each directory in parallel
|
||||
for d in "$process_dir" "$function_dir" "$component_dir"; do
|
||||
rsync -a "$process_dir/$out_dir" "$d"/
|
||||
@@ -397,23 +931,42 @@ gtf() {
|
||||
pl_gtf "$d" "$out_dir" & # parallelize
|
||||
py_gtf_concat "$d" "$out_dir" "$out_file"
|
||||
done
|
||||
|
||||
r_compile_gtf
|
||||
}
|
||||
|
||||
|
||||
module gta
|
||||
# @section GTA
|
||||
# @description GTA module for QHTCP
|
||||
gta() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
|
||||
get_studies
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
# @section Submodules
|
||||
# @description Submodules provide functionaility to modules and are reusable between modules
|
||||
# @description Submodules provide functionality to modules and should be reusable
|
||||
# A submodule only runs by default if called by a module
|
||||
# Use a submodule for:
|
||||
# * Calling external scripts
|
||||
# * Performing repetitive tasks
|
||||
# *
|
||||
#
|
||||
# * Generalizing code
|
||||
# * Functions you do not want to perform by default (submodules should be called modules)
|
||||
# * Should not call cd or pushd (let module dictate)
|
||||
|
||||
submodule r_join_interact
|
||||
# @description JoinInteractExps3dev.R creates REMcRdy_lm_only.csv and Shift_only.csv
|
||||
r_join_interact() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
debug "Rscript JoinInteractExps3dev.R"
|
||||
Rscript JoinInteractExps3dev.R
|
||||
debug "$RSCRIPT JoinInteractExps3dev.R"
|
||||
"$RSCRIPT" JoinInteractExps3dev.R
|
||||
out_file="REMcRdy_lm_only.csv"
|
||||
out_file2="Shift_only.csv"
|
||||
for f in "$out_file" "$out_file2"; do
|
||||
@@ -452,8 +1005,8 @@ submodule r_add_shift_values
|
||||
r_add_shift_values() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
out_file="REMcHeatmaps/REMcWithShift.csv"
|
||||
debug "Rscript AddShiftVals2.R"
|
||||
Rscript AddShiftVals2.R
|
||||
debug "$RSCRIPT AddShiftVals2.R"
|
||||
"$RSCRIPT" AddShiftVals2.R
|
||||
rm -f "REMcHeatmaps/"*.pdf
|
||||
[[ -f $out_file ]] || (echo "$out_file does not exist"; return 1)
|
||||
}
|
||||
@@ -464,8 +1017,8 @@ submodule r_heat_maps_zscores
|
||||
r_heat_maps_zscores() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
out_file="REMcHeatmaps/compiledREMcHeatmaps.pdf"
|
||||
debug "Rscript REMcHeatmaps_zscores.R"
|
||||
Rscript REMcHeatmaps_zscores.R
|
||||
debug "$RSCRIPT REMcHeatmaps_zscores.R"
|
||||
"$RSCRIPT" REMcHeatmaps_zscores.R
|
||||
pdfs=(REMcHeatmaps/*.pdf)
|
||||
debug "pdftk ${pdfs[*]} output $out_file"
|
||||
pdftk "${pdfs[@]}" output "$out_file"
|
||||
@@ -475,6 +1028,7 @@ r_heat_maps_zscores() {
|
||||
|
||||
submodule r_heat_maps_homology
|
||||
# @description Execute REMcHeatmaps_Z_lm_wDAmPs_andHomology_221212.R
|
||||
# TODO this R script needs configurable output so we don't need to push/pop
|
||||
r_heat_maps_homology() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
work_dir="REMcHeatmapsWithHomology"
|
||||
@@ -488,7 +1042,9 @@ r_heat_maps_homology() {
|
||||
rm "$work_dir/Homology/"*.{pdf,csv}
|
||||
|
||||
pushd "$work_dir" || return 1
|
||||
Rscript \
|
||||
|
||||
# TODO This
|
||||
"$RSCRIPT" \
|
||||
REMcHeatmaps_Z_lm_wDAmPs_andHomology_221212.R \
|
||||
REMcWithShift.csv \
|
||||
Homology \
|
||||
@@ -519,8 +1075,8 @@ py_gtf_dcon() {
|
||||
|
||||
submodule pl_gtf
|
||||
# @description Perl modules for GTF
|
||||
# @arg $1 string working directory
|
||||
# @arg $2 string output directory name to look for txt files
|
||||
# @arg $1 string Working directory
|
||||
# @arg $2 string Output directory name to look for txt files
|
||||
pl_gtf() {
|
||||
debug "Running: ${FUNCNAME[0]}" "$@"
|
||||
|
||||
@@ -546,8 +1102,8 @@ submodule pl_gtf_analyze
|
||||
# This seems weird to me because we're just overwriting the same data for all set2 members
|
||||
# https://metacpan.org/dist/GO-TermFinder/view/examples/analyze.pl
|
||||
# Is there a reason you need a custom version and not the original from cpan?
|
||||
# @arg $1 string Set 1
|
||||
# @arg $2 string Set 2
|
||||
# @arg $1 string Set 1 TODO naming
|
||||
# @arg $2 string Set 2 TODO naming
|
||||
pl_gtf_analyze() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
script="analyze_v2.pl"
|
||||
@@ -561,7 +1117,7 @@ pl_gtf_analyze() {
|
||||
submodule pl_gtf_terms2tsv
|
||||
# @description Perl terms2tsv submodule
|
||||
# Probably should be translated to shell/python
|
||||
# @arg $1 string Set 2
|
||||
# @arg $1 string Terms file TODO naming
|
||||
pl_gtf_terms2tsv() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
script="terms2tsv_v4.pl"
|
||||
@@ -590,16 +1146,34 @@ py_gtf_concat() {
|
||||
|
||||
submodule r_compile_gtf
|
||||
# @description Compile GTF in R
|
||||
# @noargs
|
||||
r_compile_gtf() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
debug "Rscript CompileGTF.R"
|
||||
Rscript CompileGTF.R
|
||||
script="CompileGTF.R"
|
||||
debug "$RSCRIPT $script"
|
||||
"$RSCRIPT" "$script"
|
||||
}
|
||||
|
||||
|
||||
submodule get_studies
|
||||
# @description Parse study names from StudyInfo.csv files
|
||||
# TODO: This whole submodule should eventually be either
|
||||
# * Removed
|
||||
# * Expanded into a file that stores all project/study settings
|
||||
# I had to had a new line to the end of StudyInfo.csv, may break things?
|
||||
# @arg $1 string File to read
|
||||
get_studies() {
|
||||
declare -ga STUDIES_NUM=()
|
||||
while IFS=',' read -r col1 _; do # split on comma, get second col
|
||||
STUDIES_NUM+=("$col1")
|
||||
done < <(tail -n +2 "$1") # skip header
|
||||
}
|
||||
|
||||
|
||||
submodule documentation
|
||||
# @section Documentation
|
||||
# @description Generates markdown documentation from this script using shdoc
|
||||
# @noargs
|
||||
documentation() {
|
||||
debug "Running: ${FUNCNAME[0]}"
|
||||
# Print markdown to stdout
|
||||
@@ -644,7 +1218,7 @@ main() {
|
||||
fi
|
||||
done
|
||||
|
||||
SCANS_DIR="${SCANS_DIR:-"/mnt/data/ExpJobs"}" # TODO propose changing this to something else
|
||||
SCANS_DIR="${SCANS_DIR:-"/mnt/data/ExpJobs"}"
|
||||
|
||||
# If we don't catch with getopt or env, run all
|
||||
if [[ ${#INCLUDE_MODULES[@]} -eq 0 ]]; then
|
||||
@@ -675,11 +1249,13 @@ main() {
|
||||
# Loop over projects
|
||||
for PROJECT in "${PROJECTS[@]}"; do
|
||||
SCAN_DIR="$SCANS_DIR/$PROJECT"
|
||||
|
||||
[[ -d $SCAN_DIR ]] || mkdir -p "$SCAN_DIR"
|
||||
pushd "$SCAN_DIR" || return 1
|
||||
# Run selected modules
|
||||
for m in "${MODULES[@]}"; do
|
||||
ask "Run $m" && "$m"
|
||||
done
|
||||
popd || return 1
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user