This Rmd file will download raw RNA-seq FastQs for A.pulchra and evaluate them using FastQC and MultiQC(Ewels et al. 2016).

1 Create a Bash variables file

This allows usage of Bash variables across R Markdown chunks.

{
echo "#### Assign Variables ####"
echo ""

echo "# Data directories"
echo 'export timeseries_dir=/home/shared/8TB_HDD_01/sam/gitrepos/urol-e5/timeseries_molecular'
echo 'export output_dir_top=${timeseries_dir}/D-Apul/output/00.00-D-Apul-RNAseq-reads-FastQC-MultiQC.Rmd'
echo 'export raw_fastqc_dir=${timeseries_dir}/D-Apul/${output_dir_top}/raw-fastqc'
echo 'export raw_reads_dir=${timeseries_dir}/D-Apul/data/raw-fastqs'
echo 'export raw_reads_url="https://owl.fish.washington.edu/nightingales/E5-coral-time-series/30-1047560508/"'
echo ""

echo "# Paths to programs"
echo 'export fastqc=/home/shared/FastQC-0.12.1/fastqc'
echo 'export multiqc=/home/sam/programs/mambaforge/bin/multiqc'
echo ""

echo "# Set FastQ filename patterns"
echo "export fastq_pattern='*.fastq.gz'"
echo "export R1_fastq_pattern='*_R1_*.fastq.gz'"
echo "export R2_fastq_pattern='*_R2_*.fastq.gz'"
echo ""

echo "# Set number of CPUs to use"
echo 'export threads=40'
echo ""


echo "## Inititalize arrays"
echo 'export fastq_array_R1=()'
echo 'export fastq_array_R2=()'
echo 'export raw_fastqs_array=()'
echo 'export R1_names_array=()'
echo 'export R2_names_array=()'
echo ""

echo "# Programs associative array"
echo "declare -A programs_array"
echo "programs_array=("
echo '[fastqc]="${fastqc}" \'
echo '[multiqc]="${multiqc}" \'
echo ")"
echo ""

echo "# Print formatting"
echo 'export line="--------------------------------------------------------"'
echo ""
} > .bashvars

cat .bashvars
#### Assign Variables ####

# Data directories
export timeseries_dir=/home/shared/8TB_HDD_01/sam/gitrepos/urol-e5/timeseries_molecular
export output_dir_top=${timeseries_dir}/D-Apul/output/00.00-D-Apul-RNAseq-reads-FastQC-MultiQC.Rmd
export raw_fastqc_dir=${timeseries_dir}/D-Apul/${output_dir_top}/raw-fastqc
export raw_reads_dir=${timeseries_dir}/D-Apul/data/raw-fastqs
export raw_reads_url="https://owl.fish.washington.edu/nightingales/E5-coral-time-series/30-1047560508/"

# Paths to programs
export fastqc=/home/shared/FastQC-0.12.1/fastqc
export multiqc=/home/sam/programs/mambaforge/bin/multiqc

# Set FastQ filename patterns
export fastq_pattern='*.fastq.gz'
export R1_fastq_pattern='*_R1_*.fastq.gz'
export R2_fastq_pattern='*_R2_*.fastq.gz'

# Set number of CPUs to use
export threads=40

## Inititalize arrays
export fastq_array_R1=()
export fastq_array_R2=()
export raw_fastqs_array=()
export R1_names_array=()
export R2_names_array=()

# Programs associative array
declare -A programs_array
programs_array=(
[fastqc]="${fastqc}" \
[multiqc]="${multiqc}" \
)

# Print formatting
export line="--------------------------------------------------------"

2 Download A.pulchra RNA-seq FastQs

2.1 Download raw RNA-seq reads

Reads are downloaded from https://owl.fish.washington.edu/nightingales/E5-coral-time-series/30-1047560508/

Since sequencing included multiple species, the code will also parse only those that are A.pulchra.

The --cut-dirs 3 command cuts the preceding directory structure (i.e.Β nightingales/E5-coral-time-series/30-1047560508/) so that we just end up with the reads.

# Load bash variables into memory
source .bashvars

# Make output directory if it doesn't exist
mkdir --parents ${raw_reads_dir}

# Create list of only A.pulchra sample names
sample_list=$(awk -F "," 'NR > 2 {print $5"\t"$6}' ${timeseries_dir}/data/rna_metadata.csv | awk -F"[\t-]" '$2 == "ACR" {print $1}')

echo ""
echo "${line}"
echo ""
echo "Sample list:"
echo ""
echo "${sample_list}"
echo ""
echo "${line}"
echo ""


# Use printf to format each item for use in wget
formatted_list=$(printf "*%s*," ${sample_list})

# Remove the trailing comma and append *.md5
formatted_list="${formatted_list%,},*.md5"

# Output the final wget command
echo ""
echo "${line}"
echo ""
echo "Formatted wget accept list:"
echo ""
echo "wget --accept=\"$formatted_list\""
echo ""
echo "${line}"
echo ""

# Run wget to retrieve FastQs and MD5 files
wget \
--directory-prefix ${raw_reads_dir} \
--recursive \
--no-check-certificate \
--continue \
--cut-dirs 3 \
--no-host-directories \
--no-parent \
--quiet \
--accept=\"$formatted_list\" ${raw_reads_url}

