7268 |
22 Jun 23 |
nicklas |
#!/bin/bash |
7268 |
22 Jun 23 |
nicklas |
2 |
## |
7268 |
22 Jun 23 |
nicklas |
## Pipeline script for the ASCAT analysis. It requries 2 BAM files from tumor/normal and |
7268 |
22 Jun 23 |
nicklas |
## output results in a sub-directory. |
7268 |
22 Jun 23 |
nicklas |
5 |
## |
7268 |
22 Jun 23 |
nicklas |
## Environment variables that should be defined (in job.sh) before calling this script |
7268 |
22 Jun 23 |
nicklas |
## -TumorFolder: Path to folder where the tumor alignment.bam is found |
7268 |
22 Jun 23 |
nicklas |
## -TumorBam: Base part of alignment BAM file (eg. alignment) |
7268 |
22 Jun 23 |
nicklas |
## -NormalFolder: Path to folder where the normal alignment.bam is found |
7268 |
22 Jun 23 |
nicklas |
## -NormalBam: Base part of alignment BAM file (eg. alignment) |
7268 |
22 Jun 23 |
nicklas |
## -AscatFolder: Folder for output. Will be created or cleared from existing files |
7268 |
22 Jun 23 |
nicklas |
## TODO -- more options |
7268 |
22 Jun 23 |
nicklas |
## -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 |
## Import utility functions |
7268 |
22 Jun 23 |
nicklas |
19 |
source ./reggie-utils.sh |
7268 |
22 Jun 23 |
nicklas |
20 |
|
7268 |
22 Jun 23 |
nicklas |
## 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 |
## 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 |
## 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 |
## ascat.prepareHTS write count files to the current directory so we |
7270 |
28 Jun 23 |
nicklas |
## 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 |
## Note! AlleleCounterOptions is defined in reggie-config.xml and |
7278 |
10 Aug 23 |
nicklas |
## AllelelCounterParameters is generated in AscatJobCreator.java depending |
7278 |
10 Aug 23 |
nicklas |
## 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 |
## Note! AscatOptions is defined in reggie-config.xml and |
7278 |
10 Aug 23 |
nicklas |
## AscatParameters is generated in AscatJobCreator.java depending |
7278 |
10 Aug 23 |
nicklas |
## 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 |
## 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 |
## 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..." |