#!/bin/bash
# RNA-Seq Pipeline
# 2022 Februari

# =============================================================================================================================================================
# ==                                                          Settings for SLURM                                                                             ==
# =============================================================================================================================================================

#SBATCH --nodes=1			
#SBATCH --ntasks-per-node=8
#SBATCH --mem=32GB
#SBATCH --job-name=RNAseq
#SBATCH --time=24:00:00

# Personal stuff; Change this to your personal settings 
#SBATCH --job-name=Bowtie2
#SBATCH --mail-type=END
#SBATCH --mail-user=youremail@student.rug.nl
#SBATCH --output=slurm-Bowtie2-%j.log


# =============================================================================================================================================================
# ==                                                          Load modules                                                                                   ==
# =============================================================================================================================================================

module load SAMtools/1.10-GCC-9.3.0
module load BEDTools/2.29.2-GCC-9.3.0
module load BioPerl/1.7.7-GCCcore-9.3.0
module load Bowtie2/2.4.4-GCC-9.3.0

# setting global parameters
cpu=8
SOFTWAREDIR=/data/pg-molgen/software
export PERL5LIB=$SOFTWAREDIR/molgentools_mirror/lib



# =============================================================================================================================================================
# ==                                                          Functions                                                                                      ==
# =============================================================================================================================================================


function my_bowtie_SE {
	name=$1
	forward=$2
	## Map the reads (from the fastq file) to the reference genome ( .fna ) this will generate a SAM file (Sequence Alignment Map)
	printf "\n\n========= Bowtie2 SE: "$name" =================================\n" >> $resultsdir/02.$name.bowtie2.log
	(bowtie2 --local -U $datadir/$forward -p $cpu -S $resultsdir/$name.sam -x $genome) 2>>$resultsdir/02.$name.bowtie2.log 
	process_bam $name
}

function my_bowtie_PE {
	name=$1
	genome=$2
	forward=$3
	reverse=$4
	printf "\n\n========= Bowtie2 PE: "$name" =================================\n" >> $resultsdir/02.$name.bowtie2.log
	(bowtie2 --local -1 $datadir/$forward -2 $datadir/$reverse -p $cpu -S $resultsdir/$name.sam -x $genome) 2>>$resultsdir/02.$name.bowtie2.log 
	process_bam $name
}

function process_bam {
	name=$1
	## Process the SAM file: a) convert to BAM (binairy SAM), b) sort and index the BAM file
	printf "\n========== process_bam "$name" ======================================\n"	
	samtools view -S -b -F 4 -o $resultsdir/$name.bam $resultsdir/$name.sam
	rm $resultsdir/$name.sam  # save space by removing the SAM file 
	samtools sort -@ $cpu $resultsdir/$name.bam > $resultsdir/$name.sorted.bam
	samtools index $resultsdir/$name.sorted.bam
	samtools depth $resultsdir/$name.sorted.bam > $resultsdir/$name.depth
}

function my_mkdir {
	if [ ! -d $1 ]; then
		mkdir $1 ;
	fi
}


# =============================================================================================================================================================
# ==                                                          Main script                                                                                    ==
# =============================================================================================================================================================


# 1. FOLDERS
	# NOTE change the folder names to your own SCRATCHDIR and resultsdir
	datadir=/data/pg-molgen/rnaseq/20230211_008/fastq
	resultsdir=/data/p127804/PROJECTS/wilfried/20230212_008/results
	
	my_mkdir $resultsdir


# 2. 
	# NOTE to get all filenames use :  ls -aR >TOC.txt
	# The main function needs 4 parameters; Sample_name   Foward_Reads   Reverse_Reads   Genome_base_Name
		# 1) Sample Name: Choose a short name. This prefix will be used to name the result files
		# 2) The genome filename is normally stored in the $genome variable
		# 3) Foward_Reads:  Name of the fastq file containing the forward reads
		# 4) Reverse_Reads: Name of the fastq file containing the reverse reads, but only when Paired End (PE) sequencing is done 


# 3. For Transcriptomics usually Single End (SE) sequencing is done
	
genome=/data/p127804/PROJECTS/wilfried/genomes/Bamyloliquefasciens_B1895_genome-plus-pBamB1895_startRapat75
my_bowtie_SE WM008_01 4A_S17_R1_001.fastq.gz
my_bowtie_SE WM008_02 4B_S18_R1_001.fastq.gz

genome=/data/p127804/PROJECTS/wilfried/genomes/Bpumilus_NRS576_genome-plus-p576_startRapAt75
my_bowtie_SE WM008_03 4C_S19_R1_001.fastq.gz
my_bowtie_SE WM008_04 4D_S20_R1_001.fastq.gz

genome=/data/p127804/PROJECTS/wilfried/genomes/Bthuringiensis_kurstaki_HD73_chromosome-plus-pAW63_startRapAt75
my_bowtie_SE WM008_05 4E_S21_R1_001.fastq.gz
my_bowtie_SE WM008_06 4F_S22_R1_001.fastq.gz

genome=/data/p127804/PROJECTS/wilfried/genomes/Bsp_NMCC4_genome-plus-pBspNMCC4_startRapAt75
my_bowtie_SE WM008_07 4G_S23_R1_001.fastq.gz
my_bowtie_SE WM008_08 4H_S24_R1_001.fastq.gz

genome=/data/p127804/PROJECTS/wilfried/genomes/Blicheniformis_B4092_genomic-plus-pBli4092_reconstructed_startRapAt75
my_bowtie_SE WM008_09 5A_S25_R1_001.fastq.gz
my_bowtie_SE WM008_10 5B_S26_R1_001.fastq.gz

genome=/data/p127804/PROJECTS/wilfried/genomes/Batrophaeus_NRS213_genomic-plus-pBatNRS213_startRapAt75
my_bowtie_SE WM008_11 5C_S27_R1_001.fastq.gz
my_bowtie_SE WM008_12 5D_S28_R1_001.fastq.gz

genome=/data/pg-molgen/rnaseq/genomes/Bacillus_subtilis_subsp_subtilis_str_168_ASM904v1_pLS20
my_bowtie_SE WM008_13 5E_S29_R1_001.fastq.gz
my_bowtie_SE WM008_14 5F_S30_R1_001.fastq.gz

genome=/data/pg-molgen/rnaseq/genomes/Bacillus_subtilis_subsp_subtilis_str_168_ASM904v1_pLS20
my_bowtie_SE WM008_15 5G_S31_R1_001.fastq.gz
my_bowtie_SE WM008_16 5H_S32_R1_001.fastq.gz


# 4. Make a report summary
	cat $resultsdir/02.*.bowtie2.log > $resultsdir/02.bowtie2_all.log
	$SOFTWAREDIR/molgentools_mirror/rnaseq/RNAseq_bowtie_report_peregrine.pl -i $resultsdir/02.bowtie2_all.log > $resultsdir/02.bowtie2_all.log.table