ls -lh "${raw_reads_dir}"

--------------------------------------------------------

Sample list:

1H6
1B1
1D3
1B5
1D6
1H7
1D9
1E9
1D8
1A12
1D4
2C1
1A9
1G5
1A2
2F1
1D10
1E1
1B9
2C2
2B3
1E5
1C4
2B2
2G1
1F8
1A10
2D2
1E3
1F4
1B10
1A1
1F11
1B2
1C10
2E2
1A8
1H12
1H8

--------------------------------------------------------


--------------------------------------------------------

Formatted wget accept list:

wget --accept="*1H6*,*1B1*,*1D3*,*1B5*,*1D6*,*1H7*,*1D9*,*1E9*,*1D8*,*1A12*,*1D4*,*2C1*,*1A9*,*1G5*,*1A2*,*2F1*,*1D10*,*1E1*,*1B9*,*2C2*,*2B3*,*1E5*,*1C4*,*2B2*,*2G1*,*1F8*,*1A10*,*2D2*,*1E3*,*1F4*,*1B10*,*1A1*,*1F11*,*1B2*,*1C10*,*2E2*,*1A8*,*1H12*,*1H8*,*.md5"

--------------------------------------------------------

total 116G
-rw-r--r-- 1 sam sam 1.4G Oct  3 08:30 10--1B2_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 08:30 10--1B2_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 08:32 10--1B2_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 08:32 10--1B2_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 2.1G Oct  3 08:42 102--2F1_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 08:42 102--2F1_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 2.1G Oct  3 08:45 102--2F1_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 08:45 102--2F1_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 08:46 103--2G1_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 08:46 103--2G1_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 08:48 103--2G1_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 08:48 103--2G1_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 08:57 106--2B2_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 08:57 106--2B2_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 08:59 106--2B2_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 08:59 106--2B2_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 09:01 107--2C2_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 09:01 107--2C2_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 09:03 107--2C2_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 09:03 107--2C2_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 09:05 108--2D2_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 09:05 108--2D2_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 09:07 108--2D2_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 09:07 108--2D2_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 09:09 109--2E2_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 09:09 109--2E2_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 09:11 109--2E2_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 09:11 109--2E2_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 09:31 114--2B3_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 09:31 114--2B3_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 09:33 114--2B3_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 09:33 114--2B3_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 08:26 1--1A1_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   59 Oct  3 08:26 1--1A1_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 08:28 1--1A1_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   59 Oct  3 08:28 1--1A1_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.1G Oct  3 10:20 20--1D3_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 10:20 20--1D3_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.1G Oct  3 10:21 20--1D3_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 10:21 20--1D3_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 10:23 21--1E3_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 10:23 21--1E3_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 10:25 21--1E3_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 10:25 21--1E3_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 10:16 2--1B1_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   59 Oct  3 10:16 2--1B1_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 10:18 2--1B1_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   59 Oct  3 10:18 2--1B1_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 10:45 27--1C4_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 10:45 27--1C4_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 10:47 27--1C4_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 10:47 27--1C4_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 10:49 28--1D4_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 10:49 28--1D4_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 10:51 28--1D4_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 10:51 28--1D4_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 11:00 30--1F4_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:00 30--1F4_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 11:02 30--1F4_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:02 30--1F4_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 11:17 34--1B5_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:17 34--1B5_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 11:19 34--1B5_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:19 34--1B5_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 11:28 37--1E5_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:28 37--1E5_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 11:30 37--1E5_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:30 37--1E5_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 11:36 39--1G5_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:36 39--1G5_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 11:38 39--1G5_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:38 39--1G5_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 11:56 44--1D6_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:56 44--1D6_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 11:58 44--1D6_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 11:58 44--1D6_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 12:20 5--1E1_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   59 Oct  3 12:20 5--1E1_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 12:22 5--1E1_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   59 Oct  3 12:22 5--1E1_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 12:44 56--1H7_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 12:44 56--1H7_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 12:45 56--1H7_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 12:45 56--1H7_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 12:47 57--1A8_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 12:47 57--1A8_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 12:48 57--1A8_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 12:48 57--1A8_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.1G Oct  3 13:00 60--1D8_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:01 60--1D8_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.1G Oct  3 13:02 60--1D8_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:02 60--1D8_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 13:08 62--1F8_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:08 62--1F8_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 13:11 62--1F8_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:11 62--1F8_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 13:17 64--1H8_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:17 64--1H8_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 13:18 64--1H8_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:18 64--1H8_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 13:20 65--1A9_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:20 65--1A9_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 13:23 65--1A9_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:23 65--1A9_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.7G Oct  3 13:25 66--1B9_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:25 66--1B9_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 13:27 66--1B9_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:27 66--1B9_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 13:33 68--1D9_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:33 68--1D9_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.6G Oct  3 13:35 68--1D9_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:35 68--1D9_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 13:38 69--1E9_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:38 69--1E9_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 13:40 69--1E9_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 13:40 69--1E9_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 13:55 73--1A10_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 13:56 73--1A10_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 13:58 73--1A10_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 13:58 73--1A10_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 13:59 74--1B10_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 13:59 74--1B10_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 14:01 74--1B10_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:01 74--1B10_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 14:03 75--1C10_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:03 75--1C10_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 14:05 75--1C10_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:05 75--1C10_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 14:07 76--1D10_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:07 76--1D10_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 14:09 76--1D10_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:09 76--1D10_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 14:11 77--1E10_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:11 77--1E10_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 14:13 77--1E10_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:13 77--1E10_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 14:29 81--1A11_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:29 81--1A11_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 14:30 81--1A11_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:30 81--1A11_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 14:32 82--1B11_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:32 82--1B11_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 14:34 82--1B11_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:34 82--1B11_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 14:44 85--1E11_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:44 85--1E11_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 14:45 85--1E11_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:45 85--1E11_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.1G Oct  3 14:47 86--1F11_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:47 86--1F11_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.1G Oct  3 14:49 86--1F11_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:49 86--1F11_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 14:57 89--1A12_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:57 89--1A12_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.2G Oct  3 14:58 89--1A12_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 14:58 89--1A12_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 15:04 90--1B12_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 15:04 90--1B12_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 15:06 90--1B12_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 15:06 90--1B12_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 15:00 9--1A2_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   59 Oct  3 15:00 9--1A2_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.5G Oct  3 15:02 9--1A2_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   59 Oct  3 15:02 9--1A2_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 15:15 93--1E12_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 15:15 93--1E12_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.4G Oct  3 15:17 93--1E12_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 15:17 93--1E12_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.1G Oct  3 15:27 96--1H12_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 15:27 96--1H12_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.1G Oct  3 15:29 96--1H12_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   61 Oct  3 15:29 96--1H12_R2_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 15:38 99--2C1_R1_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 15:38 99--2C1_R1_001.fastq.gz.md5
-rw-r--r-- 1 sam sam 1.3G Oct  3 15:40 99--2C1_R2_001.fastq.gz
-rw-r--r-- 1 sam sam   60 Oct  3 15:40 99--2C1_R2_001.fastq.gz.md5
-rw-rw-r-- 1 sam sam  138 Oct  4 10:52 README.md

