#!/bin/bash


# =============================================================================================================================================================
# ==                                                          SLURM parameters                                                                               ==
# =============================================================================================================================================================

# Decide how much computer power you need
# The programs used in this script can only be executed on 1 NODE
# You can use a max of 24 task per node. But the lower the number of tasks requested the shorter the queue when submitting a job
#SBATCH --nodes=1			
#SBATCH --ntasks-per-node=4
#SBATCH --mem=16GB

# Choose between long or short queue: A short job will start quickly after submitting, but will be terminated after 30 minutes
#SBATCH --time=24:00:00
##SBATCH -p short


# Personal stuff; Change this to your personal settings 
#SBATCH --job-name=SPADES_PROKKA
#SBATCH --mail-type=END
#SBATCH --mail-user=anne.de.jong@rug.nl
#SBATCH --output=slurm-Anne-%j.log


module load FastQC/0.11.9-Java-11
module load BLAST+/2.10.1-gompi-2020a
export PERL5LIB=/data/pg-molgen/software/molgentools_mirror/lib
module load BioPerl/1.7.7-GCCcore-9.3.0
module load SPAdes/3.14.1-GCC-9.3.0-Python-3.8.2
module load prokka/1.14.6-gompi-2020a

# parameters: Modify for your folders
# Global parameters needed for this script
cpu=4
#cpu=$SLURM_NTASKS_PER_NODE  <== ?? not working!
SOFTWAREDIR=/data/pg-molgen/software


#################################################################################################################################
##                                           Functions                                                                         ##
#################################################################################################################################



function my_fastqc {
	# FastQC is a program that performs a quality check on all the fastq reads. 
	# The output is a html file
	# The forward reads are used for quality control
	name=$1
	fastq=$2
	printf "\n========== FastQC: "$name" ======================================\n"	
	my_mkdir $resultsdir
	my_mkdir $resultsdir/fastqc
	my_mkdir $resultsdir/fastqc/$name
	fastqc -t $cpu -o $resultsdir/fastqc/$name -f fastq $datadir/$fastq
}


function my_spades {
	spades.py --isolate -t $cpu -k 77 --pe1-1 $datadir/$2 --pe1-2 $datadir/$3 -o $resultsdir/SPAdes.$1.result
}

function rename_contigs {
	$molgentools/tools/rename_contig_NODES.pl -minlen 400 -mincov 20 -i  $resultsdir/SPAdes.$1.result/contigs.fasta  -prefix $resultsdir/$1
}

function my_kraken {
	name=$1
	krakendir=$resultsdir/kraken
	my_mkdir $krakendir
	/data/pg-molgen/software/kraken/kraken2/kraken2 --threads $cpu --unclassified -out $krakendir/$name.unclassified.fasta --classified-out $krakendir/$name.classified.fasta $resultsdir/$name.fasta --report $krakendir/$name.report > $krakendir/$name.kraken.table
}	

function my_prokka {
	name=$1
	# for more options see https://github.com/tseemann/prokka
	prokka --outdir $resultsdir/prokka --force --prefix $name --locustag $name --strain $name --cpus $cpu $resultsdir/$name.fasta


	# 2nd option:   Annotation on the basis reference genome
#	prokka --proteins $REFGENOME --outdir $resultsdir/prokka --force --prefix $name --locustag $name --strain $name --cpus $cpu $resultsdir/$name.fasta
}


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



#################################################################################################################################
##                                           Main                                                                              ##
#################################################################################################################################


# NOTE to get all filenames use :  ls -aR >TOC.txt


#------------------------------------- FOLDERS ---------------------------------------------------------#
#----- source and results location

molgentools=/data/pg-molgen/software/molgentools_mirror/
SCRATCHDIR=/scratch/p127804

datadir=/data/pg-molgen/amna/fastq
resultsdir=/data/pg-molgen/amna/results

my_mkdir $resultsdir


#my_fastqc AF1500 Sample_44_S44_R1_001.fastq.gz
#my_fastqc AF2500 Sample_45_S45_R1_001.fastq.gz

#------------------------------------- SPADES ---------------------------------------------------------#

spades.py --isolate -t $cpu -k 77 -s $datadir/Sample_44_S44_R1_001.fastq.gz -o $resultsdir/SPAdes.AF1500.result
spades.py --isolate -t $cpu -k 77 -s $datadir/Sample_45_S45_R1_001.fastq.gz -o $resultsdir/SPAdes.AF2500.result

rename_contigs AF1500    
rename_contigs AF2500    


#------------------------------------- PROKKA ---------------------------------------------------------#
#----- annotation

##  If you have Genbank or Protein FASTA file(s) that you want to annotate genes from as the first priority, use the --proteins myfile.gbk. 
##  Please make sure it has a recognisable file extension like .gb or .gbk or auto-detect will fail.


#REFGENOME=/data/p127804/PROJECTS/DeeptiDabra/genomes/Escherichia_coli_str_K-12_substr_MG1655_ASM584v2_genomic.gbk

#my_prokka WG2 


#------------------------------------- KRAKEN ---------------------------------------------------------#
#----- to determine the Taxonomy

# my_kraken R1    



