Mercurial > repos > saskia-hiltemann > ireport_devel
comparison createHTML.sh @ 0:3c160414da2e
initial upload
| author | shiltemann |
|---|---|
| date | Thu, 26 Feb 2015 14:05:23 +0100 |
| parents | |
| children | d582e2cd3e13 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:3c160414da2e |
|---|---|
| 1 gbcount=0 | |
| 2 | |
| 3 ## | |
| 4 ## Create Cover Page | |
| 5 ## | |
| 6 function makeIntroPage ( ){ | |
| 7 echo "Creating Intro Page" | |
| 8 title="$1" | |
| 9 coverimage=$2 | |
| 10 link=$3 | |
| 11 htmlout=$4 | |
| 12 zipireport=$5 | |
| 13 | |
| 14 echo -e "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"> | |
| 15 <html> | |
| 16 <head> | |
| 17 </head> | |
| 18 <body> | |
| 19 <br/> | |
| 20 <br/> | |
| 21 <center> | |
| 22 <b><font size=\"15\"> iReport: ${title} </font></b><br/> | |
| 23 <br/> | |
| 24 <br/> | |
| 25 <a href=\"$link\"> Click here to view report </a> <br/><br/> | |
| 26 <a href=\"$link\"> <img src="$coverimage" width=\"50%\" alt=\"loading image..\"/> </a><br/><br/> | |
| 27 <a href=\"$zipireport\"> Click here to download a copy of this iReport </a> <br/><br/> | |
| 28 </center> | |
| 29 </body> | |
| 30 </html>" > $htmlout | |
| 31 | |
| 32 } | |
| 33 | |
| 34 ## | |
| 35 ## Decompress archive fiels | |
| 36 ## -> will detect archive formats: zip, tar, gzip, tar.gz, bzip2 | |
| 37 ## -> input: path to archive | |
| 38 ## -> files will be located in ${galaxypath}/archive_${fname}/ | |
| 39 ## | |
| 40 function decompressArchive (){ | |
| 41 archive=$1 | |
| 42 | |
| 43 fname=`basename ${archive}` | |
| 44 fname=${fname%.dat} | |
| 45 ftype=`file $archive` | |
| 46 | |
| 47 if [[ ! -d ${galaxypath}/archive_${fname}/ ]] | |
| 48 then | |
| 49 mkdir ${galaxypath}/archive_${fname}/ | |
| 50 | |
| 51 #echo "archive type: `file $archive`" | |
| 52 # decompress archive | |
| 53 if [[ $ftype == *Zip* ]] | |
| 54 then | |
| 55 #echo "detected zip file" | |
| 56 cp $archive ${galaxypath}/archive_${fname}/${fname}.zip | |
| 57 wd=`pwd` | |
| 58 cd ${galaxypath}/archive_${fname}/ | |
| 59 unzip -q ${fname}.zip | |
| 60 rm ${fname}.zip | |
| 61 cd $wd | |
| 62 fi | |
| 63 if [[ $ftype == *tar* ]] | |
| 64 then | |
| 65 cp $archive ${galaxypath}/archive_${fname}/${fname}.tar | |
| 66 wd=`pwd` | |
| 67 cd ${galaxypath}/archive_${fname}/ | |
| 68 tar xf ${fname}.tar | |
| 69 rm ${fname}.tar | |
| 70 cd $wd | |
| 71 fi | |
| 72 if [[ $ftype == *gzip* ]] | |
| 73 then | |
| 74 cp $archive ${galaxypath}/archive_${fname}/${fname}.gz | |
| 75 gunzip ${galaxypath}/archive_${fname}/${fname}.gz | |
| 76 #ls ${galaxypath}/archive_${fname}/ | |
| 77 | |
| 78 # check for tar.gz | |
| 79 ftype=`file ${galaxypath}/archive_${fname}/${fname}` | |
| 80 if [[ $ftype == *tar* ]] | |
| 81 then | |
| 82 # turns out it was tar.gz | |
| 83 rm -Rf ${galaxypath}/archive_${fname}/* | |
| 84 ls ${galaxypath}/archive_${fname}/ | |
| 85 cp $archive ${galaxypath}/archive_${fname}/${fname}.tar.gz | |
| 86 | |
| 87 wd=`pwd` | |
| 88 cd ${galaxypath}/archive_${fname}/ | |
| 89 tar xzf ${fname}.tar.gz | |
| 90 cd $wd | |
| 91 fi | |
| 92 wait | |
| 93 rm -f ${galaxypath}/archive_${fname}/*.tar | |
| 94 rm -f ${galaxypath}/archive_${fname}/*.tar.gz | |
| 95 fi | |
| 96 if [[ $ftype == *bzip2* ]] | |
| 97 then | |
| 98 cp $archive ${galaxypath}/archive_${fname}/${fname}.gz | |
| 99 gunzip2 ${galaxypath}/archive_${fname}/${fname}.gz | |
| 100 fi | |
| 101 fi | |
| 102 } | |
| 103 | |
| 104 ## | |
| 105 ## Create HTML content for the tabs specified by user | |
| 106 ## | |
| 107 function makeTabContent ( ){ | |
| 108 tab=$1 # name of current tab | |
| 109 itemslist=$2 # list of all items | |
| 110 tracklist=$3 # genome browser tracks info | |
| 111 contentline="" # HTML code for tab | |
| 112 imgcount=0 # keep track of the number of images on the current tab | |
| 113 iframecount=0 | |
| 114 | |
| 115 for item in $itemslist | |
| 116 do | |
| 117 ## Parse items lists | |
| 118 item=${item/::/:emptycol:} | |
| 119 declare -a myarr=(`echo $item |sed 's/:/ /g'`) | |
| 120 | |
| 121 ## Create the tab contents HTML code | |
| 122 if [ ${myarr[0]} == $tab ] | |
| 123 then | |
| 124 | |
| 125 ## | |
| 126 ## Text Field | |
| 127 ## | |
| 128 if [ ${myarr[1]} == "text" ] | |
| 129 then | |
| 130 text=${myarr[2]} | |
| 131 md=${myarr[4]} | |
| 132 | |
| 133 # if markdown, convert to html | |
| 134 if [ $md == "Y" ] | |
| 135 then | |
| 136 ## resubstitute sanitized charachters | |
| 137 text=${text//==space==/ } | |
| 138 text=${text//==colon==/:} | |
| 139 text=${text//==comma==/,} | |
| 140 text=${text//==slash==/\/} | |
| 141 text=${text//==lt==/<} | |
| 142 text=${text//==gt==/>} | |
| 143 text=${text//==apos==/\'} | |
| 144 text=${text//==quote==/\"} | |
| 145 text=${text//==backtick==/\`} | |
| 146 text=${text//==dollar==/$} | |
| 147 text=${text//==bar==/|} | |
| 148 text=${text//&&/&} | |
| 149 text=${text//\\n/\\n} | |
| 150 text=${text//\\t/\\t} | |
| 151 text=${text//\&r\&n/\\n} | |
| 152 text=${text//\&r/\\n} | |
| 153 text=${text//\&n/\\n} | |
| 154 text=${text//\&c/:} | |
| 155 | |
| 156 | |
| 157 ## convert markdown in textfield to html | |
| 158 echo -e "$text" > mytext.md | |
| 159 | |
| 160 if [ -z `type -p pandoc` ] | |
| 161 then | |
| 162 # pandoc missing | |
| 163 ${repositorypath}/Markdown/markdown2.py mytext.md > mytext.html | |
| 164 | |
| 165 else | |
| 166 # pandoc exists | |
| 167 pandoc -f markdown -o mytext.html mytext.md | |
| 168 pandoc -f markdown -o standalone.html -s mytext.md | |
| 169 | |
| 170 #get css generated by pandoc and add as scoped attribute (HTML5) | |
| 171 pandocstyle=`sed -n '/<style/,/style>/p' standalone.html` | |
| 172 fi | |
| 173 | |
| 174 markdowntext=$(cat mytext.html) | |
| 175 contentline="${contentline}\n<div class=\"markdown-body\">${pandocstyle} ${markdowntext}</div>\n" | |
| 176 | |
| 177 else # If not markdown, print verbatim (with exception of few html tags) | |
| 178 | |
| 179 ## allow some html formatting tags | |
| 180 text=${text//==lt==strong==gt==/<strong>} # search for strong tags | |
| 181 text=${text//==lt====slash==strong==gt==/<\/strong>} # search for strong tags | |
| 182 text=${text//==lt==em==gt==/<em>} # search for strong tags | |
| 183 text=${text//==lt====slash==em==gt==/<\/em>} # search for strong tags | |
| 184 | |
| 185 text=${text//==lt==b==gt==/<strong>} # search for strong tags | |
| 186 text=${text//==lt====slash==b==gt==/<\/strong>} # search for strong tags | |
| 187 text=${text//==lt==i==gt==/<em>} # search for strong tags | |
| 188 text=${text//==lt====slash==i==gt==/<\/em>} # search for strong tags | |
| 189 | |
| 190 text=${text//==lt==br==gt==/<br\/>} # search for strong tags | |
| 191 text=${text//==lt====br==slash==gt==/<br\/>} # search for strong tags | |
| 192 text=${text//==lt==h1==gt==/<h1>} # search for h1-h6 tags | |
| 193 text=${text//==lt==h2==gt==/<h2>} # search for h1-h6 tags | |
| 194 text=${text//==lt==h3==gt==/<h3>} # search for h1-h6 tags | |
| 195 text=${text//==lt==h4==gt==/<h4>} # search for h1-h6 tags | |
| 196 text=${text//==lt==h5==gt==/<h5>} # search for h1-h6 tags | |
| 197 text=${text//==lt==h6==gt==/<h6>} # search for h1-h6 tags | |
| 198 text=${text//==lt====slash==h1==gt==/<\/h1>} # search for h1-h6 closing tags | |
| 199 text=${text//==lt====slash==h2==gt==/<\/h2>} # search for h1-h6 closing tags | |
| 200 text=${text//==lt====slash==h3==gt==/<\/h3>} # search for h1-h6 closing tags | |
| 201 text=${text//==lt====slash==h4==gt==/<\/h4>} # search for h1-h6 closing tags | |
| 202 text=${text//==lt====slash==h5==gt==/<\/h5>} # search for h1-h6 closing tags | |
| 203 text=${text//==lt====slaxh==h6==gt==/<\/h6>} # search for h1-h6 closing tags | |
| 204 | |
| 205 ## display everything else verbatim | |
| 206 text=${text//==space==/ } | |
| 207 text=${text//==colon==/:} | |
| 208 text=${text//==comma==/,} | |
| 209 text=${text//==slash==/\/} | |
| 210 text=${text//==lt==/<} | |
| 211 text=${text//==gt==/>} | |
| 212 text=${text//==apos==/'} | |
| 213 text=${text//==quote==/"} | |
| 214 text=${text//&&/&} | |
| 215 text=${text//\\n/<br/>} | |
| 216 text=${text//\\t/ } | |
| 217 text=${text//\&r\&n/<br/>} | |
| 218 text=${text//\&r/<br/>} | |
| 219 text=${text//\&n/<br/>} | |
| 220 text=${text//\&c/:} | |
| 221 text=${text//==backtick==/`} | |
| 222 text=${text//==dollar==/$} | |
| 223 text=${text//==bar==/|} | |
| 224 contentline="${contentline}\n${text}\n" | |
| 225 fi | |
| 226 | |
| 227 | |
| 228 fi | |
| 229 | |
| 230 ## | |
| 231 ## Text File | |
| 232 ## | |
| 233 if [ ${myarr[1]} == "textfile" ] | |
| 234 then | |
| 235 tfile=${myarr[2]} | |
| 236 md=${myarr[4]} | |
| 237 fname=`basename ${tfile}` | |
| 238 fname=${fname%.*} | |
| 239 fname="${fname}.txt" | |
| 240 cp ${tfile} "${galaxypath}/${fname}" | |
| 241 | |
| 242 #estimate height for iframe based on number oflines in the file | |
| 243 numlines=`wc -l ${tfile} | cut -d" " -f1` | |
| 244 minheight=$[$numlines*17] | |
| 245 | |
| 246 # if markdown, convert to html | |
| 247 if [ $md == "Y" ] | |
| 248 then | |
| 249 | |
| 250 if [ -z `type -p pandoc` ] | |
| 251 then | |
| 252 # pandoc missing | |
| 253 ${repositorypath}/Markdown/markdown2.py ${tfile} > mytext.html | |
| 254 | |
| 255 else | |
| 256 # pandoc exists | |
| 257 pandoc -o mytext.html ${tfile} | |
| 258 pandoc -o standalone.html -s ${tfile} | |
| 259 | |
| 260 # get css generated by pandoc and add as scoped attribute (HTML5) | |
| 261 pandocstyle=`sed -n '/<style/,/style>/p' standalone.html` | |
| 262 | |
| 263 fi | |
| 264 | |
| 265 markdowntext=$(cat mytext.html) | |
| 266 contentline="${contentline}\n<div class=\"markdown-body\">${pandocstyle} ${markdowntext}</div>\n" | |
| 267 else | |
| 268 contentline="${contentline}\n<iframe class=\"invisibleframe\" src=\"${fname}\" width=\"100%\" height=\"$minheight\"> </iframe>\n" | |
| 269 fi | |
| 270 fi | |
| 271 | |
| 272 ## | |
| 273 ## Image | |
| 274 ## | |
| 275 if [ ${myarr[1]} == "image" ] | |
| 276 | |
| 277 then | |
| 278 imgcount=$[$imgcount+1] | |
| 279 #restore file suffix for html | |
| 280 ftype=`file ${myarr[2]}` | |
| 281 zoomlevel=${myarr[4]} | |
| 282 zoomenable=${myarr[5]} | |
| 283 align=${myarr[6]} | |
| 284 #####echo "zoomenable:${zoomenable}, align:${align}" | |
| 285 if [[ $ftype == *JPEG* ]] | |
| 286 then | |
| 287 suffix=".jpg" | |
| 288 fi | |
| 289 if [[ $ftype == *SVG* ]] | |
| 290 then | |
| 291 suffix=".svg" | |
| 292 fi | |
| 293 if [[ $ftype == *PNG* ]] | |
| 294 then | |
| 295 suffix=".png" | |
| 296 fi | |
| 297 | |
| 298 image=`basename ${myarr[2]}` | |
| 299 image=${image%.dat} | |
| 300 image="${image}${suffix}" | |
| 301 cp ${myarr[2]} ${galaxypath}/${image} | |
| 302 | |
| 303 if [[ ${align} == "none" ]] | |
| 304 then | |
| 305 alignstring="" | |
| 306 alignstring2="" | |
| 307 else | |
| 308 alignstring="<div float=\"${align}\">" | |
| 309 alignstring2="</div>" | |
| 310 | |
| 311 alignstring="align=\"${align}\"" | |
| 312 alignstring2="" | |
| 313 fi | |
| 314 | |
| 315 | |
| 316 if [[ ${zoomlevel} -eq 0 ]] | |
| 317 then | |
| 318 widthstring="" | |
| 319 else | |
| 320 widthstring="width=\"${zoomlevel}\"" | |
| 321 fi | |
| 322 | |
| 323 if [[ ${zoomlevel} -eq 0 || ${zoomenable} == "N" ]] | |
| 324 then | |
| 325 contentline="${contentline}<span id=\"img${imgcount}\"> <img src=\"${image}\" ${alignstring} ${widthstring} alt=\"loading image..\"/></span>" | |
| 326 else | |
| 327 contentline="${contentline}<span class=\"zoomme\" id=\"img${imgcount}\"> <img src=\"${image}\" ${alignstring} ${widthstring} alt=\"loading image..\"/></span>" | |
| 328 fi | |
| 329 | |
| 330 fi | |
| 331 | |
| 332 ## | |
| 333 ## Table | |
| 334 ## | |
| 335 if [ ${myarr[1]} == "table" ] | |
| 336 then | |
| 337 | |
| 338 maxlines=50000 | |
| 339 tsvfile_orig=${myarr[2]} | |
| 340 tsvfile="tablehead.tsv" | |
| 341 fname=`basename ${tsvfile_orig}` | |
| 342 fname=${fname%.*} | |
| 343 fancy=${myarr[4]} | |
| 344 makelinks=${myarr[5]} | |
| 345 iframeid="iframe"$iframecount | |
| 346 #echo "\nmakelinks: $makelinks fancy: $fancy <br>" | |
| 347 | |
| 348 #TODO client side database for large files. For now only display first section of file and add download link | |
| 349 numlines=`wc -l ${tsvfile_orig} |cut -d" " -f1` | |
| 350 | |
| 351 head -${maxlines} ${tsvfile_orig} > tsvtmpfile | |
| 352 | |
| 353 #remove any empty or header lines (lines starting with #, unless vcf file, then keep #CHROM line) | |
| 354 awk 'BEGIN{ | |
| 355 FS="\t" | |
| 356 OFS="\t" | |
| 357 }{ | |
| 358 if((index($0,"#")==1 && index($0,"#CHROM")!=1) || $0==""){ | |
| 359 headerlines++ | |
| 360 } | |
| 361 else print $0 | |
| 362 | |
| 363 }END{}' tsvtmpfile > ${tsvfile} | |
| 364 | |
| 365 if [[ $makelinks == "Y" ]] | |
| 366 then | |
| 367 col=${myarr[6]} | |
| 368 prefix=${myarr[7]} | |
| 369 suffix=${myarr[8]} | |
| 370 urlitems=${myarr[9]} | |
| 371 minw=${myarr[10]} | |
| 372 suffix=${suffix/emptycol/} | |
| 373 suffix=${suffix/==quote==/&} | |
| 374 prefix=${prefix/emptycol/} | |
| 375 prefix=${prefix/==quote==/&} | |
| 376 prefix=${prefix/==colon==/:} | |
| 377 | |
| 378 # unpack archive of files to link to if present | |
| 379 if [[ ${urlitems} != None ]] | |
| 380 then | |
| 381 oldfname=$fname | |
| 382 decompressArchive ${urlitems} | |
| 383 prefix=archive_${fname}/${prefix} | |
| 384 fname=$oldfname | |
| 385 fi | |
| 386 | |
| 387 | |
| 388 #edit the table to include links | |
| 389 awk 'BEGIN{ | |
| 390 FS="\t" | |
| 391 OFS="\t" | |
| 392 url="'"$prefix"'" | |
| 393 url2="'"$suffix"'" | |
| 394 iframeid="'"$iframeid"'" | |
| 395 prefix="<a href=\42" | |
| 396 suffix="\42 onclick=\42resizeIframe("iframeid")\42>" | |
| 397 col="'"$col"'" | |
| 398 end="</a>" | |
| 399 }{ | |
| 400 if(FNR==1) | |
| 401 print $0 | |
| 402 else{ | |
| 403 $col=prefix""url""$col""url2""suffix""$col""end | |
| 404 print $0 | |
| 405 } | |
| 406 }END{}' ${tsvfile} > ${tsvfile}2 | |
| 407 | |
| 408 else | |
| 409 minw=${myarr[6]} | |
| 410 cp ${tsvfile} ${tsvfile}2 | |
| 411 fi | |
| 412 | |
| 413 iframecount=$[$iframecount+1] | |
| 414 if [ $fancy == "Y" ] | |
| 415 then | |
| 416 perl ${repositorypath}/tsv2html.pl < ${tsvfile}2 > ${galaxypath}/htmltable_${fname}.html | |
| 417 contentline="${contentline}\n<iframe class=\"invisibleframe fancyiframe\" id=\"$iframeid\" src=\"htmltable_${fname}.html\" width=\"100%\" style=\"height: 760px; min-height: 525px; overflow-y: hidden; overflow-x: scroll\" ></iframe>" | |
| 418 iframecount=$[$iframecount+1] | |
| 419 else | |
| 420 perl ${repositorypath}/tsv2html_simple.pl < ${tsvfile}2 > ${galaxypath}/htmltable_${fname}.html | |
| 421 contentline="${contentline}\n<iframe class=\"unfancyiframe invisibleframe\" id=\"$iframeid\" src=\"htmltable_${fname}.html\" scrolling=\"no\" style=\"min-width: ${minw}px; max-width: 100%; vertical-align: top;\" onload=\"resizeIframe(this)\"></iframe>" | |
| 422 iframecount=$[$iframecount+1] | |
| 423 fi | |
| 424 | |
| 425 if [[ $numlines -gt ${maxlines} ]] | |
| 426 then | |
| 427 tablename=`basename ${tsvfile_orig}` | |
| 428 cp ${tsvfile_orig} ${galaxypath}/$tablename | |
| 429 contentline="${contentline}<br/>\nLarge tables will be supported soon. The first ${maxlines} lines are shown here, and you can download the full file <a href=\"${tablename}\">here</a>." | |
| 430 fi | |
| 431 fi | |
| 432 | |
| 433 ## | |
| 434 ## PDF | |
| 435 ## | |
| 436 if [[ ${myarr[1]} == "pdf" ]] | |
| 437 then | |
| 438 pdffile=${myarr[2]} | |
| 439 fname=`basename ${pdffile}` | |
| 440 fname=${fname%.dat} | |
| 441 pdfname="${fname}.pdf" | |
| 442 cp ${pdffile} "${galaxypath}/${pdfname}" | |
| 443 | |
| 444 width=1000 | |
| 445 height=800 | |
| 446 echo -e "<html><body><object data=\"${pdfname}\" type=\"application/pdf\" width=\"$width\" height=\"$height\"><embed src=\"${pdfname}\" type=\"application/pdf\" /><p>It appears you have no PDF plugin for your browser. No biggie... you can <a href=\"${pdfname}\">click here to download the PDF file.</a></p></object></body></html>" > "${galaxypath}/${fname}.html" | |
| 447 width=$[$width+10] | |
| 448 height=$[$height+10] | |
| 449 contentline="${contentline}\n<iframe src=\"${fname}.html\" width=\"${width}\" height=\"${height}\"></iframe>\n" | |
| 450 | |
| 451 fi | |
| 452 | |
| 453 ## | |
| 454 ## HTML | |
| 455 ## | |
| 456 if [[ ${myarr[1]} == "htmlfile" ]] | |
| 457 then | |
| 458 htmlfile=${myarr[2]} | |
| 459 height=${myarr[4]} | |
| 460 fname=`basename ${htmlfile}` | |
| 461 fname=${fname%.dat} | |
| 462 htmlname="${fname}.html" | |
| 463 cp ${htmlfile} "${galaxypath}/${htmlname}" | |
| 464 | |
| 465 contentline="${contentline}\n<iframe class=\"invisibleframe\" src=\"${htmlname}\" width=\"100%\" height=\"${height}px\"></iframe>\n" | |
| 466 fi | |
| 467 | |
| 468 | |
| 469 if [[ ${myarr[1]} == "htmlpage" ]] | |
| 470 then | |
| 471 url=${myarr[2]} | |
| 472 url=${url//==colon==/:} | |
| 473 url=${url//==fslash==//} | |
| 474 height=${myarr[4]} | |
| 475 | |
| 476 contentline="${contentline}\n<iframe class=\"invisibleframe\" src=\"${url}\" width=\"100%\" height=\"${height}px\"></iframe>\n" | |
| 477 fi | |
| 478 | |
| 479 ## | |
| 480 ## Web Link | |
| 481 ## | |
| 482 if [ ${myarr[1]} == "weblink" ] | |
| 483 then | |
| 484 url=${myarr[2]} | |
| 485 linktext=${myarr[4]} | |
| 486 url=${url/==colon==/:} | |
| 487 url=${url/==quote==/&} | |
| 488 | |
| 489 contentline="${contentline}<a href=\"${url}\" target=\"_blank\">${linktext}</a>" | |
| 490 fi | |
| 491 | |
| 492 | |
| 493 ## | |
| 494 ## Genome Browser | |
| 495 ## | |
| 496 if [ ${myarr[1]} == "genomebrowser" ] | |
| 497 then | |
| 498 # parse inputs | |
| 499 | |
| 500 apiid=${myarr[4]} | |
| 501 servername=${myarr[5]} | |
| 502 buildver=${myarr[2]} | |
| 503 | |
| 504 #TODO | |
| 505 ftype="vcf" | |
| 506 | |
| 507 servername=${servername/==colon==/:} | |
| 508 | |
| 509 ## parse and prepare all tracks | |
| 510 gbcount=$[$gbcount+1] | |
| 511 gbfilelist=${tracklist} | |
| 512 userTracks="" | |
| 513 #IFS=',' read -a gbfilearray <<< ${gbfilelist} | |
| 514 gbfilearray=(${gbfilelist//,/ }) | |
| 515 for gbfile in "${gbfilearray[@]}" | |
| 516 do | |
| 517 # gbfile is in format "browsernum:file" | |
| 518 #IFS=':' read -a gbfileinfo <<< ${gbfile} | |
| 519 gbfileinfo=(${gbfile//:/ }) | |
| 520 if [[ ${gbfileinfo[0]} == $gbcount ]] | |
| 521 then | |
| 522 | |
| 523 ftype=${gbfileinfo[3]} | |
| 524 if [ $ftype == "vcf" ] | |
| 525 then | |
| 526 gbfilename=${gbfileinfo[1]} | |
| 527 gbfilelabel=${gbfileinfo[2]} | |
| 528 gbfilelabel=${gbfilelabel//==space==/ } | |
| 529 fname=`basename ${gbfilename}` | |
| 530 fname=${fname%.dat} | |
| 531 newgbfilename="${fname}.vcf" | |
| 532 | |
| 533 | |
| 534 cp ${gbfilename} "${galaxypath}/${newgbfilename}" | |
| 535 bgzip "${galaxypath}/${newgbfilename}" | |
| 536 tabix -p vcf "${galaxypath}/${newgbfilename}.gz" | |
| 537 | |
| 538 userTracks="${userTracks}, | |
| 539 {name: '${gbfilelabel}', | |
| 540 uri: '${servername}/datasets/${apiid}/display/${newgbfilename}.gz', | |
| 541 tier_type: 'tabix', | |
| 542 payload: 'vcf'} | |
| 543 " | |
| 544 fi | |
| 545 | |
| 546 if [ $ftype == "bam" ] | |
| 547 then | |
| 548 gbfilename=${gbfileinfo[1]} | |
| 549 gbfilelabel=${gbfileinfo[2]} | |
| 550 gbfilelabel=${gbfilelabel//==space==/ } | |
| 551 fname=`basename ${gbfilename}` | |
| 552 fname=${fname%.dat} | |
| 553 newgbfilename="${fname}.bam" | |
| 554 | |
| 555 # link to bam instead of copying | |
| 556 ln -s ${gbfilename} "${galaxypath}/${newgbfilename}" | |
| 557 samtools index "${galaxypath}/${newgbfilename}" | |
| 558 | |
| 559 userTracks="${userTracks}, | |
| 560 {name: '${gbfilelabel}', | |
| 561 bamURI: '${servername}/datasets/${apiid}/display/${newgbfilename}'} | |
| 562 " | |
| 563 | |
| 564 fi | |
| 565 fi | |
| 566 done | |
| 567 | |
| 568 | |
| 569 | |
| 570 if [ ${buildver} == "hg18" ] | |
| 571 then | |
| 572 coordSystem="coordSystem: { | |
| 573 speciesName: 'Human', | |
| 574 taxon: 9606, | |
| 575 auth: 'NCBI', | |
| 576 version: '36', | |
| 577 ucscName: 'hg18' | |
| 578 }," | |
| 579 | |
| 580 chains="chains: { | |
| 581 hg19ToHg18: new Chainset('https://www.biodalliance.org/das/hg19ToHg18/', 'GRCh37', 'NCBI36', | |
| 582 { | |
| 583 speciesName: 'Human', | |
| 584 taxon: 9606, | |
| 585 auth: 'GRCh', | |
| 586 version: 37 | |
| 587 }) | |
| 588 }," | |
| 589 | |
| 590 genesTrack="{name: 'Genes', | |
| 591 desc: 'Gene structures from Ensembl 54', | |
| 592 uri: 'https://www.biodalliance.org/das/hsa_54_36p/', | |
| 593 collapseSuperGroups: true, | |
| 594 provides_karyotype: true, | |
| 595 provides_search: true, | |
| 596 provides_entrypoints: true, | |
| 597 maxbins: false}, " | |
| 598 | |
| 599 repeatsTrack="{name: 'Repeats', | |
| 600 desc: 'Repeat annotation from Ensembl 59', | |
| 601 bwgURI: 'https://www.biodalliance.org/datasets/repeats.bb', | |
| 602 stylesheet_uri: 'https://www.biodalliance.org/stylesheets/bb-repeats.xml'}" | |
| 603 | |
| 604 | |
| 605 # default is hg19 | |
| 606 else | |
| 607 coordSystem="coordSystem: { | |
| 608 speciesName: 'Human', | |
| 609 taxon: 9606, | |
| 610 auth: 'NCBI', | |
| 611 version: '37', | |
| 612 ucscName: 'hg19' | |
| 613 }," | |
| 614 | |
| 615 chains="" | |
| 616 | |
| 617 genesTrack="{name: 'Genes', | |
| 618 desc: 'Gene structures from GENCODE 19', | |
| 619 bwgURI: 'https://www.biodalliance.org/datasets/gencode.bb', | |
| 620 stylesheet_uri: 'https://www.biodalliance.org/stylesheets/gencode.xml', | |
| 621 collapseSuperGroups: true, | |
| 622 trixURI: 'https://www.biodalliance.org/datasets/geneIndex.ix'}," | |
| 623 | |
| 624 repeatsTrack="{name: 'Repeats', | |
| 625 desc: 'Repeat annotation from Ensembl 59', | |
| 626 bwgURI: 'https://www.biodalliance.org/datasets/repeats.bb', | |
| 627 stylesheet_uri: 'https://www.biodalliance.org/stylesheets/bb-repeats.xml'}," | |
| 628 | |
| 629 fi | |
| 630 | |
| 631 contentline="${contentline} | |
| 632 <script language=\"javascript\" src=\"https://www.biodalliance.org/release-0.13/dalliance-compiled.js\"></script> | |
| 633 <script language=\"javascript\"> | |
| 634 new Browser({ | |
| 635 chr: '1', | |
| 636 viewStart: 0, | |
| 637 viewEnd: 100000, | |
| 638 cookieKey: 'human', | |
| 639 | |
| 640 ${coordSystem} | |
| 641 | |
| 642 ${chains} | |
| 643 sources: [{name: 'Genome', | |
| 644 twoBitURI: 'https://www.biodalliance.org/datasets/${buildver}.2bit', | |
| 645 tier_type: 'sequence'}, | |
| 646 ${genesTrack}, | |
| 647 ${repeatsTrack}, | |
| 648 {name: 'Conservation', | |
| 649 desc: 'Conservation', | |
| 650 bwgURI: 'https://www.biodalliance.org/datasets/phastCons46way.bw', | |
| 651 noDownsample: true} | |
| 652 ${userTracks} | |
| 653 ], | |
| 654 | |
| 655 | |
| 656 | |
| 657 | |
| 658 browserLinks: { | |
| 659 Ensembl: 'http://www.ensembl.org/Homo_sapiens/Location/View?r=${chr}:${start}-${end}', | |
| 660 UCSC: 'http://genome.ucsc.edu/cgi-bin/hgTracks?db=${buildver}&position=chr${chr}:${start}-${end}', | |
| 661 Sequence: 'http://www.derkholm.net:8080/das/${buildver}comp/sequence?segment=${chr}:${start},${end}' | |
| 662 } | |
| 663 | |
| 664 }); | |
| 665 </script> | |
| 666 | |
| 667 <div id=\"svgHolder\"></div> | |
| 668 " | |
| 669 fi | |
| 670 | |
| 671 ## | |
| 672 ## Link to Dataset | |
| 673 ## | |
| 674 if [ ${myarr[1]} == "link" ] | |
| 675 then | |
| 676 linkfile=${myarr[2]} | |
| 677 apiid=${myarr[4]} | |
| 678 isireport=${myarr[5]} | |
| 679 linkfilename=`basename ${linkfile}` | |
| 680 linktext=${myarr[6]} | |
| 681 | |
| 682 | |
| 683 #check for some basic filetypes | |
| 684 ftype=`file $linkfile` | |
| 685 if [[ $ftype == *HTML* ]] | |
| 686 then | |
| 687 linkfilename=${linkfilename%.dat} | |
| 688 linkfilename=${linkfilename}.html | |
| 689 fi | |
| 690 if [[ $ftype == *PNG* ]] | |
| 691 then | |
| 692 linkfilename=${linkfilename%.dat} | |
| 693 linkfilename=${linkfilename}.png | |
| 694 fi | |
| 695 if [[ $ftype == *SVG* ]] | |
| 696 then | |
| 697 linkfilename=${linkfilename%.dat} | |
| 698 linkfilename=${linkfilename}.svg | |
| 699 fi | |
| 700 if [[ $ftype == *JPEG* ]] | |
| 701 then | |
| 702 linkfilename=${linkfilename%.dat} | |
| 703 linkfilename=${linkfilename}.jpg | |
| 704 fi | |
| 705 | |
| 706 | |
| 707 if [[ ${isireport} == "Y" ]] | |
| 708 then | |
| 709 linkfilename="/datasets/${apiid}/display/" | |
| 710 else | |
| 711 cp ${linkfile} "${galaxypath}/${linkfilename}" | |
| 712 fi | |
| 713 | |
| 714 contentline="${contentline}<a href=\"${linkfilename}\">${linktext}</a>" | |
| 715 fi | |
| 716 | |
| 717 ## | |
| 718 ## Links to Archive Contents | |
| 719 ## | |
| 720 if [[ ${myarr[1]} == "links" ]] | |
| 721 then | |
| 722 archive=${myarr[2]} | |
| 723 decompressArchive $archive | |
| 724 | |
| 725 # add links to webpage | |
| 726 # separate line for each folder, files within folder on same line | |
| 727 for linkfile in `ls ${galaxypath}/archive_${fname}/ |sort -V` | |
| 728 do | |
| 729 #echo "<br/> ->making link to file: $linkfile " | |
| 730 if [ -d ${galaxypath}/archive_${fname}/$linkfile ] # if directory, add break, and list all contained files, max level 1 deep | |
| 731 then | |
| 732 #echo "<br/> ->is directory, entering: $linkfile " | |
| 733 #ls ${galaxypath}/archive_${fname}/$linkfile | |
| 734 contentline="${contentline}" | |
| 735 for linkfile2 in `ls ${galaxypath}/archive_${fname}/$linkfile | sort -V` | |
| 736 do | |
| 737 #echo "<br/> ->making link to file: ${galaxypath}/archive_${fname}/$linkfile2" | |
| 738 if [ -f ${galaxypath}/archive_${fname}/$linkfile/$linkfile2 ] # if directory, add break, and list all contained files, max level 1 deep | |
| 739 then | |
| 740 #echo "<br/> ->is file, making link: $linkfile " | |
| 741 label=`basename $linkfile2` | |
| 742 label=${label%.*} | |
| 743 contentline="${contentline}<a class=\"mylinks\" href=\"archive_${fname}/${linkfile}/${linkfile2}\">${label}</a> \n " | |
| 744 fi | |
| 745 done | |
| 746 elif [ -f ${galaxypath}/archive_${fname}/$linkfile ] | |
| 747 then | |
| 748 label=`basename ${galaxypath}/archive_${fname}/$linkfile` | |
| 749 label=${label%.*} | |
| 750 contentline="${contentline}<a class=\"mylinks\" href=\"archive_${fname}/${linkfile}\">$label</a> \n" | |
| 751 fi | |
| 752 done | |
| 753 | |
| 754 | |
| 755 fi | |
| 756 | |
| 757 if [[ ${myarr[3]} == "Y" ]] | |
| 758 then | |
| 759 contentline="${contentline}<br/>\n" | |
| 760 fi | |
| 761 fi | |
| 762 done | |
| 763 | |
| 764 echo "${contentline}" | |
| 765 } | |
| 766 | |
| 767 ## | |
| 768 ## Create HTML content for iReport | |
| 769 ## | |
| 770 createMainPage (){ | |
| 771 page=$1 | |
| 772 tabtitles=$2 # comma-separated list of tab titles | |
| 773 tabitems=$3 # colon-sparated list of tabs specifications | |
| 774 iframecount=1 # keep track of number of iFrames so that they can be referenced by ID | |
| 775 minwidth=$4 # width of page | |
| 776 gbtracks=$5 # genome browser track information | |
| 777 | |
| 778 echo "createMainPage: tabitems: $tabitems. tabtitles: $tabtitles. gbtracks: $gbtracks" | |
| 779 # create correct number of tabs | |
| 780 count=0 | |
| 781 | |
| 782 tabtitles=${tabtitles//,/ } | |
| 783 tabtitles=${tabtitles//==colon==/:} | |
| 784 tabslist="<ul>\n" | |
| 785 mytabs="" | |
| 786 | |
| 787 for title in $tabtitles | |
| 788 do | |
| 789 # Create list of tabs | |
| 790 count=$[count+1] | |
| 791 title2=${title//_s_/ } | |
| 792 tabslist="${tabslist} <li><a href=\"#tabs-${count}\">${title2}</a></li>\n" | |
| 793 | |
| 794 # Create tabs with content | |
| 795 tabcontent=$(makeTabContent $title "$tabitems" "$gbtracks") | |
| 796 mytabs="${mytabs}\n<div id=\"tabs-${count}\">\n" | |
| 797 mytabs="${mytabs}${tabcontent}" | |
| 798 mytabs="${mytabs}\n</div>\n" | |
| 799 done | |
| 800 tabslist="${tabslist}</ul>" | |
| 801 | |
| 802 ## Output the webpage | |
| 803 echo -e "<!doctype html> | |
| 804 <head> | |
| 805 <meta charset=\"utf-8\"> | |
| 806 <title>iReport</title> | |
| 807 <link rel=\"stylesheet\" href=\"jquery-ui.css\"> | |
| 808 <link rel=\"stylesheet\" href=\"ireport_css.css\"> | |
| 809 <link rel=\"stylesheet\" href=\"md.css\"> | |
| 810 <script type=\"text/javascript\" src=\"jquery-1.10.2.js\"></script> | |
| 811 <script type=\"text/javascript\" src=\"jquery-ui.js\"></script> | |
| 812 <script type=\"text/javascript\" src=\"iframe-resizer/src/iframeResizer.js\"></script> | |
| 813 <script type=\"text/javascript\" src=\"jquery.zoom.js\"></script> | |
| 814 <script type=\"text/javascript\" src=\"ireport_jquery.js\"></script> | |
| 815 <script type=\"text/javascript\" src=\"ireport_javascript.js\"></script> | |
| 816 </head> | |
| 817 <body> | |
| 818 <div id=\"tabs\" style=\"display:inline-block; min-height:100%; min-width:${minwidth}px\"> | |
| 819 $tabslist | |
| 820 | |
| 821 $mytabs | |
| 822 </div> | |
| 823 </body> | |
| 824 </html>" > $page | |
| 825 } |
