]> Creatis software - vip-workflow-hrquest.git/blob - bin/hrquest.sh
hrquest workflow v0.1
[vip-workflow-hrquest.git] / bin / hrquest.sh
1 #!/bin/sh -l
2
3 function unziptar {
4         echo "unziptar $1"
5         zipname=`echo $1 | grep '\.zip'`
6         echo $zipname
7         tarname=`echo $1 | grep '\.tar'`
8         echo $tarname
9         tgzname=`echo $1 | grep '\.tgz'`
10         echo $tgzname
11         if [ "x$zipname" != "x" ]
12                 then
13                 echo "ZIP File"
14                 unzip -j $1 -d data
15         else
16                 if [ "x$tarname" != "x" ]
17                         then
18                         echo "TAR File"
19                         COMP=`tar -tvf $1 | awk 'END{print}' |   awk -F' ' '{print $NF}' | awk -F'/' '{print NF-1}'`
20                         tar -xvf $1 --strip-components=${COMP} -C data
21                 else
22                         if [ "x$tgzname" != "x" ]
23                                 then
24                                 echo "TGZ File"
25                                 COMP=`tar -tvf $1 | awk 'END{print}' |   awk -F' ' '{print $NF}' | awk -F'/' '{print NF-1}'`
26                                 tar -zxvf $1 --strip-components=${COMP} -C data
27                         else
28                                 echo "Unknown File Type"
29                                 exit 6
30                         fi
31                 fi
32         fi
33
34         if [ $? != 0 ]
35                 then
36                 echo "A problem occurred while untargzing the input: giving up!"
37                 exit 2
38         fi
39 }
40
41 function checkdir {
42         lfc-ls $1 > /dev/null
43         if [ $? != 0 ]
44         then
45                 echo "Directory $1 not found, creating it!"
46                 lfc-mkdir -p $1
47                 #exit 6
48         fi
49 }
50
51
52 function downloadDir {
53         checkdir $1
54         LOCALDIR=`basename $1`
55         mkdir -p ${LOCALDIR}
56         for i in `lfc-ls $1 | grep -v garbage`
57         do
58                 lcg-cp -v lfn:$1/$i file:$PWD/${LOCALDIR}/$i
59                 if [ $? != 0 ]
60                 then
61                         echo "lcg-cp failed: trying once more"
62                         lcg-cp -v lfn:$1/$i file:$PWD/${LOCALDIR}/$i
63                         if [ $? != 0 ]
64                         then
65                                 echo "Unable to download file lfn:$1/$i: giving up."
66                                 exit 1
67                         fi
68                 fi
69         done
70 }
71
72 function downloadFile {
73         local fname=`basename $1`
74         test -f $fname
75         CODE=$?
76         if [ ${CODE} != 0 ]
77         then
78
79                 lcg-cp -v lfn:$1 file:$PWD/$fname
80                 if [ $? != 0 ]
81                 then
82                         echo "lcg-cp failed: trying once more"
83                         lcg-cp -v lfn:$1 file:$PWD/$fname
84                         if [ $? != 0 ]
85                         then
86                                 echo "Unable to download file lfn:$1: giving up."
87                                 exit 1
88                         fi
89                 fi
90         else
91                 echo "File $fname already exists locally"
92         fi
93 }
94
95 in=$@
96 suffix=" ] "
97 echo $in | grep '\['
98 CODE=$?
99 if [ ${CODE} != 0 ]
100 #simple arguments, no arrays
101 then
102   SIGFILE=$1
103   PARAMFILE=$2
104   INFOLDER=$3
105   RESDIR=$4
106 else
107 #split inputs based on [] and retrieve contents
108   SIGFILE=`echo $in | awk -F'\\\[' '{print $2}' | awk -F'\\\]' '{print $1}'`
109   mySigArray=( $SIGFILE )
110   PARAMFILE=`echo $in | awk -F'\\\]' '{print $2}' | awk -F' ' '{print $1}'`
111   INFOLDER=`echo $in | awk -F'\\\]' '{print $2}' | awk -F' ' '{print $2}'`
112   RESDIR=`echo $in | awk -F'\\\] ' '{print $2}' | awk -F' ' '{print $3}'`
113
114   echo "Resdir is $RESDIR"  
115
116 fi
117
118
119 DATADIR=`dirname ${INFOLDER}`
120
121 echo "Downloading inputs"
122
123 downloadFile $PARAMFILE
124
125 ((n_elements=${#mySigArray[@]}, max_index=n_elements - 1))
126 for ((i = 0; i <= max_index; i++)); do
127   downloadFile ${mySigArray[i]}
128 done
129
130
131 #COMPDATA=$4
132 #RESDIR=$5
133 #preparing input data
134 #export LD_LIBRARY_PATH=/usr/local/matlab/MCR/v84/runtime/glnxa64:/usr/local/matlab/MCR/v84/bin/glnxa64:/usr/local/matlab/MCR/v84/sys/os/glnxa64:$LD_LIBRARY_PATH
135 #export XAPPLRESDIR=/usr/local/matlab/MCR/v84/X11/app-defaults
136
137 hname=`hostname`
138 if [ "${hname}" != "moteur1.grid.creatis.insa-lyon.fr" ] && [ "${hname}" != "moteur2.grid.creatis.insa-lyon.fr" ]
139 then
140         echo "hrquest not yest supported on grid resources"
141
142 else
143         export PATH=/usr/local/hrquest:$PATH
144         export LD_LIBRARY_PATH=/usr/local/hrquest/lib:$LD_LIBRARY_PATH
145         echo "LD_LIBRARY_PATH is $LD_LIBRARY_PATH"
146 fi
147
148
149 #export LFC_HOST=lfc-biomed.in2p3.fr
150 #export LCG_GFAL_INFOSYS=cclcgtopbdii02.in2p3.fr:2170
151
152 #echo "whoami, Printing env"
153 #whoami
154 #env
155
156 echo "result dir is $RESDIR"
157 checkdir $RESDIR
158
159 #preparing comparison data
160 #mkdir ${DATADIR}
161 #cd ${DATADIR}
162 downloadDir ${INFOLDER}
163 #cd ..
164
165 echo "pwd is `pwd`, creating outputs folder"
166 mkdir outputs
167 #launching program
168 echo "launching the program"
169 ((n_elements=${#mySigArray[@]}, max_index=n_elements - 1))
170 PF=`basename ${PARAMFILE}`
171 for ((i = 0; i <= max_index; i++)); do
172   echo "launching the program for i = $i"
173   SIG=`basename ${mySigArray[i]}`
174   echo "hrquestCml -f $PF $SIG"
175   hrquestCml -f $PF ${SIG}
176   CODE=$?
177   if [ ${CODE} != 0 ]
178   then
179     echo "Execution failed with code ${CODE}"
180     exit ${CODE}
181   fi
182   #echo "mySigarray is ${SIG}"
183   basefilename=`basename ${SIG%.*}`
184   mv ${basefilename}_* outputs/
185 done
186
187
188 RESULT=results.tgz
189 LFN=${RESDIR}/${RESULT}
190 lfc-ls ${LFN}
191         if [ $? = 0 ]
192         then
193                 echo "deleting previous ${LFN}"
194                 lcg-del -a lfn:/${LFN}
195                         if [ $? != 0 ]
196                         then
197                                 echo "not able to lcg-del lfn:/${LFN}, renaming it"
198                                 d=`date -d "" +%s`
199                                 lfc-rename ${LFN} ${LFN}-garbage-${d}
200                         fi
201         fi
202
203
204
205 tar -czvf $RESULT outputs 
206 test -f ${RESULT}
207 CODE=$?
208 if [ ${CODE} != 0 ]
209 then
210     echo "Execution failed: exiting with code ${CODE} since ${RESULT} does not exist"
211     exit ${CODE}
212 else
213     echo "Execution done, ${RESULT} created."
214 fi
215