extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/grid/scripts/ascat.sh

Code
Comments
Other
Rev Date Author Line
7268 22 Jun 23 nicklas 1 #!/bin/bash
7268 22 Jun 23 nicklas 2 ##
7268 22 Jun 23 nicklas 3 ## Pipeline script for the ASCAT analysis. It requries 2 BAM files from tumor/normal and
7268 22 Jun 23 nicklas 4 ## output results in a sub-directory.
7268 22 Jun 23 nicklas 5 ##
7268 22 Jun 23 nicklas 6 ## Environment variables that should be defined (in job.sh) before calling this script
7268 22 Jun 23 nicklas 7 ##  -TumorFolder: Path to folder where the tumor alignment.bam is found
7268 22 Jun 23 nicklas 8 ##  -TumorBam: Base part of alignment BAM file (eg. alignment)
7268 22 Jun 23 nicklas 9 ##  -NormalFolder: Path to folder where the normal alignment.bam is found
7268 22 Jun 23 nicklas 10 ##  -NormalBam: Base part of alignment BAM file (eg. alignment)
7268 22 Jun 23 nicklas 11 ##  -AscatFolder: Folder for output. Will be created or cleared from existing files
7268 22 Jun 23 nicklas 12 ##  TODO --  more options 
7268 22 Jun 23 nicklas 13 ##  -TMPDIR: Path to a local temporary working directory
7268 22 Jun 23 nicklas 14 ##
7268 22 Jun 23 nicklas 15
7268 22 Jun 23 nicklas 16 set -e
7268 22 Jun 23 nicklas 17
7268 22 Jun 23 nicklas 18 ## Import utility functions
7268 22 Jun 23 nicklas 19 source ./reggie-utils.sh
7268 22 Jun 23 nicklas 20
7268 22 Jun 23 nicklas 21 ## Verify settings in options
7268 22 Jun 23 nicklas 22 rg_var_isdir "TumorFolder" "NormalFolder" "TMPDIR" "WD"
7270 28 Jun 23 nicklas 23 rg_var_isset "TumorBam" "NormalBam" "AscatFolder" "TumorName" "NormalName"
7268 22 Jun 23 nicklas 24 rg_file_exists "${TumorFolder}/${TumorBam}.bam" "${TumorFolder}/${TumorBam}.bai" 
7268 22 Jun 23 nicklas 25 rg_file_exists "${NormalFolder}/${NormalBam}.bam" "${NormalFolder}/${NormalBam}.bai"
7268 22 Jun 23 nicklas 26
7268 22 Jun 23 nicklas 27 ## Move to the temporary working directory
7268 22 Jun 23 nicklas 28 cd ${TMPDIR}
7268 22 Jun 23 nicklas 29 mkdir -p bam
7270 28 Jun 23 nicklas 30 mkdir -p allelecount
7271 29 Jun 23 nicklas 31 mkdir -p baf
7268 22 Jun 23 nicklas 32 mkdir -p ascat
7268 22 Jun 23 nicklas 33 mkdir -p done
7268 22 Jun 23 nicklas 34
7268 22 Jun 23 nicklas 35 ## Copy BAM file to local working directory
7268 22 Jun 23 nicklas 36 if [ ! -f "done/copy.done" ]; then
7268 22 Jun 23 nicklas 37   rg_progress 10 "Copying tumor BAM file"
7268 22 Jun 23 nicklas 38   cp ${TumorFolder}/${TumorBam}.bam bam/tumor.bam
7268 22 Jun 23 nicklas 39   cp ${TumorFolder}/${TumorBam}.bai bam/tumor.bai
7268 22 Jun 23 nicklas 40   rg_progress 15 "Copying normal BAM file"
7268 22 Jun 23 nicklas 41   cp ${NormalFolder}/${NormalBam}.bam bam/normal.bam
7268 22 Jun 23 nicklas 42   cp ${NormalFolder}/${NormalBam}.bai bam/normal.bai
7268 22 Jun 23 nicklas 43   touch "done/copy.done"
7268 22 Jun 23 nicklas 44 fi
7268 22 Jun 23 nicklas 45
7270 28 Jun 23 nicklas 46 if [ ! -f "done/allelecount.done" ]; then
7341 11 Sep 23 nicklas 47   rg_progress 20 "Calculating LogR and BAF (using ${AlleleCounterThreads} threads)"
7268 22 Jun 23 nicklas 48
7270 28 Jun 23 nicklas 49   ## ascat.prepareHTS write count files to the current directory so we
7270 28 Jun 23 nicklas 50   ## move to a subdirectory to avoid cluttering the main working directory
7270 28 Jun 23 nicklas 51   cd allelecount
7270 28 Jun 23 nicklas 52
7278 10 Aug 23 nicklas 53   ## Note! AlleleCounterOptions is defined in reggie-config.xml and
7278 10 Aug 23 nicklas 54   ## AllelelCounterParameters is generated in AscatJobCreator.java depending
7278 10 Aug 23 nicklas 55   ## on data and user-selected options
7270 28 Jun 23 nicklas 56   ${WD}/stderrwrap.sh Rscript ${WD}/allele_counter.R \
7278 10 Aug 23 nicklas 57     "../bam/tumor.bam" "../bam/normal.bam" \
7270 28 Jun 23 nicklas 58     "${ALLELES_REF}" "${LOCI_REF}" \
7278 10 Aug 23 nicklas 59     --outputDir "../baf" \
7278 10 Aug 23 nicklas 60     --tumorName "${TumorName}" \
7278 10 Aug 23 nicklas 61     --normalName "${NormalName}" \
7278 10 Aug 23 nicklas 62     ${AlleleCounterOptions} \
7278 10 Aug 23 nicklas 63     ${AlleleCounterParameters} \
7271 29 Jun 23 nicklas 64     3> ../allelecount.out
7270 28 Jun 23 nicklas 65
7270 28 Jun 23 nicklas 66   cd ..
7270 28 Jun 23 nicklas 67   touch "done/allelecount.done"
7270 28 Jun 23 nicklas 68 fi
7270 28 Jun 23 nicklas 69
7271 29 Jun 23 nicklas 70 if [ ! -f "done/ascat.done" ]; then
7278 10 Aug 23 nicklas 71   ## Note! AscatOptions is defined in reggie-config.xml and
7278 10 Aug 23 nicklas 72   ## AscatParameters is generated in AscatJobCreator.java depending
7278 10 Aug 23 nicklas 73   ## on data and user-selected options
7271 29 Jun 23 nicklas 74   ${WD}/stderrwrap.sh Rscript ${WD}/run_ascat.R \
7278 10 Aug 23 nicklas 75     "baf" \
7271 29 Jun 23 nicklas 76     "${GC_CORRECTION}" \
7278 10 Aug 23 nicklas 77     --outputDir "ascat" \
7278 10 Aug 23 nicklas 78     --progress "${WD}/progress" \
7278 10 Aug 23 nicklas 79     ${AscatOptions} \
7278 10 Aug 23 nicklas 80     ${AscatParameters} \
7271 29 Jun 23 nicklas 81     3> ascat.out
7281 14 Aug 23 nicklas 82   
7281 14 Aug 23 nicklas 83   ## Get rid of the tumor name in the result file names
7281 14 Aug 23 nicklas 84   rename "${TumorName}." "" ascat/*
7287 15 Aug 23 nicklas 85   ## Rename 'tumour' to 'tumor'
7287 15 Aug 23 nicklas 86   rename "tumour" "tumor" ascat/*
7271 29 Jun 23 nicklas 87   touch "done/ascat.done"
7271 29 Jun 23 nicklas 88 fi
7271 29 Jun 23 nicklas 89
7268 22 Jun 23 nicklas 90 rg_progress 95 "Copying result files to project archive"
7281 14 Aug 23 nicklas 91
7268 22 Jun 23 nicklas 92 mkdir -p ${AscatFolder}
7268 22 Jun 23 nicklas 93 rm -rf ${AscatFolder}/*
7268 22 Jun 23 nicklas 94 cp ascat/* ${AscatFolder}
7271 29 Jun 23 nicklas 95 cp baf/* ${AscatFolder}
7268 22 Jun 23 nicklas 96 ls -1 ${AscatFolder}/* >> ${WD}/files.out
7281 14 Aug 23 nicklas 97 cp ascat/stats.txt ${WD}/stats.txt
7268 22 Jun 23 nicklas 98
7268 22 Jun 23 nicklas 99 rg_progress 99 "Analysis completed, cleaning up..."