6820 |
29 Aug 22 |
nicklas |
#!/bin/bash |
6820 |
29 Aug 22 |
nicklas |
2 |
## |
6820 |
29 Aug 22 |
nicklas |
## Pipeline script for the StringTie/2023 analysis. It requries an 'alignment.bam' file and |
6820 |
29 Aug 22 |
nicklas |
## output results in a sub-directory. |
6820 |
29 Aug 22 |
nicklas |
5 |
## |
6820 |
29 Aug 22 |
nicklas |
## Environment variables that should be defined (in job.sh) before calling this script |
6820 |
29 Aug 22 |
nicklas |
## -BamFolder: Path to folder where alignment.bam is found (results will also be saved here) |
6820 |
29 Aug 22 |
nicklas |
## -BamName: Base part of alignment BAM file (eg. alignment) |
6820 |
29 Aug 22 |
nicklas |
## -StringTieFolder: Folder for output. Will be created or cleared from existing files |
6820 |
29 Aug 22 |
nicklas |
## -ExternalStringTieName: External name of the StringTie item that is being created |
6820 |
29 Aug 22 |
nicklas |
## -AvgReadLength: Average read length used in the sequencing |
6820 |
29 Aug 22 |
nicklas |
## -STRINGTIE: Path to StringTie program |
6820 |
29 Aug 22 |
nicklas |
## -PREPDE: Path to PrepDE program |
6820 |
29 Aug 22 |
nicklas |
## -GTF: Path to reference GTF file |
6820 |
29 Aug 22 |
nicklas |
## -StringTieOptions: Other options for the StringTie program |
6820 |
29 Aug 22 |
nicklas |
## -TMPDIR: Path to a local temporary working directory |
6820 |
29 Aug 22 |
nicklas |
17 |
## |
6820 |
29 Aug 22 |
nicklas |
18 |
|
6820 |
29 Aug 22 |
nicklas |
19 |
set -e |
6820 |
29 Aug 22 |
nicklas |
20 |
|
6820 |
29 Aug 22 |
nicklas |
## Import utility functions |
6820 |
29 Aug 22 |
nicklas |
22 |
source ./reggie-utils.sh |
6820 |
29 Aug 22 |
nicklas |
23 |
|
6820 |
29 Aug 22 |
nicklas |
## Verify settings in options |
6820 |
29 Aug 22 |
nicklas |
25 |
rg_var_isdir "BamFolder" "TMPDIR" "WD" |
6820 |
29 Aug 22 |
nicklas |
26 |
rg_var_isfile "STRINGTIE" "PREPDE" "GTF" |
6820 |
29 Aug 22 |
nicklas |
27 |
rg_var_isset "BamName" "ExternalStringTieName" "AvgReadLength" "StringTieFolder" |
6820 |
29 Aug 22 |
nicklas |
28 |
rg_file_exists "${BamFolder}/${BamName}.bam" "${BamFolder}/${BamName}.bai" |
6820 |
29 Aug 22 |
nicklas |
29 |
|
6820 |
29 Aug 22 |
nicklas |
## Move to the temporary working directory |
6820 |
29 Aug 22 |
nicklas |
31 |
cd ${TMPDIR} |
6820 |
29 Aug 22 |
nicklas |
32 |
mkdir -p bam |
6820 |
29 Aug 22 |
nicklas |
33 |
mkdir -p stringtie |
6820 |
29 Aug 22 |
nicklas |
34 |
mkdir -p done |
6820 |
29 Aug 22 |
nicklas |
35 |
|
6820 |
29 Aug 22 |
nicklas |
## Copy BAM file to local working directory |
6820 |
29 Aug 22 |
nicklas |
37 |
if [ ! -f "done/copy.done" ]; then |
6820 |
29 Aug 22 |
nicklas |
38 |
rg_progress 10 "Copying BAM file" |
6820 |
29 Aug 22 |
nicklas |
39 |
cp ${BamFolder}/${BamName}.bam bam/alignment.bam |
6820 |
29 Aug 22 |
nicklas |
40 |
cp ${BamFolder}/${BamName}.bai bam/alignment.bai |
6820 |
29 Aug 22 |
nicklas |
41 |
touch "done/copy.done" |
6820 |
29 Aug 22 |
nicklas |
42 |
fi |
6820 |
29 Aug 22 |
nicklas |
43 |
|
6820 |
29 Aug 22 |
nicklas |
## Run StringTie |
6820 |
29 Aug 22 |
nicklas |
45 |
if [ ! -f "done/stringtie.done" ]; then |
6820 |
29 Aug 22 |
nicklas |
46 |
rg_progress 20 "Running StringTie (${NumThreads} threads)" |
6820 |
29 Aug 22 |
nicklas |
47 |
${WD}/stdwrap.sh ${STRINGTIE} \ |
6820 |
29 Aug 22 |
nicklas |
48 |
-p ${NumThreads} \ |
6820 |
29 Aug 22 |
nicklas |
49 |
-G ${GTF} \ |
6820 |
29 Aug 22 |
nicklas |
50 |
-o stringtie/transcript.gtf \ |
6820 |
29 Aug 22 |
nicklas |
51 |
-A stringtie/gene.tsv \ |
6820 |
29 Aug 22 |
nicklas |
52 |
-C stringtie/transcript_covered.gtf \ |
6820 |
29 Aug 22 |
nicklas |
53 |
${StringTieOptions} \ |
6820 |
29 Aug 22 |
nicklas |
54 |
bam/alignment.bam \ |
6820 |
29 Aug 22 |
nicklas |
55 |
> stringtie/stringtie.out |
6820 |
29 Aug 22 |
nicklas |
56 |
touch "done/stringtie.done" |
6820 |
29 Aug 22 |
nicklas |
57 |
fi |
6820 |
29 Aug 22 |
nicklas |
58 |
|
6820 |
29 Aug 22 |
nicklas |
59 |
if [ ! -f "done/prepde.done" ]; then |
6820 |
29 Aug 22 |
nicklas |
60 |
rg_progress 90 "Running prepDE" |
6820 |
29 Aug 22 |
nicklas |
61 |
echo "${ExternalStringTieName} ./stringtie/transcript.gtf" > input.lst |
6820 |
29 Aug 22 |
nicklas |
62 |
${PREPDE} \ |
6820 |
29 Aug 22 |
nicklas |
63 |
-i input.lst \ |
6820 |
29 Aug 22 |
nicklas |
64 |
-l ${AvgReadLength} \ |
6820 |
29 Aug 22 |
nicklas |
65 |
-g stringtie/gene_count.csv \ |
6820 |
29 Aug 22 |
nicklas |
66 |
-t stringtie/transcript_count.csv \ |
6820 |
29 Aug 22 |
nicklas |
67 |
> stringtie/prepde.out |
6820 |
29 Aug 22 |
nicklas |
68 |
touch "done/prepde.done" |
6820 |
29 Aug 22 |
nicklas |
69 |
fi |
6820 |
29 Aug 22 |
nicklas |
70 |
|
6820 |
29 Aug 22 |
nicklas |
71 |
rg_progress 95 "Copying result files to project archive" |
6820 |
29 Aug 22 |
nicklas |
72 |
mkdir -p ${StringTieFolder} |
6820 |
29 Aug 22 |
nicklas |
73 |
rm -rf ${StringTieFolder}/* |
6820 |
29 Aug 22 |
nicklas |
74 |
cp stringtie/* ${StringTieFolder} |
6820 |
29 Aug 22 |
nicklas |
75 |
ls -1 ${StringTieFolder}/* >> ${WD}/files.out |
6820 |
29 Aug 22 |
nicklas |
76 |
|
6820 |
29 Aug 22 |
nicklas |
77 |
rg_progress 99 "Analysis completed, cleaning up..." |