Skip to content
Snippets Groups Projects
RQCP.sh 3.65 KiB
Newer Older
#!/bin/bash
                                                                                                                           
##### About #####
echo ""
echo "##### ABOUT #####"
echo "-----------------"
echo "Name: Reads Quality Control Pipeline"
echo "Author: Nicolas Fernandez"
echo "Affiliation: IRD_U233_TransVIHMI"
echo "Aim: Reads Quality Control and Cleaning"
echo "Date: 2021.04.30"
echo "Run: snakemake --use-conda -s readsquality_control_pipeline.smk --cores"
echo "Latest modification: 2021.10.05"
echo "Todo: na"
echo "________________________________________________________________________"

###### Hardware check #####
echo ""
echo "##### HARDWARE #####"
echo "--------------------"
physicalcpu=$(sysctl -n hw.physicalcpu)   # Get physical cpu
echo "Physical CPU: ${physicalcpu}"       # Print physical cpu
logicalcpu=$(sysctl -n hw.logicalcpu)     # Get logical cpu
echo "Logical CPU: ${logicalcpu}"         # Print logical cpu
hwmemsize=$(sysctl -n hw.memsize)         # Get memory size
ramsize=$(expr $hwmemsize / $((1024**3))) # 1024**3 = GB
echo "System Memory: ${ramsize} GB"       # Print RAM size
echo "________________________________________________________________________"

###### Working directory
echo ""
echo "##### WORKING DIRECTORY #####"
echo "-----------------------------"
WORKDIR=${0%/*}
echo "CWD: ${WORKDIR}"
echo "________________________________________________________________________"

###### Rename samples, comment first line if you want do keep barcode-ID in name
rename -v 's/_S\d+_/_/' ${WORKDIR}/resources/reads/*.fastq.gz 2> /dev/null                # Remove barcode-ID like {_S001_}
rename -v 's/_L\d+_/_/' ${WORKDIR}/resources/reads/*.fastq.gz 2> /dev/null                # Remove line-ID ID like {_L001_}
rename -v 's/_\d+.fastq.gz/.fastq.gz/' ${WORKDIR}/resources/reads/*.fastq.gz 2> /dev/null # Remove end-name ID like {_001}.fastq.gz

###### Create links for rax samples
mkdir ${WORKDIR}/results/ ${WORKDIR}/results/reads/ ${WORKDIR}/results/reads/raw/ 2> /dev/null
for FASTQ in ${WORKDIR}/resources/reads/*.fastq.gz ; do ln -s $FASTQ ${WORKDIR}/results/reads/raw/$(basename $FASTQ) 2> /dev/null ; done # Create Symbol links

##### Create dir for QC
mkdir ${WORKDIR}/results/reads/cutadapt/ ${WORKDIR}/results/reads/sickle-trim/ ${WORKDIR}/results/reads/fastq-join/ 2> /dev/null

###### Call snakemake pipeline
snakemake --directory ${WORKDIR} --use-conda --keep-going --rerun-incomplete -s ${WORKDIR}/workflow/rules/reads_quality_control_pipeline.smk --cores --unlock # unlock first, if previous error
snakemake --directory ${WORKDIR} --use-conda --keep-going --rerun-incomplete -s ${WORKDIR}/workflow/rules/reads_quality_control_pipeline.smk --cores --dryrun # then dry run, check error like missing file
snakemake --directory ${WORKDIR} --use-conda --keep-going --rerun-incomplete -s ${WORKDIR}/workflow/rules/reads_quality_control_pipeline.smk --cores          # at last, real run 

###### Create usefull graphs and summary
mkdir ${WORKDIR}/results/graphs/ 2> /dev/null
snakemake --directory ${WORKDIR} --use-conda -s ${WORKDIR}/workflow/rules/reads_quality_control_pipeline.smk --dag       | dot -Tpdf > ${WORKDIR}/results/graphs/DAGraph.pdf
snakemake --directory ${WORKDIR} --use-conda -s ${WORKDIR}/workflow/rules/reads_quality_control_pipeline.smk --rulegraph | dot -Tpdf > ${WORKDIR}/results/graphs/RuleGraph.pdf
snakemake --directory ${WORKDIR} --use-conda -s ${WORKDIR}/workflow/rules/reads_quality_control_pipeline.smk --filegraph | dot -Tpdf > ${WORKDIR}/results/graphs/FileGraph.pdf
snakemake --directory ${WORKDIR} --use-conda -s ${WORKDIR}/workflow/rules/reads_quality_control_pipeline.smk --summary   >             ${WORKDIR}/results/graphs/Summary.txt