File: trinity_pbs.p4a

package info (click to toggle)
trinityrnaseq 2.11.0%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 417,528 kB
  • sloc: perl: 48,420; cpp: 17,749; java: 12,695; python: 3,124; sh: 1,030; ansic: 983; makefile: 688; xml: 62
file content (156 lines) | stat: -rw-r--r-- 7,533 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
##################################################################################################################################
##########################                                                                ########################################
##########################     Trinity PBS job submission with multi part dependencies    ########################################
##########################                                                                ########################################
##################################################################################################################################
### Author: Josh Bowden, Alexie Papanicolaou, CSIRO
### Version 1.0
### QuantifyGraph and Butterfly p4a Script
##################################################################################################################################
# we will not use array in order to ensure only jobs that have not finished are Submitting.
# this does cause a problem when wanting to kill them manually but best to use kill script
## JOBPREFIX is passed via HASHBANG
JOBSTRING4=""$HASHBANG"
"$NODESCPUS"
 JOB_CHRYSALIS="$JOBPREFIX"_p4b
 JOB_BUTTERFLY="$JOBPREFIX"_p5b
 cd "$OUTPUTDIR"

 rm -f \$JOB_CHRYSALIS.jobnames \$JOB_BUTTERFLY.jobnames
 FILENAME=""$OUTPUTDIR"/chrysalis/quantifyGraph_commands"
 FILENAMEBFLY=""$OUTPUTDIR"/chrysalis/butterfly_commands"

 if [ ! -e \$FILENAME.pbs ];then
	sed  -e 's/.*/if [[ -e SEDPLACEHOLDER ]]; then &;fi/' \$FILENAME|sed -r 's/(-e\s)SEDPLACEHOLDER(\s.+-i\s)(\S+).tmp/\1\3.tmp\2\3.tmp/' > \$FILENAME.pbs
	split -d -a 3 -l "1000" \$FILENAME.pbs  \$FILENAME.pbs.  
	sleep 5
 fi
 if [ ! -e \$FILENAMEBFLY.pbs ];then
	sed  -e 's/.*/if [ -e SEDPLACEHOLDER ]; then &;fi/' \$FILENAMEBFLY|sed -r 's/(-e\s)SEDPLACEHOLDER(\s.+-C\s)(\S+)/\1\3.out\2\3/' > \$FILENAMEBFLY.pbs
	split -d -a 3 -l "1000" \$FILENAMEBFLY.pbs  \$FILENAMEBFLY.pbs. 
	sleep 5
 fi

 FILENAME=\$FILENAME.pbs
 FILENAMEBFLY=\$FILENAMEBFLY.pbs

 NUMCMDS=\`ls -l \$FILENAME.??? | wc -l\`
 NUMCMDSBFLY=\`ls -l \$FILENAMEBFLY.??? | wc -l\`
 let NUMCMDS=\$NUMCMDS-1
 let NUMCMDSBFLY=\$NUMCMDSBFLY-1
 let SUBMITTED_C=0
 let SUBMITTED_B=0

 for ((JOBID=0;JOBID<=\$NUMCMDS;++JOBID));do
  JOB_INDEX_PADDED=\`printf "%03d" \$JOBID\`
  MYJOBQ=\""\$FILENAME".\$JOB_INDEX_PADDED\"
  MYJOBB=\""\$FILENAMEBFLY".\$JOB_INDEX_PADDED\"
  JOB_FILESIZE_Q=\$(stat -c%s \$MYJOBQ)
  JOB_FILESIZE_B=\$(stat -c%s \$MYJOBB)

  #if some Q have completed:
  if [ -s  \"\$MYJOBQ.completed\" ] ; then
        JOB_COMPLETED_FILESIZE_Q=\$(stat -c%s \"\$MYJOBQ.completed\")
        # if not all have completed then run both Q and B
        if [ \"\$JOB_FILESIZE_Q\" -gt \"\$JOB_COMPLETED_FILESIZE_Q\" ] ; then
                PBS_JOB4=\`qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED \"\$JOB_CHRYSALIS.sh\" \`
		if [[ ! \$PBS_JOB4 ]]; then
			echo \"Submission for qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED \"\$JOB_CHRYSALIS.sh\" FAILED. Aborting...\"
			exit 255
		fi
		let SUBMITTED_C++
                echo \$PBS_JOB4 >> \"\$JOB_CHRYSALIS.jobnames\"
                echo \$PBS_JOB4 >> jobnumbers.out ;
                PBS_JOB5=\`qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED -W depend=afterok:$PBS_JOB4 \"\$JOB_BUTTERFLY.sh\" \`
		if [[ ! \$PBS_JOB5 ]]; then
			echo \"Submission for qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED -W depend=afterok:$PBS_JOB4 \"\$JOB_BUTTERFLY.sh\" FAILED. Aborting...\"
			exit 255
		fi
		let SUBMITTED_B++
                echo \$PBS_JOB5 >> \"\$JOB_BUTTERFLY.jobnames\"
                echo \$PBS_JOB5 >> jobnumbers.out ;
		if [ \$(( \$JOBID % 20 )) -eq 0 ] ; then
			echo Submitting up to 20 Quantify and/or Butterfly jobs
			sleep 3 # be nice
		fi
        # else all Q have completed; have B completed?
        else
                # if at least some B have completed
                if [ -s \"\$MYJOBB.completed\" ] ; then
                        JOB_COMPLETED_FILESIZE_B=\$(stat -c%s \"\$MYJOBB.completed\" )
                        # if not all, run them with no dependency (Q has completed)
                        if [ \"\$JOB_FILESIZE_B\" -gt \"\$JOB_COMPLETED_FILESIZE_B\" ] ; then
                                PBS_JOB5=\`qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED \"\$JOB_BUTTERFLY.sh\" \`
				if [[ ! \$PBS_JOB5 ]]; then
					echo \"Submission for qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED \"\$JOB_BUTTERFLY.sh\" FAILED. Aborting...\"
					exit 255
				fi
				let SUBMITTED_B++
                                echo \$PBS_JOB5 >> \"\$JOB_BUTTERFLY.jobnames\"
                                echo \$PBS_JOB5 >> jobnumbers.out ;
				if [ \$(( \$JOBID % 20 )) -eq 0 ] ; then
					echo Submitting up to 20 Quantify and/or Butterfly jobs
					sleep 3 # be nice
				fi
                        fi
                # else no Q have completed; run them without dependency
                else
                        PBS_JOB5=\`qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED \"\$JOB_BUTTERFLY.sh\" \`
			if [[ ! \$PBS_JOB5 ]]; then
				echo \"Submission for qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED \"\$JOB_BUTTERFLY.sh\" FAILED. Aborting...\"
				exit 255
			fi
			let SUBMITTED_B++
                        echo \$PBS_JOB5 >> \"\$JOB_BUTTERFLY.jobnames\"
                        echo \$PBS_JOB5 >> jobnumbers.out ;
			if [ \$(( \$JOBID % 20 )) -eq 0 ] ; then
				echo Submitting up to 20 Quantify and/or Butterfly jobs
				sleep 3 # be nice
			fi
                fi
        fi
 # neither Q (and thus nor B) have ever ran successfully, submit both with a dependency
 else
        PBS_JOB4=\`qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED \"\$JOB_CHRYSALIS.sh\" \`
	if [[ ! \$PBS_JOB4 ]]; then
		echo \"Submission for qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED \"\$JOB_CHRYSALIS.sh\" FAILED. Aborting...\"
		exit 255
	fi
	let SUBMITTED_C++
        echo \$PBS_JOB4 >> \"\$JOB_CHRYSALIS.jobnames\"
        echo \$PBS_JOB4 >> jobnumbers.out ;
        PBS_JOB5=\`qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED -W depend=afterok:\$PBS_JOB4 \"\$JOB_BUTTERFLY.sh\" \`
	if [[ ! \$PBS_JOB5 ]]; then
           echo \"Submission for qsub -v JOB_INDEX_PADDED=\$JOB_INDEX_PADDED -W depend=afterok:\$PBS_JOB4 \"\$JOB_BUTTERFLY.sh\" FAILED. Aborting...\"
           exit 255
        fi
	let SUBMITTED_B++
        echo \$PBS_JOB5 >> \"\$JOB_BUTTERFLY.jobnames\"
        echo \$PBS_JOB5 >> jobnumbers.out ;
	if [ \$(( \$JOBID % 20 )) -eq 0 ] ; then
		echo Submitting up to 20 Quantify and/or Butterfly jobs
		sleep 3 # be nice
	fi
 fi
 done
 
 echo Submitted \$SUBMITTED_C Chrysalis and \$SUBMITTED_B Butterfly jobs

 if [[ \$SUBMITTED_B == 0 && \$SUBMITTED_C == 0 ]]; then
 	echo \"No Trinity jobs need to be submitted \"
	if [ -s "$OUTPUTDIR"/Trinity.fasta.complete ]; then
		echo \"Trinity RNA-Seq assembly is complete! Result file is present as "$OUTPUTDIR"/Trinity.fasta \"
	else
		echo \"Proceeding with capturing the output with this command\"
        	echo ' find "$OUTPUTDIR"/chrysalis -name *allProbPaths.fasta -exec cat {} \\; > "$OUTPUTDIR"/Trinity.fasta '
		find "$OUTPUTDIR"/chrysalis -name *allProbPaths.fasta -exec cat {} \\; > "$OUTPUTDIR"/Trinity.fasta
		touch "$OUTPUTDIR"/Trinity.fasta.complete
                echo DO: rm -f "$OUTPUTDIR"/bowtie.nameSorted.sam* "$OUTPUTDIR"/both.fa* "$OUTPUTDIR"/inchworm.kmer_count "$OUTPUTDIR"/iworm_* "$OUTPUTDIR"/target* "$OUTPUTDIR"/jellyfish* "$OUTPUTDIR"/scaffolding* "$OUTPUTDIR"/*.finished "$OUTPUTDIR"/mer_counts_* 
	fi
 fi
"


######
##### Write the above script to a file for later execution
echo "${JOBSTRING4}" | cat -> "$JOBNAME4.sh"