2.2 Verify raw read checksums

# Load bash variables into memory
source .bashvars

cd "${raw_reads_dir}"

# Checksums file contains other files, so this just looks for the sRNAseq files.
for file in *.md5
do
  md5sum --check "${file}"
done
./10--1B2_R1_001.fastq.gz: OK
./10--1B2_R2_001.fastq.gz: OK
./102--2F1_R1_001.fastq.gz: OK
./102--2F1_R2_001.fastq.gz: OK
./103--2G1_R1_001.fastq.gz: OK
./103--2G1_R2_001.fastq.gz: OK
./106--2B2_R1_001.fastq.gz: OK
./106--2B2_R2_001.fastq.gz: OK
./107--2C2_R1_001.fastq.gz: OK
./107--2C2_R2_001.fastq.gz: OK
./108--2D2_R1_001.fastq.gz: OK
./108--2D2_R2_001.fastq.gz: OK
./109--2E2_R1_001.fastq.gz: OK
./109--2E2_R2_001.fastq.gz: OK
./114--2B3_R1_001.fastq.gz: OK
./114--2B3_R2_001.fastq.gz: OK
./1--1A1_R1_001.fastq.gz: OK
./1--1A1_R2_001.fastq.gz: OK
./20--1D3_R1_001.fastq.gz: OK
./20--1D3_R2_001.fastq.gz: OK
./21--1E3_R1_001.fastq.gz: OK
./21--1E3_R2_001.fastq.gz: OK
./2--1B1_R1_001.fastq.gz: OK
./2--1B1_R2_001.fastq.gz: OK
./27--1C4_R1_001.fastq.gz: OK
./27--1C4_R2_001.fastq.gz: OK
./28--1D4_R1_001.fastq.gz: OK
./28--1D4_R2_001.fastq.gz: OK
./30--1F4_R1_001.fastq.gz: OK
./30--1F4_R2_001.fastq.gz: OK
./34--1B5_R1_001.fastq.gz: OK
./34--1B5_R2_001.fastq.gz: OK
./37--1E5_R1_001.fastq.gz: OK
./37--1E5_R2_001.fastq.gz: OK
./39--1G5_R1_001.fastq.gz: OK
./39--1G5_R2_001.fastq.gz: OK
./44--1D6_R1_001.fastq.gz: OK
./44--1D6_R2_001.fastq.gz: OK
./5--1E1_R1_001.fastq.gz: OK
./5--1E1_R2_001.fastq.gz: OK
./56--1H7_R1_001.fastq.gz: OK
./56--1H7_R2_001.fastq.gz: OK
./57--1A8_R1_001.fastq.gz: OK
./57--1A8_R2_001.fastq.gz: OK
./60--1D8_R1_001.fastq.gz: OK
./60--1D8_R2_001.fastq.gz: OK
./62--1F8_R1_001.fastq.gz: OK
./62--1F8_R2_001.fastq.gz: OK
./64--1H8_R1_001.fastq.gz: OK
./64--1H8_R2_001.fastq.gz: OK
./65--1A9_R1_001.fastq.gz: OK
./65--1A9_R2_001.fastq.gz: OK
./66--1B9_R1_001.fastq.gz: OK
./66--1B9_R2_001.fastq.gz: OK
./68--1D9_R1_001.fastq.gz: OK
./68--1D9_R2_001.fastq.gz: OK
./69--1E9_R1_001.fastq.gz: OK
./69--1E9_R2_001.fastq.gz: OK
./73--1A10_R1_001.fastq.gz: OK
./73--1A10_R2_001.fastq.gz: OK
./74--1B10_R1_001.fastq.gz: OK
./74--1B10_R2_001.fastq.gz: OK
./75--1C10_R1_001.fastq.gz: OK
./75--1C10_R2_001.fastq.gz: OK
./76--1D10_R1_001.fastq.gz: OK
./76--1D10_R2_001.fastq.gz: OK
./77--1E10_R1_001.fastq.gz: OK
./77--1E10_R2_001.fastq.gz: OK
./81--1A11_R1_001.fastq.gz: OK
./81--1A11_R2_001.fastq.gz: OK
./82--1B11_R1_001.fastq.gz: OK
./82--1B11_R2_001.fastq.gz: OK
./85--1E11_R1_001.fastq.gz: OK
./85--1E11_R2_001.fastq.gz: OK
./86--1F11_R1_001.fastq.gz: OK
./86--1F11_R2_001.fastq.gz: OK
./89--1A12_R1_001.fastq.gz: OK
./89--1A12_R2_001.fastq.gz: OK
./90--1B12_R1_001.fastq.gz: OK
./90--1B12_R2_001.fastq.gz: OK
./9--1A2_R1_001.fastq.gz: OK
./9--1A2_R2_001.fastq.gz: OK
./93--1E12_R1_001.fastq.gz: OK
./93--1E12_R2_001.fastq.gz: OK
./96--1H12_R1_001.fastq.gz: OK
./96--1H12_R2_001.fastq.gz: OK
./99--2C1_R1_001.fastq.gz: OK
./99--2C1_R2_001.fastq.gz: OK

