#!/bin/bash

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


module load Bowtie2/2.5.4-GCC-13.2.0
module load SAMtools/1.19.2-GCC-13.2.0
module load Biopython/1.84-foss-2024a

# Global parameters needed for this script
# setting global parameters
cpu=16
SOFTWAREDIR=/scratch/public/genomes/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 $fastqdir/$forward -p $cpu -S $resultsdir/$name.sam -x $genome) 2>>$resultsdir/02.$name.bowtie2.log 
	SAM_2_BAM $name
}

function my_bowtie_SE_2_fastq {  # Map the reads (from the fastq file) to the reference genome ( .fna ) this will generate a SAM file (Sequence Alignment Map)
	name=$1
	printf "\n\n========= Bowtie2 SE: "$name" =================================\n" >> $resultsdir/02.$name.bowtie2.log
	(bowtie2 --local -U $fastqdir/$2,$fastqdir/$3 -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 hits_summery {  # counts the multiple hits
	name=$1
	samtools view -F 4 $resultsdir/$name | awk '{print $1}' | sort | uniq -c | \
	awk '{count[$1]++; sum += $1; n++} END {for (i in count) print i, count[i]; print "\nAverage hits per mapped read:", sum/n}' | sort -n > $resultsdir/$name.hits_summary.txt
}


fastqdir=/scratch/hb-molgen/NGSdata/20260402_031

resultsdir=/scratch/p127804/PROJECTS/Douwe/Ortensia_2026_031/results
mkdir -p $resultsdir


genome=/scratch/p127804/PROJECTS/Douwe/genomes/Bifidobacterium_adolescentis_MB0123
# bowtie2-build $genome.fna $genome
# my_bowtie_SE OG031_01 OG031_01_S39_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_02 OG031_02_S40_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_03 OG031_03_S41_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_04 OG031_04_S42_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_05 OG031_05_S43_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_06 OG031_06_S44_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_07 OG031_07_S45_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_08 OG031_08_S46_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_09 OG031_09_S47_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_10 OG031_10_S48_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_11 OG031_11_S49_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_12 OG031_12_S50_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_13 OG031_13_S51_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_14 OG031_14_S52_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_15 OG031_15_S53_L001_R1_001.fastq.gz
# my_bowtie_SE OG031_16 OG031_16_S54_L001_R1_001.fastq.gz

resultsdir=/scratch/p127804/PROJECTS/Douwe/Ortensia_2026_031/results_MM0366
mkdir -p $resultsdir
genome=/scratch/p127804/PROJECTS/Douwe/genomes/Bifidobacterium_adolescentis_MM0366
#bowtie2-build $genome.fna $genome
my_bowtie_SE OG031_17 OG031_17_S55_L001_R1_001.fastq.gz
my_bowtie_SE OG031_18 OG031_18_S56_L001_R1_001.fastq.gz
my_bowtie_SE OG031_19 OG031_19_S57_L001_R1_001.fastq.gz
my_bowtie_SE OG031_20 OG031_20_S58_L001_R1_001.fastq.gz
my_bowtie_SE OG031_21 OG031_21_S59_L001_R1_001.fastq.gz
my_bowtie_SE OG031_22 OG031_22_S60_L001_R1_001.fastq.gz
my_bowtie_SE OG031_23 OG031_23_S61_L001_R1_001.fastq.gz
my_bowtie_SE OG031_24 OG031_24_S62_L001_R1_001.fastq.gz



############################################################################################
# # # Make a report summary

cat $resultsdir/02.*.bowtie2.log > $resultsdir/02.bowtie2_all.log
python3 $SOFTWAREDIR/Bowtie2LogTable.py -query $resultsdir/02.bowtie2_all.log > $resultsdir/02.bowtie2_all.log.table



