#!/bin/bash
# RNA-Seq Pipeline
# 2025 May

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

#SBATCH --nodes=1			
#SBATCH --ntasks-per-node=16
#SBATCH --mem=32GB
#SBATCH --job-name=RNAseq
#SBATCH --time=24:00:00
#SBATCH --output=slurm-Bowtie2-%j.log


# =============================================================================================================================================================
# ==                                                          Load modules                                                                                   ==
# =============================================================================================================================================================
module load SAMtools/1.19.2-GCC-13.2.0
module load BEDTools/2.30.0-GCC-11.3.0
module load Bowtie2/2.5.4-GCC-13.2.0

source /userapps/hb-molgen/conda_envs/venvs/PythonTensor/bin/activate

# setting global parameters
cpu=$SLURM_JOB_CPUS_PER_NODE
cpu=16
AnneTools=/userapps/hb-molgen/AnneTools


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

function my_bowtie_SE {  # Map the reads (from the fastq file) to the reference genome ( .fna ) this will generate a SAM file (Sequence Alignment Map)
	name=$1
	forward=$2
	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 
	SAM_2_BAM $name
}

function SAM_2_BAM {  # convert SAM to sorted BAM (binairy SAM) and remove unmapped reads with option -F 4
	name=$1
	printf "\n========== Convert "$name" ======================================\n"	
	samtools view -S -b -F 4 -o $resultsdir/$name.bam $resultsdir/$name.sam
	samtools sort -@ $cpu $resultsdir/$name.bam > $resultsdir/$name.sorted.bam
	samtools index $resultsdir/$name.sorted.bam
	rm $resultsdir/$name.sam  # save space by removing the SAM file 
	rm $resultsdir/$name.bam  # save space by removing the non sorted BAM file                                                                          # 3) save space by removing the SAM file 
}

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=/scratch/p127804/PROJECTS/Wilfried/202505_023/results
	datadir=/scratch/hb-molgen/NGSdata/20250507_023
	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=/scratch/p127804/PROJECTS/Wilfried/genomes/Bacillus_subtilis_subsp_subtilis_str_168_ASM904v1_pLS20


my_bowtie_SE AJ023_01  AJ023_01_S365_L001_R1_001.fastq.gz
my_bowtie_SE AJ023_02  AJ023_02_S366_L001_R1_001.fastq.gz
my_bowtie_SE AJ023_03  AJ023_03_S253_L001_R1_001.fastq.gz
my_bowtie_SE AJ023_04  AJ023_04_S254_L001_R1_001.fastq.gz
my_bowtie_SE AJ023_05  AJ023_05_S367_L001_R1_001.fastq.gz
my_bowtie_SE AJ023_06  AJ023_06_S368_L001_R1_001.fastq.gz
my_bowtie_SE WM023_01  WM023_01_S334_L001_R1_001.fastq.gz
my_bowtie_SE WM023_02  WM023_02_S335_L001_R1_001.fastq.gz
my_bowtie_SE WM023_03  WM023_03_S336_L001_R1_001.fastq.gz
my_bowtie_SE WM023_04  WM023_04_S337_L001_R1_001.fastq.gz
my_bowtie_SE WM023_05  WM023_05_S338_L001_R1_001.fastq.gz
my_bowtie_SE WM023_06  WM023_06_S339_L001_R1_001.fastq.gz
my_bowtie_SE WM023_07  WM023_07_S340_L001_R1_001.fastq.gz
my_bowtie_SE WM023_08  WM023_08_S341_L001_R1_001.fastq.gz
my_bowtie_SE WM023_09  WM023_09_S342_L001_R1_001.fastq.gz
my_bowtie_SE WM023_10  WM023_10_S343_L001_R1_001.fastq.gz
my_bowtie_SE WM023_11  WM023_11_S344_L001_R1_001.fastq.gz
my_bowtie_SE WM023_12  WM023_12_S345_L001_R1_001.fastq.gz
my_bowtie_SE WM023_13  WM023_13_S346_L001_R1_001.fastq.gz

my_bowtie_SE WM023_14  WM023_14_S347_L001_R1_001.fastq.gz
my_bowtie_SE WM023_15  WM023_15_S348_L001_R1_001.fastq.gz
my_bowtie_SE WM023_16  WM023_16_S349_L001_R1_001.fastq.gz
my_bowtie_SE WM023_17  WM023_17_S350_L001_R1_001.fastq.gz
my_bowtie_SE WM023_18  WM023_18_S351_L001_R1_001.fastq.gz
my_bowtie_SE WM023_19  WM023_19_S352_L001_R1_001.fastq.gz
my_bowtie_SE WM023_20  WM023_20_S353_L001_R1_001.fastq.gz
my_bowtie_SE WM023_21  WM023_21_S354_L001_R1_001.fastq.gz
my_bowtie_SE WM023_22  WM023_22_S355_L001_R1_001.fastq.gz
my_bowtie_SE WM023_23  WM023_23_S356_L001_R1_001.fastq.gz
my_bowtie_SE WM023_24  WM023_24_S357_L001_R1_001.fastq.gz
my_bowtie_SE WM023_25  WM023_25_S358_L001_R1_001.fastq.gz
my_bowtie_SE WM023_26  WM023_26_S359_L001_R1_001.fastq.gz
my_bowtie_SE WM023_27  WM023_27_S360_L001_R1_001.fastq.gz
my_bowtie_SE WM023_28  WM023_28_S361_L001_R1_001.fastq.gz
my_bowtie_SE WM023_29  WM023_29_S362_L001_R1_001.fastq.gz
my_bowtie_SE WM023_30  WM023_30_S363_L001_R1_001.fastq.gz
my_bowtie_SE WM023_31  WM023_31_S364_L001_R1_001.fastq.gz


# Make a report summary
cat $resultsdir/*.bowtie2.log > $resultsdir/03.bowtie2_all.log
python3 $AnneTools/Bowtie2LogTable.py -query $resultsdir/03.bowtie2_all.log > $resultsdir/03.bowtie2_table.txt