3 FastQC/MultiQC on raw reads

# Load bash variables into memory
source .bashvars

# Make output directory if it doesn't exist
mkdir --parents "${raw_fastqc_dir}"

############ RUN FASTQC ############


# Create array of trimmed FastQs
raw_fastqs_array=(${raw_reads_dir}/${fastq_pattern})

# Pass array contents to new variable as space-delimited list
raw_fastqc_list=$(echo "${raw_fastqs_array[*]}")

echo "Beginning FastQC on raw reads..."
echo ""

# Run FastQC
### NOTE: Do NOT quote raw_fastqc_list
${programs_array[fastqc]} \
--threads ${threads} \
--outdir ${raw_fastqc_dir} \
--quiet \
${raw_fastqc_list}

echo "FastQC on raw reads complete!"
echo ""

############ END FASTQC ############

############ RUN MULTIQC ############
echo "Beginning MultiQC on raw FastQC..."
echo ""

${programs_array[multiqc]} ${raw_fastqc_dir} -o ${raw_fastqc_dir}

echo ""
echo "MultiQC on raw FastQs complete."
echo ""

############ END MULTIQC ############

echo "Removing FastQC zip files."
echo ""
rm ${raw_fastqc_dir}/*.zip
echo "FastQC zip files removed."
echo ""

# View directory contents
ls -lh ${raw_fastqc_dir}
Beginning FastQC on raw reads...

application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
application/gzip
FastQC on raw reads complete!

Beginning MultiQC on raw FastQC...


  /// MultiQC πŸ” | v1.14

|           multiqc | MultiQC Version v1.25.1 now available!
|           multiqc | Search path : /home/shared/8TB_HDD_01/sam/gitrepos/urol-e5/timeseries_molecular/D-Apul/home/shared/8TB_HDD_01/sam/gitrepos/urol-e5/timeseries_molecular/D-Apul/output/00.00-D-Apul-RNAseq-reads-FastQC-MultiQC.Rmd/raw-fastqc
|         searching | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 177/177  
|            fastqc | Found 88 reports
|           multiqc | Compressing plot data
|           multiqc | Previous MultiQC output found! Adjusting filenames..
|           multiqc | Use -f or --force to overwrite existing reports instead
|           multiqc | Report      : ../home/shared/8TB_HDD_01/sam/gitrepos/urol-e5/timeseries_molecular/D-Apul/output/00.00-D-Apul-RNAseq-reads-FastQC-MultiQC.Rmd/raw-fastqc/multiqc_report_1.html
|           multiqc | Data        : ../home/shared/8TB_HDD_01/sam/gitrepos/urol-e5/timeseries_molecular/D-Apul/output/00.00-D-Apul-RNAseq-reads-FastQC-MultiQC.Rmd/raw-fastqc/multiqc_data_1
|           multiqc | MultiQC complete
|           multiqc | 1 flat-image plot used in the report due to large sample numbers
|           multiqc | To force interactive plots, use the '--interactive' flag. 
See the documentation.

MultiQC on raw FastQs complete.

Removing FastQC zip files.

FastQC zip files removed.

total 57M
-rw-r--r-- 1 sam sam 603K Oct  5 08:25 10--1B2_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:25 10--1B2_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:28 102--2F1_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 605K Oct  5 08:28 102--2F1_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:25 103--2G1_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 605K Oct  5 08:25 103--2G1_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:26 106--2B2_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 600K Oct  5 08:26 106--2B2_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:25 107--2C2_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:25 107--2C2_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:26 108--2D2_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:26 108--2D2_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 610K Oct  5 08:25 109--2E2_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 608K Oct  5 08:24 109--2E2_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:25 114--2B3_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 600K Oct  5 08:25 114--2B3_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:25 1--1A1_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 608K Oct  5 08:25 1--1A1_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:24 20--1D3_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 596K Oct  5 08:24 20--1D3_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:25 21--1E3_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:24 21--1E3_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:25 2--1B1_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 605K Oct  5 08:26 2--1B1_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:26 27--1C4_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:25 27--1C4_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:27 28--1D4_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:26 28--1D4_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:24 30--1F4_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:25 30--1F4_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 595K Oct  5 08:26 34--1B5_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 605K Oct  5 08:26 34--1B5_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 600K Oct  5 08:24 37--1E5_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:25 37--1E5_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 600K Oct  5 08:26 39--1G5_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 607K Oct  5 08:26 39--1G5_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:25 44--1D6_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:25 44--1D6_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 600K Oct  5 08:25 5--1E1_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 600K Oct  5 08:26 5--1E1_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:29 56--1H7_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:29 56--1H7_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:29 57--1A8_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 605K Oct  5 08:29 57--1A8_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:29 60--1D8_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 606K Oct  5 08:29 60--1D8_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:31 62--1F8_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:31 62--1F8_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:30 64--1H8_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:30 64--1H8_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 600K Oct  5 08:31 65--1A9_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:31 65--1A9_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:31 66--1B9_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:31 66--1B9_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 606K Oct  5 08:31 68--1D9_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:31 68--1D9_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 598K Oct  5 08:31 69--1E9_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:31 69--1E9_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:31 73--1A10_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:31 73--1A10_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:31 74--1B10_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:31 74--1B10_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:30 75--1C10_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:31 75--1C10_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 600K Oct  5 08:31 76--1D10_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 605K Oct  5 08:31 76--1D10_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:32 77--1E10_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 605K Oct  5 08:31 77--1E10_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 606K Oct  5 08:31 81--1A11_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 613K Oct  5 08:31 81--1A11_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:31 82--1B11_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:31 82--1B11_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:31 85--1E11_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 608K Oct  5 08:32 85--1E11_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 599K Oct  5 08:30 86--1F11_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:31 86--1F11_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 602K Oct  5 08:31 89--1A12_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:31 89--1A12_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:32 90--1B12_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:33 90--1B12_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 598K Oct  5 08:33 9--1A2_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 604K Oct  5 08:33 9--1A2_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 595K Oct  5 08:33 93--1E12_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:33 93--1E12_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 603K Oct  5 08:33 96--1H12_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 601K Oct  5 08:33 96--1H12_R2_001_fastqc.html
-rw-r--r-- 1 sam sam 607K Oct  5 08:33 99--2C1_R1_001_fastqc.html
-rw-r--r-- 1 sam sam 607K Oct  5 08:33 99--2C1_R2_001_fastqc.html
drwxr-xr-x 2 sam sam 4.0K Oct  5 08:10 multiqc_data
drwxr-xr-x 2 sam sam 4.0K Oct  5 08:33 multiqc_data_1
-rw-r--r-- 1 sam sam 2.3M Oct  5 08:33 multiqc_report_1.html
-rw-r--r-- 1 sam sam 2.3M Oct  5 08:10 multiqc_report.html
Ewels, Philip, MΓ₯ns Magnusson, Sverker Lundin, and Max KΓ€ller. 2016. β€œMultiQC: Summarize Analysis Results for Multiple Tools and Samples in a Single Report.” Bioinformatics 32 (19): 3047–48. https://doi.org/10.1093/bioinformatics/btw354.
LS0tCnRpdGxlOiAiMDAuMDAtRC1BcHVsLVJOQXNlcS1yZWFkcy1GYXN0UUMtTXVsdGlRQy5SbWQiCmF1dGhvcjogIlNhbSBXaGl0ZSIKZGF0ZTogIjIwMjQtMTAtMDQiCm91dHB1dDogCiAgYm9va2Rvd246Omh0bWxfZG9jdW1lbnQyOgogICAgdGhlbWU6IGNvc21vCiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICBjb2RlX2ZvbGRpbmc6IHNob3cKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKICBnaXRodWJfZG9jdW1lbnQ6CiAgICB0b2M6IHRydWUKICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQogIGh0bWxfZG9jdW1lbnQ6CiAgICB0aGVtZTogY29zbW8KICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIGNvZGVfZm9sZGluZzogc2hvdwogICAgY29kZV9kb3dubG9hZDogdHJ1ZQpiaWJsaW9ncmFwaHk6IHJlZmVyZW5jZXMuYmliCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmxpYnJhcnkoa25pdHIpCmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICBlY2hvID0gVFJVRSwgICAgICAgICAjIERpc3BsYXkgY29kZSBjaHVua3MKICBldmFsID0gRkFMU0UsICAgICAgICAjIEV2YWx1YXRlIGNvZGUgY2h1bmtzCiAgd2FybmluZyA9IEZBTFNFLCAgICAgIyBIaWRlIHdhcm5pbmdzCiAgbWVzc2FnZSA9IEZBTFNFLCAgICAgIyBIaWRlIG1lc3NhZ2VzCiAgY29tbWVudCA9ICIiICAgICAgICAgIyBQcmV2ZW50cyBhcHBlbmRpbmcgJyMjJyB0byBiZWdpbm5pbmcgb2YgbGluZXMgaW4gY29kZSBvdXRwdXQKKQpgYGAKClRoaXMgUm1kIGZpbGUgd2lsbCBkb3dubG9hZCByYXcgUk5BLXNlcSBGYXN0UXMgZm9yICpBLnB1bGNocmEqIGFuZCBldmFsdWF0ZSB0aGVtIHVzaW5nIFtGYXN0UUNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zLWFuZHJld3MvRmFzdFFDKSBhbmQgW011bHRpUUNdKGh0dHBzOi8vbXVsdGlxYy5pbmZvLylbQGV3ZWxzMjAxNl0uCgojIENyZWF0ZSBhIEJhc2ggdmFyaWFibGVzIGZpbGUKClRoaXMgYWxsb3dzIHVzYWdlIG9mIEJhc2ggdmFyaWFibGVzIGFjcm9zcyBSIE1hcmtkb3duIGNodW5rcy4KYGBge3Igc2F2ZS1iYXNoLXZhcmlhYmxlcy10by1ydmFycy1maWxlLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CnsKZWNobyAiIyMjIyBBc3NpZ24gVmFyaWFibGVzICMjIyMiCmVjaG8gIiIKCmVjaG8gIiMgRGF0YSBkaXJlY3RvcmllcyIKZWNobyAnZXhwb3J0IHRpbWVzZXJpZXNfZGlyPS9ob21lL3NoYXJlZC84VEJfSEREXzAxL3NhbS9naXRyZXBvcy91cm9sLWU1L3RpbWVzZXJpZXNfbW9sZWN1bGFyJwplY2hvICdleHBvcnQgb3V0cHV0X2Rpcl90b3A9JHt0aW1lc2VyaWVzX2Rpcn0vRC1BcHVsL291dHB1dC8wMC4wMC1ELUFwdWwtUk5Bc2VxLXJlYWRzLUZhc3RRQy1NdWx0aVFDLlJtZCcKZWNobyAnZXhwb3J0IHJhd19mYXN0cWNfZGlyPSR7dGltZXNlcmllc19kaXJ9L0QtQXB1bC8ke291dHB1dF9kaXJfdG9wfS9yYXctZmFzdHFjJwplY2hvICdleHBvcnQgcmF3X3JlYWRzX2Rpcj0ke3RpbWVzZXJpZXNfZGlyfS9ELUFwdWwvZGF0YS9yYXctZmFzdHFzJwplY2hvICdleHBvcnQgcmF3X3JlYWRzX3VybD0iaHR0cHM6Ly9vd2wuZmlzaC53YXNoaW5ndG9uLmVkdS9uaWdodGluZ2FsZXMvRTUtY29yYWwtdGltZS1zZXJpZXMvMzAtMTA0NzU2MDUwOC8iJwplY2hvICIiCgplY2hvICIjIFBhdGhzIHRvIHByb2dyYW1zIgplY2hvICdleHBvcnQgZmFzdHFjPS9ob21lL3NoYXJlZC9GYXN0UUMtMC4xMi4xL2Zhc3RxYycKZWNobyAnZXhwb3J0IG11bHRpcWM9L2hvbWUvc2FtL3Byb2dyYW1zL21hbWJhZm9yZ2UvYmluL211bHRpcWMnCmVjaG8gIiIKCmVjaG8gIiMgU2V0IEZhc3RRIGZpbGVuYW1lIHBhdHRlcm5zIgplY2hvICJleHBvcnQgZmFzdHFfcGF0dGVybj0nKi5mYXN0cS5neiciCmVjaG8gImV4cG9ydCBSMV9mYXN0cV9wYXR0ZXJuPScqX1IxXyouZmFzdHEuZ3onIgplY2hvICJleHBvcnQgUjJfZmFzdHFfcGF0dGVybj0nKl9SMl8qLmZhc3RxLmd6JyIKZWNobyAiIgoKZWNobyAiIyBTZXQgbnVtYmVyIG9mIENQVXMgdG8gdXNlIgplY2hvICdleHBvcnQgdGhyZWFkcz00MCcKZWNobyAiIgoKCmVjaG8gIiMjIEluaXRpdGFsaXplIGFycmF5cyIKZWNobyAnZXhwb3J0IGZhc3RxX2FycmF5X1IxPSgpJwplY2hvICdleHBvcnQgZmFzdHFfYXJyYXlfUjI9KCknCmVjaG8gJ2V4cG9ydCByYXdfZmFzdHFzX2FycmF5PSgpJwplY2hvICdleHBvcnQgUjFfbmFtZXNfYXJyYXk9KCknCmVjaG8gJ2V4cG9ydCBSMl9uYW1lc19hcnJheT0oKScKZWNobyAiIgoKZWNobyAiIyBQcm9ncmFtcyBhc3NvY2lhdGl2ZSBhcnJheSIKZWNobyAiZGVjbGFyZSAtQSBwcm9ncmFtc19hcnJheSIKZWNobyAicHJvZ3JhbXNfYXJyYXk9KCIKZWNobyAnW2Zhc3RxY109IiR7ZmFzdHFjfSIgXCcKZWNobyAnW211bHRpcWNdPSIke211bHRpcWN9IiBcJwplY2hvICIpIgplY2hvICIiCgplY2hvICIjIFByaW50IGZvcm1hdHRpbmciCmVjaG8gJ2V4cG9ydCBsaW5lPSItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSInCmVjaG8gIiIKfSA+IC5iYXNodmFycwoKY2F0IC5iYXNodmFycwpgYGAKCiMgRG93bmxvYWQgX0EucHVsY2hyYV8gUk5BLXNlcSBGYXN0UXMKCiMjIERvd25sb2FkIHJhdyBSTkEtc2VxIHJlYWRzCgpSZWFkcyBhcmUgZG93bmxvYWRlZCBmcm9tIApodHRwczovL293bC5maXNoLndhc2hpbmd0b24uZWR1L25pZ2h0aW5nYWxlcy9FNS1jb3JhbC10aW1lLXNlcmllcy8zMC0xMDQ3NTYwNTA4LwoKU2luY2Ugc2VxdWVuY2luZyBpbmNsdWRlZCBtdWx0aXBsZSBzcGVjaWVzLCB0aGUgY29kZSB3aWxsIGFsc28gcGFyc2Ugb25seSB0aG9zZSB0aGF0IGFyZSBfQS5wdWxjaHJhXy4KClRoZSBgLS1jdXQtZGlycyAzYCBjb21tYW5kIGN1dHMgdGhlIHByZWNlZGluZyBkaXJlY3Rvcnkgc3RydWN0dXJlIChpLmUuIGBuaWdodGluZ2FsZXMvRTUtY29yYWwtdGltZS1zZXJpZXMvMzAtMTA0NzU2MDUwOC9gKQpzbyB0aGF0IHdlIGp1c3QgZW5kIHVwIHdpdGggdGhlIHJlYWRzLgoKYGBge2Jhc2ggZG93bmxvYWQtcmF3LXJlYWRzLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgojIE1ha2Ugb3V0cHV0IGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0Cm1rZGlyIC0tcGFyZW50cyAke3Jhd19yZWFkc19kaXJ9CgojIENyZWF0ZSBsaXN0IG9mIG9ubHkgQS5wdWxjaHJhIHNhbXBsZSBuYW1lcwpzYW1wbGVfbGlzdD0kKGF3ayAtRiAiLCIgJ05SID4gMiB7cHJpbnQgJDUiXHQiJDZ9JyAke3RpbWVzZXJpZXNfZGlyfS9kYXRhL3JuYV9tZXRhZGF0YS5jc3YgfCBhd2sgLUYiW1x0LV0iICckMiA9PSAiQUNSIiB7cHJpbnQgJDF9JykKCmVjaG8gIiIKZWNobyAiJHtsaW5lfSIKZWNobyAiIgplY2hvICJTYW1wbGUgbGlzdDoiCmVjaG8gIiIKZWNobyAiJHtzYW1wbGVfbGlzdH0iCmVjaG8gIiIKZWNobyAiJHtsaW5lfSIKZWNobyAiIgoKCiMgVXNlIHByaW50ZiB0byBmb3JtYXQgZWFjaCBpdGVtIGZvciB1c2UgaW4gd2dldApmb3JtYXR0ZWRfbGlzdD0kKHByaW50ZiAiKiVzKiwiICR7c2FtcGxlX2xpc3R9KQoKIyBSZW1vdmUgdGhlIHRyYWlsaW5nIGNvbW1hIGFuZCBhcHBlbmQgKi5tZDUKZm9ybWF0dGVkX2xpc3Q9IiR7Zm9ybWF0dGVkX2xpc3QlLH0sKi5tZDUiCgojIE91dHB1dCB0aGUgZmluYWwgd2dldCBjb21tYW5kCmVjaG8gIiIKZWNobyAiJHtsaW5lfSIKZWNobyAiIgplY2hvICJGb3JtYXR0ZWQgd2dldCBhY2NlcHQgbGlzdDoiCmVjaG8gIiIKZWNobyAid2dldCAtLWFjY2VwdD1cIiRmb3JtYXR0ZWRfbGlzdFwiIgplY2hvICIiCmVjaG8gIiR7bGluZX0iCmVjaG8gIiIKCiMgUnVuIHdnZXQgdG8gcmV0cmlldmUgRmFzdFFzIGFuZCBNRDUgZmlsZXMKd2dldCBcCi0tZGlyZWN0b3J5LXByZWZpeCAke3Jhd19yZWFkc19kaXJ9IFwKLS1yZWN1cnNpdmUgXAotLW5vLWNoZWNrLWNlcnRpZmljYXRlIFwKLS1jb250aW51ZSBcCi0tY3V0LWRpcnMgMyBcCi0tbm8taG9zdC1kaXJlY3RvcmllcyBcCi0tbm8tcGFyZW50IFwKLS1xdWlldCBcCi0tYWNjZXB0PVwiJGZvcm1hdHRlZF9saXN0XCIgJHtyYXdfcmVhZHNfdXJsfQoKbHMgLWxoICIke3Jhd19yZWFkc19kaXJ9IgpgYGAKCiMjIFZlcmlmeSByYXcgcmVhZCBjaGVja3N1bXMKYGBge2Jhc2ggdmVyaWZ5LXJhdy1yZWFkLWNoZWNrc3VtcywgZW5naW5lPSdiYXNoJywgZXZhbD1UUlVFfQojIExvYWQgYmFzaCB2YXJpYWJsZXMgaW50byBtZW1vcnkKc291cmNlIC5iYXNodmFycwoKY2QgIiR7cmF3X3JlYWRzX2Rpcn0iCgojIENoZWNrc3VtcyBmaWxlIGNvbnRhaW5zIG90aGVyIGZpbGVzLCBzbyB0aGlzIGp1c3QgbG9va3MgZm9yIHRoZSBzUk5Bc2VxIGZpbGVzLgpmb3IgZmlsZSBpbiAqLm1kNQpkbwogIG1kNXN1bSAtLWNoZWNrICIke2ZpbGV9Igpkb25lCmBgYAoKIyBGYXN0UUMvTXVsdGlRQyBvbiByYXcgcmVhZHMKYGBge2Jhc2ggcmF3LWZhc3RxYy1tdWx0aXFjLCBlbmdpbmU9J2Jhc2gnLCBldmFsPVRSVUV9CiMgTG9hZCBiYXNoIHZhcmlhYmxlcyBpbnRvIG1lbW9yeQpzb3VyY2UgLmJhc2h2YXJzCgojIE1ha2Ugb3V0cHV0IGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0Cm1rZGlyIC0tcGFyZW50cyAiJHtyYXdfZmFzdHFjX2Rpcn0iCgojIyMjIyMjIyMjIyMgUlVOIEZBU1RRQyAjIyMjIyMjIyMjIyMKCgojIENyZWF0ZSBhcnJheSBvZiB0cmltbWVkIEZhc3RRcwpyYXdfZmFzdHFzX2FycmF5PSgke3Jhd19yZWFkc19kaXJ9LyR7ZmFzdHFfcGF0dGVybn0pCgojIFBhc3MgYXJyYXkgY29udGVudHMgdG8gbmV3IHZhcmlhYmxlIGFzIHNwYWNlLWRlbGltaXRlZCBsaXN0CnJhd19mYXN0cWNfbGlzdD0kKGVjaG8gIiR7cmF3X2Zhc3Rxc19hcnJheVsqXX0iKQoKZWNobyAiQmVnaW5uaW5nIEZhc3RRQyBvbiByYXcgcmVhZHMuLi4iCmVjaG8gIiIKCiMgUnVuIEZhc3RRQwojIyMgTk9URTogRG8gTk9UIHF1b3RlIHJhd19mYXN0cWNfbGlzdAoke3Byb2dyYW1zX2FycmF5W2Zhc3RxY119IFwKLS10aHJlYWRzICR7dGhyZWFkc30gXAotLW91dGRpciAke3Jhd19mYXN0cWNfZGlyfSBcCi0tcXVpZXQgXAoke3Jhd19mYXN0cWNfbGlzdH0KCmVjaG8gIkZhc3RRQyBvbiByYXcgcmVhZHMgY29tcGxldGUhIgplY2hvICIiCgojIyMjIyMjIyMjIyMgRU5EIEZBU1RRQyAjIyMjIyMjIyMjIyMKCiMjIyMjIyMjIyMjIyBSVU4gTVVMVElRQyAjIyMjIyMjIyMjIyMKZWNobyAiQmVnaW5uaW5nIE11bHRpUUMgb24gcmF3IEZhc3RRQy4uLiIKZWNobyAiIgoKJHtwcm9ncmFtc19hcnJheVttdWx0aXFjXX0gJHtyYXdfZmFzdHFjX2Rpcn0gLW8gJHtyYXdfZmFzdHFjX2Rpcn0KCmVjaG8gIiIKZWNobyAiTXVsdGlRQyBvbiByYXcgRmFzdFFzIGNvbXBsZXRlLiIKZWNobyAiIgoKIyMjIyMjIyMjIyMjIEVORCBNVUxUSVFDICMjIyMjIyMjIyMjIwoKZWNobyAiUmVtb3ZpbmcgRmFzdFFDIHppcCBmaWxlcy4iCmVjaG8gIiIKcm0gJHtyYXdfZmFzdHFjX2Rpcn0vKi56aXAKZWNobyAiRmFzdFFDIHppcCBmaWxlcyByZW1vdmVkLiIKZWNobyAiIgoKIyBWaWV3IGRpcmVjdG9yeSBjb250ZW50cwpscyAtbGggJHtyYXdfZmFzdHFjX2Rpcn0KCmBgYAo=