==== Quality Control with FastQC and MultiQC ====
Should we create a separate page for FastQC and MultiQC or have them in adapter trimming section?
I suggest the following codes:
== Dauther script ==
fastqc.sh
# SCRIPT FOR PERFORMING FASTQC
# NOTE: Run this script from the directory where the "log" directory is located,
# /mnt/proj/ibd/ds-06_cd-fecal/common
#
# PURPOSE:
# This script performs FastQC.
#
# PARAMETERS:
# 1: input_dir - Directory where FASTQ files are located.
# 2: output_dir - Directory where FastQC reports will be located
# SAMPLE USAGE:
# In a parent script: src/fastqc.sh
#
# IMPORTANT:
# - Run from a parent script.
# Check if correct number of arguments are provided
if [ "$#" -ne 2 ]; then
echo "Usage: $0 "
exit 1
fi
# Input parameters
input_dir="$1"
output_dir="$2"
echo "Running FastQC on reads..."
mkdir -p "$output_dir"
fastqc -o "$output_dir" "$input_dir/"*.fq.gz
== Parent script ==
fastqc_00.sh
#!/bin/bash
#SBATCH --mem=10gb
#SBATCH --cpus-per-task=10
#SBATCH --job-name=fastqc_multiqc_00
#SBATCH --output=log/fastqc_00%j.log # %j will be replaced with the job ID
#parameters
input=fq_renamed
output=fastqc
src/fastqc.sh $input $output
== Dauther script ==
multiqc.sh
# SCRIPT FOR PERFORMING MultiQC
# NOTE: Run this script from the directory where the "log" directory is located,
# /mnt/proj/ibd/ds-06_cd-fecal/common
#
# PURPOSE:
# This script performs MultiQC.
#
# PARAMETERS:
# 1: input_dir - Directory where FastQC reports are located.
# 2: output_dir - Directory where MultiQC report will be located
# SAMPLE USAGE:
# In a parent script: src/multiqc.sh
#
# IMPORTANT:
# - Run from a parent script.
# Check if correct number of arguments are provided
if [ "$#" -ne 2 ]; then
echo "Usage: $0 "
exit 1
fi
# Input parameters
input_dir="$1"
output_dir="$2"
echo "Running FastQC on reads..."
mkdir -p "$output_dir"
multiqc -o "$output_dir" "$input_dir/"*.fq.gz
== Parent script ==
multiqc_00.sh
#!/bin/bash
#SBATCH --mem=10gb
#SBATCH --cpus-per-task=10
#SBATCH --job-name=fastqc_multiqc_00
#SBATCH --output=log/fastqc_00%j.log # %j will be replaced with the job ID
#parameters
input=fastqc
output=multiqc
src/multiqc.sh $input $output
You can also perform them simultaneously with one parent script:
== Combined parent script ==
#!/bin/bash
#SBATCH --mem=10gb
#SBATCH --cpus-per-task=10
#SBATCH --job-name=fastqc_multiqc_00
#SBATCH --output=log/fastqc_multiqc_00%j.log # %j will be replaced with the job ID
#parameters
input_fqc=fq
output_fqc=fastqc
input_mqc=fastqc
output_mqc=multiqc
src/fastqc.sh $input_fqc $output_fqc
src/multiqc.sh $input_mqc $output_mqc
You can also use the same scripts on trimmed files. Just add "_trimmed" to the inputs and outputs like this.
input=fq_trimmed
output=fastqc_trimmed