annotate ahopro_wrapper.sh @ 2:7afd787f4d56 draft default tip

Uploaded
author jbrayet
date Thu, 11 Feb 2016 08:15:05 -0500
parents 2e121ae0a2eb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
1 #!usr/bin/bash
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
2
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
3
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
4 :<<'hey'
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
5 Command line looks like this :
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
6 ahopro_wrapper.sh ${ahopro_config} ${motif_file} ${function.function_selector} $outfile $function['seq_name'] $function['nbr_motif'] $actualN
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
7 # if function = p-value :, commad line will looks like this :
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
8 ahopro_wrapper.sh ${ahopro_config} ${motif_file} ${function.function_selector} $outfile $function['seq_name'] $function['nbr_motif'] $actualN ${letter_freq_file}
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
9
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
10
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
11 hey
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
12
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
13 #sort out arguments
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
14
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
15 configfile=$1
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
16 motif_file=$2
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
17 function=$3
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
18 #if function is "p-value", get the freqFile pramater
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
19 if [ "$function" == "p-value" ] ; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
20 letterFreqFile=$8
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
21 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
22 output=$4
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
23 SEQ_NAME=$5
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
24 NBR_MOTIFS=$6
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
25 actual_NBR=$7
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
26
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
27
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
28
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
29 PATH_AHOPRO="/usr/bin/ahopro/AhoPro.1.3/"
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
30
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
31
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
32 # create tmp workindg dir and cd
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
33
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
34 OUTDIR=`mktemp -d`
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
35
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
36 #hard code the creation of OUTDIR
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
37 if [ -d $OUTDIR ]; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
38 chmod -R 777 $OUTDIR
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
39 else
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
40 mkdir $OUTDIR
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
41 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
42
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
43 chmod -R 777 $OUTDIR
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
44
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
45 cd $OUTDIR
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
46
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
47
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
48
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
49 #echo "######configfile out of XML form :" > $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
50 #cat $configfile >> $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
51 #echo "motifFile :" >> $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
52 #cat $motif_file > $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
53
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
54
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
55
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
56
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
57 ## ************ First, check if the number of actual motif is met in the entries. If not, warn, and quit ******************************************************
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
58
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
59 if [[ $NBR_MOTIFS != $actual_NBR ]]; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
60
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
61 cat <<doc >$output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
62 AhoPro error :
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
63
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
64 The number of motifs set in "Number of motifs" does not match the the actual number of motif entry in "Motifs" section. They should be the same.
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
65
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
66 Number of motifs : $NBR_MOTIFS
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
67 Number of actual motif entered : $actual_NBR
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
68
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
69 Please recheck these parameters.
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
70
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
71 doc
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
72
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
73 exit 0
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
74
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
75 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
76
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
77 ## ************ END check ******************************************************
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
78
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
79
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
80
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
81 ### **************** Deal with motif entery ****************************************************************************************************
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
82
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
83
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
84 if [[ $NBR_MOTIFS = 1 ]]; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
85
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
86 #NO PARSING REQUIRED
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
87
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
88 #remove blank lines, tabs, spaces..
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
89 cat $motif_file | awk '/^[0-9\-ACTGatgc]/ {print}' > motif_tmp_0.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
90 # reverse if the motif is a pmw, reverse it if necessary
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
91 type=`cat motif_tmp_0.txt | awk ' END { if ($1 ~ /[acATGC]/) {print "words"} else {print "pmw"} }'`
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
92
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
93 if [[ "$type" == "pmw" ]]; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
94
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
95 NF=`cat motif_tmp_0.txt | awk ' END {print NF}'`
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
96
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
97 if [[ $NF != 4 ]]; then #if it's not vertical, reverse it
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
98
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
99 for ((c=1 ; c <= $NF; c++))
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
100 do
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
101 cat motif_tmp_0.txt | awk -v c=$c '{ printf $c" " } END {printf"\n"}' >> motif_0.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
102 done
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
103
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
104 rm motif_tmp_0.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
105
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
106
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
107 elif [[ $NF == 0 ]]; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
108 echo "Please check the motif entries.Try removing tabulations, spaces." > $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
109 exit 0
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
110
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
111 else #if vertical
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
112 mv motif_tmp_0.txt motif_0.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
113 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
114
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
115 else #if words
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
116 mv motif_tmp_0.txt motif_0.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
117
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
118 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
119
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
120
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
121 else # IF there is more than one motif
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
122
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
123 #check if it's true + parse motifs + warn
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
124 N=`cat $motif_file | awk '/^[0-9\-ACTGatgc*]/ {print}' | awk ' BEGIN{RS="*"; n=0} {printf $0 > "motif_tmp_"n++} END {print n}'`
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
125
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
126 # reverse pmw (or not if it's vertical)
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
127
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
128 for ((i=0 ; i< $N ; i++))
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
129 do
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
130 # remove empty lines + check if it's a pmw, motif words.
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
131 cat motif_tmp_$i | awk '/^[0-9\-ACTGatgc]/ {print}' > motif_tmp_tmp_$i
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
132 type=`cat motif_tmp_tmp_$i | awk ' END { if ($1 ~ /[acATGC]/) {print "words"} else {print "pmw"} }'`
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
133
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
134 rm motif_tmp_$i
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
135 # if pmw : check if it is horizontal, if so, reverse it (ahopro takes only vertical pmws !)
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
136
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
137 if [[ "$type" == "pmw" ]]; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
138
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
139 NF=`cat motif_tmp_tmp_$i | awk ' END {print NF}'`
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
140
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
141 if [[ $NF != 4 ]]; then #if it's not vertical, reverse it
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
142
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
143 for ((c=1 ; c <= $NF; c++))
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
144 do
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
145 cat motif_tmp_tmp_$i | awk -v c=$c '{ printf $c" " } END {printf"\n"}' >> motif_$i.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
146 done
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
147 rm motif_tmp_tmp_$i
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
148
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
149
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
150 elif [[ $NF == 0 ]]; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
151 echo "Please check the motif entries, try removing tabulations, spaces." > $ouput
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
152 exit 0
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
153
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
154 else #if vertical
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
155 mv motif_tmp_tmp_$i motif_$i.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
156 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
157
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
158 else #if words
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
159 mv motif_tmp_tmp_$i motif_$i.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
160
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
161 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
162
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
163 #cat motif_$i.txt
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
164 done
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
165 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
166
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
167 ## ****************************************** END motif entery treatment *********************************************************************************************************************
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
168
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
169 ###motif_0
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
170 # next could be improved in bash (sed..)
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
171
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
172 #Add motif filenames to the configfile byt writing a new_config.txt (in CWD)
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
173 ##but first, check what kind of correction ? basic : motifnames only ? or LetterFreqFile also ?
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
174
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
175 if [ "$function" == "p-value" ] ; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
176
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
177 python $PATH_AHOPRO/replaceLine.py $configfile "name_freq" $letterFreqFile
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
178
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
179 else
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
180
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
181 python $PATH_AHOPRO/replaceLine.py $configfile "name"
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
182
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
183 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
184
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
185 ## get the new config file
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
186 #new_config="$OUTDIR/new_config.txt"
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
187 new_config="new_config.txt"
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
188
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
189 #echo "******** AhoPro Parameters ******** " >> $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
190 #cat $new_config >> $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
191 #call ahopro with config file
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
192
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
193
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
194 #echo "******** AhoPro Results ******** " >> $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
195
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
196 $PATH_AHOPRO/ahokocc $new_config >> $output 2>&1
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
197
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
198 # improve line "Search in sequence .." with user entered sequence name (for more clarity). Do only if seq_name != 'X'
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
199
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
200 if [ "$SEQ_NAME" != "X" ] ; then
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
201
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
202 #remove sequence (if it exists)
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
203 sed -i '/^Search/d' $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
204 # add new line
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
205 line="\nSearch in sequence : $SEQ_NAME\n"
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
206 sed -i "1s/^/$line/" $output
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
207
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
208 fi
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
209
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
210 rm $new_config
2e121ae0a2eb Uploaded
jbrayet
parents:
diff changeset
211