#!c:/perl/bin/perl.exe -w use lib 'C:\Program Files\Apache Group\Apache2\cgi-bin\MyModules'; use strict "vars"; use CGI; use BlastQueries; # self created package for handling creation of blas +t db use ParseBlastResults; use CreateBlastDB; use CGI::Carp qw( fatalsToBrowser); use Data::Dumper; use threads; use ParseBlastResults; use blastNResults; BEGIN{ my $queryPath = "C:\\BlastQueries\\"; #path where all query files + should be placed by user my $dbFilePath = "C:\\BlastDBs\\"; my $tempQueryFile = $queryPath."_webQuery.txt"; #temporaily hold t +he query from webpage my $blastall= "C:\\Genomes\\bin\\blastall.exe"; my $blastM0File = "blastNResultsM0.ffn"; my $blastM6File = "blastNResultsM6.ffn"; my $resultsFilePath = "C:\\Program Files\\Apache Group\\Apache2\\h +tdocs\\results.html"; my $resultsFile = "/results.html"; my %options; my $resultantfile; my $cgi = CGI->new; my @params = $cgi->param; # print $cgi->header; my $folder = ''; my ($view, $wait, $runBlast, $running) = 0; my $iteration = 1; $iteration = $cgi->param('iteration'); $iteration ++ if ($iteration == 1); foreach (@params){ if($_ =~/^view/){ $folder = $cgi->param($_) if $cgi->param($_); $runBlast = 0; $running = 0; $view = 1; $wait = 0; last; }elsif($_ eq 'wait'){ $runBlast = 0; $running = 0; $wait = 1; last; } } if($wait){ #still waiting for html file to be done # print $cgi->start_html(-title=>"Nucleotide Blast Results" +, # -script=>{-language=>'JAVASCRIPT', -src=>'/Javasc +ripts/blastNResultsPre.js'}, # -style=>{-src=>'/StyleSheets/style.css'}); # print $cgi->start_form( -name=>'checkBlast', -action=>"/c +gi-bin/BlastQuery/blastNResultsPre.cgi"),"\n"; # print $cgi->hidden(-name=>'wait', -value=>1); my $display = BlastQueries::checkHTMLFile($resultsFilePath); # print "display 2 : $display <br>"; if($display){ # print $cgi->start_html(-title=>"Nucleotide Blast Results" +, # -script=>{-language=>'JAVASCRIPT', -src=>'/Javasc +ripts/blastNResultsPre.js'}, # -style=>{-src=>'/StyleSheets/style.css'}); print $cgi->redirect( -URL => $resultsFile); # print "FINISHED!<BR>"; }else{ #finished and now can see file print $cgi->header; print $cgi->start_html(-title=>"Nucleotide Blast Results", -script=>{-language=>'JAVASCRIPT', -src=>'/Javascr +ipts/blastNResultsPre.js'}, -style=>{-src=>'/StyleSheets/style.css'}); print $cgi->start_form( -name=>'checkBlast', -action=>"/cg +i-bin/BlastQuery/blastNResultsPre.cgi"),"\n"; print $cgi->hidden(-name=>'wait', -value=>1); # $iteration ++; print $cgi->hidden(-name=>'iteration', -value=>"$iteration +"); print "Still creating display file. Please wait.<br>"; print "This page has been refreshed $iteration times<br /> +"; print $cgi->end_form(); } print $cgi->end_form() }elsif($view){ $queryPath = $queryPath.$folder.'\\'; # blastNResults::generateHTMLFile($resultsFilePath, $blastM0Fil +e, $blastM6File, $queryPath); my $thr = threads->new(\&blastNResults::generateHTMLFile, $res +ultsFilePath, $blastM0File,$blastM6File, $queryPath); sleep(4); $thr->detach; print $cgi->header; print $cgi->start_html(-title=>"Nucleotide Blast Results", -script=>{-language=>'JAVASCRIPT', -src=>'/Javascripts +/blastNResultsPre.js'}, -style=>{-src=>'/StyleSheets/style.css'}); #this is t +he window title print $cgi->h1("Nucleotide Blast Results: \n"); print $cgi->start_form( -name=>'checkBlast', -action=>"/cgi-bi +n/BlastQuery/blastNResultsPre.cgi"),"\n"; print $cgi->hidden(-name=>'wait', -value=>1); print $cgi->hidden(-name=>'iteration', -value=>'1'); print "Creating display file. Please wait.<br>"; print $cgi->end_form(); # my $thr = threads->new(\&blastNResults::generateHTMLFile, $re +sultsFilePath, $blastM0File,$blastM6File, $queryPath); # $thr->detach; } }
#!c:/perl/bin/perl.exe -w package blastNResults; use lib 'C:\Program Files\Apache Group\Apache2\cgi-bin\MyModules'; use strict "vars"; use CGI; use BlastQueries; # self created package for handling creation of blas +t db use ParseBlastResults; use CreateBlastDB; use CGI::Carp qw( fatalsToBrowser); use Data::Dumper; sub generateHTMLFile{ my ($resultsFilePath, $blastM0File, $blastM6File, $queryPath) += @_; # print "Made it in here<Br>"; # print Dumper(@_); # my $queryPath = "C:\\BlastQueries\\"; #path where all query +files should be placed by user # my $dbFilePath = "C:\\BlastDBs\\"; # my $tempQueryFile = $queryPath."_webQuery.txt"; #temporaily h +old the query from webpage # my $blastall= "C:\\Genomes\\bin\\blastall.exe"; # my $blastM0File = "blastNResultsM0.ffn"; # my $blastM6File = "blastNResultsM6.ffn"; # my $resultsFilePath = "C:\\Program Files\\Apache Group\\Apach +e2\\htdocs\\results.html"; my %options; my $resultantfile; my $parsed; my $cgi = CGI->new; my ($maxMin, $maxMinNoZero); #hash ref open (FH, ">$resultsFilePath") or die "cant temp save file, er +ror: $!"; # print FH $cgi->header; print FH $cgi->start_html(-title=>"Nucleotide Blast Results", -script=>{-language=>'JAVASCRIPT', -src=>'/Javascripts +/blastNResults.js'}, -style=>{-src=>'/StyleSheets/style.css'}, -onLoad=>'on +Load()'); #this is the window title print FH $cgi->h1("Nucleotide Blast Results: \n"); print FH "<p class='subTitle'>Save Blast Results: </p>\n"; print FH '<small>'; print FH $cgi->start_form(-target=>'_blank', -name=>"saveResul +ts", -action=>"/cgi-bin/BlastQuery/saveFile.cgi", -onSubmit=>"r +eturn validateMultipleForm()"),"\n"; print FH 'Folder name ', $cgi->textfield(-name=>'saveFile',-s +ize=>20,-maxlength=>50), ' (saved in C:\BlastQueries\)'; print FH '<br /><br />'; print FH $cgi->hidden(-name=>'queryPath', -value=>$queryPath); print FH $cgi->hidden(-name=>'hidden', -value=>$blastM0File); print FH $cgi->hidden(-name=>'hiddenM6', -value=>$blastM6File) +; print FH $cgi->submit(-name=>'Save Results', -label=>'Save Res +ults', -class=>"btn", -onmouseover=>"this.className='btn btnhov'", -onmouseout=> +"this.className='btn'",-onclick=>"return validateSaveResultsForm()" ) +; print FH $cgi->checkbox(-name=>'saveQuery', -value=>$cgi->para +m('queryFile'), -label=>'Save a copy of the query file/web query as w +ell'); print FH $cgi->end_form(); print FH '</small>'; print FH "<p class='subTitle'>Queries: </p>\n"; # return; $parsed = new ParseBlastResults(); $resultantfile = $queryPath.$blastM0File; # print FH $resultantfile; # return; open (my $fh, "<$resultantfile") or die "cant open , error: $! +"; $parsed->readBlastNView0($fh); close $fh; $maxMin = $parsed->getMaxMinLite(0); #0 is whether to have gap +s or not my $hasZero=0; my $maxMinDB = $parsed->getMaxMinDBLite(); #$parsed->print FHBlastPView0(); # print FH Dumper($maxMinDB); my $queries = $parsed->getAllQueryInfo(); print FH '<small>'; print FH $cgi->checkbox(-name=>'selectall',-checked=>0,-value +=>'on',-label=>'Select/Deselect all queries for multiple viewing', -o +nclick=>'selectDeselect()'); print FH '<small>'; printIndividualQueryMenu($queries, $cgi, FH, $parsed, $resulta +ntfile, $blastM6File); # return; print FH '</small></small>'; print FH "<p class='subTitle'>Please select what data you wis +h to view: </p>\n"; print FH "<small>"; print FH $cgi->start_form(-target=>'_blank', -name=>"viewMulti +ple", -action=>"/cgi-bin/BlastQuery/blastNVisualizationMany.cgi" +, -onSubmit=>"return validateMultipleForm()"),"\n"; print FH $cgi->table({-class=>'multipleMenu'}), $cgi->Tr(), $cgi->td({-class=>'innerLeft'}), "\n"; print FH $cgi->hidden(-name=>'selectedQueries'); print FH $cgi->hidden(-name=>'hidden', -value=>$resultantfile) +; print FH $cgi->hidden(-name=>'hiddenM6', -value=> $queryPath.$ +blastM6File); print FH $cgi->hidden(-name=>'queryPath', -value=>$queryPath); print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH "<span class='sub'>From the hit annotation:</span><br + />\n"; my @checked=('gene', 'location', 'length'); my $annotationTitles = $parsed->getAnnotationOrderInfo(); print FH $cgi->checkbox_group(-name=>'annotationTitles', -valu +es=>$annotationTitles, -linebreak=>'true', -default=>\@checked), "<br + />\n"; print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); print FH $cgi->end_td(), $cgi->td({-class=>'innerMiddle'}), "\ +n"; #alignment information print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH "<span class='sub'>From the alignment:</span><br>\n"; @checked = ('alignment','score','evalue','identity','alignment + length'); my $alignmentTitles = ['alignment', 'score','evalue','identity +','alignment length']; print FH $cgi->checkbox_group(-name=>'alignmentTitles',-values +=>$alignmentTitles, -linebreak=>'true', -default=>\@checked), "<br /> +\n"; #alignment filters print FH "<span class='sub'>Filters:</span><br />\n"; print FH 'View top ', $cgi->textfield(-name=>'topXHit',-size=> +5,-maxlength=>10, -default=>1), " hits (e value filtered)<br />\n"; print FH 'No E values > ', $cgi->textfield(-name=>'limitEvalue +',-size=>5,-maxlength=>10),"<br />\n"; print FH 'No % Identity < ', $cgi->textfield(-name=>'limitIden +tity',-size=>5,-maxlength=>10),"%<br />\n"; print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); print FH $cgi->end_td(), $cgi->td({-class=>'innerRight'}), "\n +"; print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH "<span class='sub'>From which database?</span><br />\ +n"; my $databases = $parsed->getAllDatabases(); print FH $cgi->checkbox_group(-name=>'databases',-values=>$dat +abases,-linebreak=>'true', -default=>$databases), "<br />\n"; print FH "<span class='sub'>Order Results by:</span><br />\n"; my $orderBy = ['evalue', 'sourceDB']; print FH $cgi->radio_group(-name=>'orderBy',-value=>$orderBy, + -default=>'evalue'), '<br />'; print FH '<br />'; print FH $cgi->checkbox(-name=>'showQueryData',-checked=>1,-v +alue=>'on',-label=>'Include query length in table'); print FH "<br /><br />\n"; print FH "</small>"; print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); my %tempLabels =('regular'=>'Normal View', 'multiview'=>'Multi + Database View'); print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH "<span class='sub'>"; print FH $cgi->radio_group(-name=>'viewStyle',-value=>'regular +', -default=>'regular', -labels=>\%tempLabels, -rel=>'regularview'); print FH "</span>", " ","<span class='s +ub'>"; print FH $cgi->radio_group(-name=>'viewStyle',-value=>'multivi +ew', -default=>'regular', -labels=>\%tempLabels, -rel=>'multiview'); print FH "</span>"; print FH $cgi->end_td(), $cgi->end_Tr(),$cgi->Tr({-rel=>'regul +arview'}),$cgi->td({-class=>'padded'}); #----- Single parameter visualization -----# print FH "<span class='subsub'>Single Parameter Visualizations +:</span><br />\n"; print FH $cgi->table({-class=>'multipleMenu'}), $cgi->Tr(), $c +gi->td({-class=>'singleParam'}); my @visualizable = ('evalue','identity','alignment length'); my $i=0; foreach my $element (@visualizable){ print FH $cgi->end_td(),$cgi->td({-class=>'singleParam'}) +if ($i==2); print FH '<br />'; print FH $cgi->checkbox(-name=>'visualize', -value=>$eleme +nt, -label=>"Visualize $element", -rel=>"$element"); print FH "<small>"; if ($element eq 'evalue'){ print FH '<span class=\'red\'> max: ', $maxMin->{$elem +ent}->[0], ', min: ', $maxMin->{$element}->[1], '</span><br />'; print FH $cgi->hidden(-name=>$element.'Max', -value=>$ +maxMin->{$element}->[0]); print FH $cgi->hidden(-name=>$element.'Min', -value=>$ +maxMin->{$element}->[1]); }else{ print FH '<span class=\'red\'> max: ', $maxMin->{$elem +ent}->[0], ', min: ', $maxMin->{$element}->[1], '</span><br />'; print FH $cgi->hidden(-name=>$element.'Max', -value=>$ +maxMin->{$element}->[0]); print FH $cgi->hidden(-name=>$element.'Min', -value=>$ +maxMin->{$element}->[1]); } print FH $cgi->table({-class=>'visualization'}); print FH $cgi->Tr({-rel=>"$element"}), $cgi->td(); print FH 'Visual colour: ',$cgi->popup_menu(-name=>$elemen +t.'displaycolour', -values=>['red','blue','green']); if ($element eq 'evalue'){ my %labels = ('0,0,255'=>'blue','0,255,0'=>'green', '2 +55,0,0'=>'red', '255,255,0'=>'yellow','0,255,255'=>'cyan','255,0,255' +=>'magenta','255,255,255'=>'white','0,0,0'=>'black'); print FH ' Zero e value colour: ',$cgi->popup_menu(-na +me=>$element.'zero', -values=>[('0,0,255','0,255,0', '255,0,0', '255, +255,0','0,255,255','255,0,255','255,255,255','0,0,0')], -labels=>\%la +bels); } print FH '<br />'; my %temp =(auto=>'Auto range with '); print FH $cgi->radio_group(-name=>$element.'visualMethod' +,-value=>'auto',-onclick=>"enableOverwrite('".$element.'visualMethod' +."','".$element.'bin'."', 0)", -default=>'auto', -labels=>\%temp, -re +l=>'none'); print FH $cgi->textfield(-name=>$element.'bin',-size=>5,-m +axlength=>5), ' bins or '; %temp =(threshold=>'Set threshold'); print FH $cgi->radio_group(-name=>$element.'visualMethod' +,-value=>'threshold', -onclick=>"enableOverwrite('".$element.'visualM +ethod'."','".$element.'bin'."',0)", -default=>'auto', -labels=>\%temp +, -rel=>"range$element"); print FH $cgi->table({-class=>'threshold'}); print FH $cgi->Tr({-rel=>"range$element"}), $cgi->td(); print FH $cgi->table({-class=>'threshold', -id=>$element}) +; print FH $cgi->Tr(), $cgi->td(); %temp =(colour=>'Colour ', autorange=>'Auto Range with '); print FH 'Range: [', $cgi->textfield(-name=>$element.'star +t1',-size=>5,-maxlength=>10), ', ', $cgi->textfield(-name=>$element.'end1',-size=>5,-maxle +ngth=>10), ')', $cgi->radio_group(-name=>$element.'colour1',-value=>'c +olour', -default=>'colour', -labels=>\%temp, -onClick=>"enableOverwri +te2('$element"."colour1', '$element"."bin1', 1,'$element"."specifiedc +olour1')"); my %labels = ('0,0,255'=>'blue','0,255,0'=>'green', '255,0 +,0'=>'red', '255,255,0'=>'yellow','0,255,255'=>'cyan','255,0,255'=>'m +agenta','255,255,255'=>'white','0,0,0'=>'black'); print FH $cgi->popup_menu(-name=>$element.'specifiedcolour +1', -values=>[('0,0,255','0,255,0', '255,0,0', '255,255,0','0,255,255 +','255,0,255','255,255,255','0,0,0')], -labels=>\%labels); print FH ' ',$cgi->radio_group(-name=>$element.'colour1',- +value=>'autorange',-default=>'colour', -labels=>\%temp, -onClick=>"en +ableOverwrite2('$element"."colour1', '$element"."bin1', 1,'$element". +"specifiedcolour1')"), $cgi->textfield(-name=>$element.'bin1',-size=>5,-maxle +ngth=>5, -class=>'disabled'), ' bins'; print FH $cgi->end_td(), $cgi->end_Tr(); print FH $cgi->end_table(); print FH $cgi->button(-name=>'add', -value=>'Add another r +ange', -onClick=>"addRow(\"$element\", \"$element\")"); print FH $cgi->button(-name=>'remove', -value=>'Remove las +t range', -onClick=>"removeRowFromTable(\"$element\")"); print FH $cgi->checkbox(-name=>$element.'overwrite', -valu +e=>1, -label=>'Overwrite'); print FH $cgi->end_td(), $cgi->end_Tr(); print FH $cgi->end_table(); print FH $cgi->end_td(), $cgi->end_Tr(); print FH $cgi->end_table(); print FH "</small>"; $i++; } print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); print FH '<br />'; #----- Multiple parameter visualization -----# print FH "<span class='subsub'>Multiple Parameter Visualizatio +ns:</span>", $cgi->checkbox(-name=>'multiParam',-checked=>0,-value=>1,- +label=>'', -rel=>'multiple'),"<br /><br />\n"; print FH $cgi->table({-class=>'multiVisual'}), $cgi->Tr({-rel= +>'multiple'}), $cgi->td(); print FH '<small>'; print FH $cgi->table({-class=>'sets', -id=>'Multiple1'}), $cgi +->Tr(), $cgi->td({-class=>'blue'}); print FH '<span class=\'bold\'> Visuali +zation 1: </span>'; print FH 'Visual colour: ',$cgi->popup_menu(-name=>'Multiple1d +isplaycolour', -values=>['red','blue','green']); print FH $cgi->checkbox(-name=>'Multiple1overwrite', -value=>1 +, -label=>'Overwrite'); print FH $cgi->table({-class=>'ranges',-id=>'Multiple1Range1'} +), $cgi->Tr(), $cgi->td({-class=>'ranges'}); print FH '<span class="green">Range 1: </span>'; my %temp =('auto'=>'Auto range with '); print FH $cgi->radio_group(-name=>'Multiple1Range1Style',-valu +e=>'auto', -default=>'auto', -labels=>\%temp, -rel=>'none', -onClick= +>"enableOverwrite2('Multiple1Range1Style', 'Multiple1Range1bin', 0, ' +Multiple1Range1specifiedcolour')"); print FH $cgi->textfield(-name=>'Multiple1Range1bin',-size=>5, +-maxlength=>5), ' bins or '; %temp =('colour'=>'Specify colour: '); print FH $cgi->radio_group(-name=>'Multiple1Range1Style',-val +ue=>'colour', -default=>'auto', -labels=>\%temp, -onClick=>"enableOve +rwrite2('Multiple1Range1Style', 'Multiple1Range1bin', 0,'Multiple1Ran +ge1specifiedcolour')"); my %colourLabels = ('0,0,255'=>'blue','0,255,0'=>'green', '255 +,0,0'=>'red', '255,255,0'=>'yellow','0,255,255'=>'cyan','255,0,255'=> +'magenta','255,255,255'=>'white','0,0,0'=>'black'); print FH $cgi->popup_menu(-name=>'Multiple1Range1specifiedcolo +ur', -values=>[('0,0,255','0,255,0', '255,0,0', '255,255,0','0,255,25 +5','255,0,255','255,255,255','0,0,0')], -labels=>\%colourLabels, -dis +abled=>'true'); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->Tr(), $cgi->td( +); print FH $cgi->table({-class =>'parameters',-id=>'Multiple1Ran +ge1Param1'}), $cgi->Tr(), $cgi->td(); my %paramLabels = ('evalue'=>'E Value','identity'=>'Identity', + 'alignment length'=>'Alignment Length'); #my %paramAttrs = ('evalue'=>{'rel'=>'includeZero'},'identity' +=>{'rel'=>'none'}, 'gaps'=>{'rel'=>'none'}, 'alignment length'=>{'rel +'=>'none'}); print FH '<span class="brown"> Parameter:</span> ',$cgi->popup +_menu(-name=>'Multiple1Range1Param1', -values=>\@visualizable, -label +s=>\%paramLabels); print FH ' Range: [',$cgi->textfield(-name=>'Multiple1Range1Pa +ram1Start',-size=>5,-maxlength=>10), ',', $cgi->textfield(-name=>'Multiple1Range1Param1End',-size=>5 +,-maxlength=>10),')'; print FH $cgi->end_td(), $cgi->td(); print FH $cgi->checkbox(-name=>'Multiple1Range1Param1Zero', -v +alue=>1, -label=>"Include zero e values"); print FH $cgi->end_td(), $cgi->end_Tr(); print FH $cgi->end_table(); print FH ' '; print FH $cgi->button(-name=>'addParam', -value=>'Add another +parameter', -onClick=>"addParamRow('Multiple1Range1Param1','Multiple1 +Range1' )", -class=>"btn2",-onmouseout=>"this.className='btn2'"); print FH $cgi->button(-name=>'removeParam', -value=>'Remove la +st parameter', -onClick=>"removeRowFromTable('Multiple1Range1Param1') +", -class=>"btn2",-onmouseout=>"this.className='btn2'"); print FH $cgi->end_td(), $cgi->end_Tr(); print FH $cgi->end_table(); print FH ' '; print FH $cgi->button(-name=>'addRange', -value=>'Add another +range', -onClick=>"addRangeRow('Multiple1Range1','Multiple1' )", -class=>"btn3", -onmouseout=>"this.className='btn3'"); print FH $cgi->button(-name=>'removeRange', -value=>'Remove la +st range', -onClick=>"remove2RowsFromTable('Multiple1Range1')", -class=>"btn3", -onmouseout=>"this.className='btn3'"); print FH $cgi->end_td(), $cgi->end_Tr(); print FH '</small>'; print FH $cgi->end_table(); print FH $cgi->button(-name=>'addSet', -value=>'Add another vi +sualization', -onClick=>"addSetRow(\"Multiple1\", \"Multiple\")", -class=>"btn4", -onmouseout=>"this.className='btn4'"); print FH $cgi->button(-name=>'removeSet', -value=>'Remove last + visualization', -onClick=>"remove2RowsFromTable(\"Multiple1\")", -class=>"btn4", -onmouseout=>"this.className='btn4'"); print FH $cgi->end_td(), $cgi->td({-class=>'bottom'}); print FH '<small>'; #print FH the max and min infos foreach my $element (@visualizable){ if ($element eq 'evalue'){ print FH $element,':<span class=\'red\'> max: ', $maxM +in->{$element}->[0], ', min: ', $maxMin->{$element}->[1], '</span><br + />'; }else{ print FH $element, ':<span class=\'red\'> max: ', $max +Min->{$element}->[0], ', min: ', $maxMin->{$element}->[1], '</span><b +r />'; } } print FH '<br /><br /><br />'; print FH '</small>'; print FH $cgi->end_td(),$cgi->end_Tr(); print FH $cgi->end_table(); print FH $cgi->end_td(), $cgi->end_Tr(),$cgi->Tr({-rel=>'multi +view'}),$cgi->td({-class=>'padded'}); %tempLabels =('single'=>'Single Parameter Visualizations', 'mu +lti'=>'Multiple Parameters Visualizations'); print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH "<span class='subsub'>"; print FH $cgi->radio_group(-name=>'paramStyle',-value=>'single +', -default=>'single', -labels=>\%tempLabels, -rel=>'singleParamStyle +'); print FH "</span>", " ", "<span class=' +subsub'>"; print FH $cgi->radio_group(-name=>'paramStyle',-value=>'multi' +, -default=>'single', -labels=>\%tempLabels, -rel=>'multiParamStyle') +; print FH $cgi->end_td(),$cgi->end_Tr(), $cgi->Tr({-rel=>'singl +eParamStyle'}), $cgi->td({-class=>'padded'}); print FH "</span>"; #----- Single parameter visualization -----# print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH '<small>'; print FH $cgi->table({-class=>'visualization'}), $cgi->Tr(), $ +cgi->td(); %paramLabels = ('evalue'=>'E Value','identity'=>'Identity', 'a +lignment length'=>'Alignment Length'); print FH '<span class="brown"> Parameter:</span> ',$cgi->popup +_menu(-name=>'visualtype', -values=>\@visualizable, -labels=>\%paramL +abels , -onchange=>"enableEvalue()"); print FH 'Visual colour: ',$cgi->popup_menu(-name=>'singledisp +laycolour', -values=>['red','blue','green']); my %labels = ('0,0,255'=>'blue','0,255,0'=>'green', '255,0,0'= +>'red', '255,255,0'=>'yellow','0,255,255'=>'cyan','255,0,255'=>'magen +ta','255,255,255'=>'white','0,0,0'=>'black'); print FH ' Zero e value colour: ',$cgi->popup_menu(-name=>'sin +glezero',-values=>[('0,0,255','0,255,0', '255,0,0', '255,255,0','0,25 +5,255','255,0,255','255,255,255','0,0,0')], -labels=>\%labels); print FH '<br />'; %temp =(auto=>'Auto range with '); print FH $cgi->radio_group(-name=>'singlevisualMethod',-value +=>'auto', -default=>'auto', -labels=>\%temp, -rel=>'none', -onclick=> +"enableOverwrite('singlevisualMethod','singlebin',0)"); print FH $cgi->textfield(-name=>'singlebin',-size=>5,-maxlengt +h=>5), ' bins or '; %temp =(threshold=>'Set threshold'); print FH $cgi->radio_group(-name=>'singlevisualMethod',-value +=>'threshold', -default=>'auto', -labels=>\%temp, -rel=>'singleRange' +, -onclick=>"enableOverwrite('singlevisualMethod','singlebin',0)"); print FH $cgi->table({-class=>'threshold'}), $cgi->Tr({-rel=>' +singleRange'}), $cgi->td(); print FH $cgi->table({-class=>'threshold', -id=>'single'}), $c +gi->Tr(), $cgi->td(); %temp =(colour=>'Colour ', autorange=>'Auto Range with '); print FH 'Range: [', $cgi->textfield(-name=>'singlestart1',-si +ze=>5,-maxlength=>10), ', ', $cgi->textfield(-name=>'singleend1',-size=>5,-maxlength=>1 +0), ')', $cgi->radio_group(-name=>'singlecolour1',-value=>'colour', + -default=>'colour', -labels=>\%temp, -onClick=>"enableOverwrite2('si +nglecolour1','singlebin1',1,'singlespecifiedcolour1' )"); %labels = ('0,0,255'=>'blue','0,255,0'=>'green', '255,0,0'=>'r +ed', '255,255,0'=>'yellow','0,255,255'=>'cyan','255,0,255'=>'magenta' +,'255,255,255'=>'white','0,0,0'=>'black'); print FH $cgi->popup_menu(-name=>'singlespecifiedcolour1', -va +lues=>[('0,0,255','0,255,0', '255,0,0', '255,255,0','0,255,255','255, +0,255','255,255,255','0,0,0')], -labels=>\%labels); print FH ' ',$cgi->radio_group(-name=>'singlecolour1',-value=> +'autorange',-default=>'colour', -labels=>\%temp, -onClick=>"enableOve +rwrite2('singlecolour1','singlebin1',1,'singlespecifiedcolour1' )"), $cgi->textfield(-name=>'singlebin1',-size=>5,-maxlength=>5 +,-disabled=>'true', -class=>'disabled'), ' bins'; print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); print FH $cgi->button(-name=>'add', -value=>'Add another range +', -onClick=>"addRow(\"single\", \"single\")"); print FH $cgi->button(-name=>'remove', -value=>'Remove last ra +nge', -onClick=>"removeRowFromTable(\"single\")"); print FH $cgi->checkbox(-name=>'singleoverwrite', -value=>1, - +label=>'Overwrite'); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); print FH '</small>'; print FH $cgi->end_td(), $cgi->td(); print FH '<small>'; #print FH the max and min infos foreach my $element (@visualizable){ if ($element eq 'evalue'){ print FH $element,':<span class=\'red\'> max: ', $maxM +inDB->{$element}->[0], ', min: ', $maxMinDB->{$element}->[1], '</span +><br />'; print FH $cgi->hidden(-name=>$element.'Max', -value=>$ +maxMinDB->{$element}->[0]); print FH $cgi->hidden(-name=>$element.'Min', -value=>$ +maxMinDB->{$element}->[1]); print FH 'Zero e value exists<br>' if $hasZero; print FH "haszero $hasZero<br>"; }else{ print FH $element, ':<span class=\'red\'> max: ', $max +MinDB->{$element}->[0], ', min: ', $maxMinDB->{$element}->[1], '</spa +n><br />'; print FH $cgi->hidden(-name=>$element.'Max', -value=>$ +maxMinDB->{$element}->[0]); print FH $cgi->hidden(-name=>$element.'Min', -value=>$ +maxMinDB->{$element}->[1]); } } print FH '</small>'; print FH $cgi->end_td(),$cgi->end_Tr(), $cgi->end_table(); #en +d single param table #ends single parameter visualization print FH $cgi->end_td(),$cgi->end_Tr(), $cgi->Tr({-rel=>'multi +ParamStyle'}), $cgi->td({-class=>'padded'}); #----- Multiple parameter visualization -----# print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH '<small>'; print FH $cgi->table({-class=>'sets', -id=>'Multiple1'}), $cgi +->Tr(), $cgi->td({-class=>'blue'}); print FH '<span class=\'bold\'> Visuali +zation 1: </span>'; print FH 'Visual colour: ',$cgi->popup_menu(-name=>'Multiple1d +isplaycolour', -values=>['red','blue','green']); print FH $cgi->checkbox(-name=>'Multiple1overwrite', -value=>1 +, -label=>'Overwrite'); print FH $cgi->table({-class=>'ranges',-id=>'Multiple1Range1'} +), $cgi->Tr(), $cgi->td({-class=>'ranges'}); print FH '<span class="green">Range 1: </span>'; %temp =('auto'=>'Auto range with '); print FH $cgi->radio_group(-name=>'Multiple1Range1Style',-valu +e=>'auto', -default=>'auto', -labels=>\%temp, -rel=>'none', -onClick= +>"enableOverwrite2('Multiple1Range1Style','Multiple1Range1bin',0, 'Mu +ltiple1Range1specifiedcolour')"); print FH $cgi->textfield(-name=>'Multiple1Range1bin',-size=>5, +-maxlength=>5), ' bins or '; %temp =(threshold=>'Specify colour: '); print FH $cgi->radio_group(-name=>'Multiple1Range1Style',-val +ue=>'colour', -default=>'auto', -labels=>\%temp, -onClick=>"enableOve +rwrite2('Multiple1Range1Style','Multiple1Range1bin',0, 'Multiple1Rang +e1specifiedcolour')"); %colourLabels = ('0,0,255'=>'blue','0,255,0'=>'green', '255,0, +0'=>'red', '255,255,0'=>'yellow','0,255,255'=>'cyan','255,0,255'=>'ma +genta','255,255,255'=>'white','0,0,0'=>'black'); print FH $cgi->popup_menu(-name=>'Multiple1Range1specifiedcolo +ur', -values=>[('0,0,255','0,255,0', '255,0,0', '255,255,0','0,255,25 +5','255,0,255','255,255,255','0,0,0')], -labels=>\%colourLabels, -dis +abled=>'true'); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->Tr(), $cgi->td( +); print FH $cgi->table({-class =>'parameters',-id=>'Multiple1Ran +ge1Param1'}), $cgi->Tr(), $cgi->td(); %paramLabels = ('evalue'=>'E Value','identity'=>'Identity', 'a +lignment length'=>'Alignment Length'); #my %paramAttrs = ('evalue'=>{'rel'=>'includeZero'},'identity' +=>{'rel'=>'none'}, 'gap'=>{'rel'=>'none'}, 'alignment length'=>{'rel' +=>'none'}); print FH '<span class="brown"> Parameter:</span> ',$cgi->popup +_menu(-name=>'Multiple1Range1Param1', -values=>\@visualizable, -label +s=>\%paramLabels); print FH ' Range: [',$cgi->textfield(-name=>'Multiple1Range1Pa +ram1Start',-size=>5,-maxlength=>10), ',', $cgi->textfield(-name=>'Multiple1Range1Param1End',-size=>5 +,-maxlength=>10),')'; print FH $cgi->end_td(), $cgi->td(); print FH $cgi->checkbox(-name=>'Multiple1Range1Param1Zero', -v +alue=>1, -label=>"Include zero e values"); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); #e +nd parameters table print FH ' '; print FH $cgi->button(-name=>'addParam', -value=>'Add another +parameter', -onClick=>"addParamRow('Multiple1Range1Param1','Multiple1 +Range1' )", -class=>"btn2",-onmouseout=>"this.className='btn2'"); print FH $cgi->button(-name=>'removeParam', -value=>'Remove la +st parameter', -onClick=>"removeRowFromTable('Multiple1Range1Param1') +", -class=>"btn2",-onmouseout=>"this.className='btn2'"); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); #e +nd ranges table print FH ' '; print FH $cgi->button(-name=>'addRange', -value=>'Add another +range', -onClick=>"addRangeRow('Multiple1Range1','Multiple1' )", -class=>"btn3", -onmouseout=>"this.className='btn3'"); print FH $cgi->button(-name=>'removeRange', -value=>'Remove la +st range', -onClick=>"remove2RowsFromTable('Multiple1Range1')", -class=>"btn3", -onmouseout=>"this.className='btn3'"); print FH '</small>'; print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table();#en +d multiple table print FH $cgi->end_td(), $cgi->td({-class=>'bottom'}); print FH '<small>'; #print FH the max and min infos foreach my $element (@visualizable){ if ($element eq 'evalue'){ print FH $element,':<span class=\'red\'> max: ', $maxM +inDB->{$element}->[0], ', min: ', $maxMinDB->{$element}->[1], '</span +><br />'; print FH 'Zero e value exists<br>' if $hasZero; }else{ print FH $element, ':<span class=\'red\'> max: ', $max +MinDB->{$element}->[0], ', min: ', $maxMinDB->{$element}->[1], '</spa +n><br />'; } } print FH '<br /><br /><br />'; print FH '</small>'; print FH $cgi->end_td(),$cgi->end_Tr(), $cgi->end_table(); #en +d multiparam table print FH $cgi->end_td(), $cgi->end_Tr(),$cgi->end_table(); print FH $cgi->end_td(), $cgi->end_Tr(),$cgi->end_table(); # print FH '<br />'; print FH '<br />'; # print FH "<p class='subTitle'> </p>\n"; #form buttons print FH $cgi->button(-name=>'Cancel', -label=>'Cancel', -clas +s=>"btn", -onClick=>"parent.location='/cgi-bin/BlastQuery/blastPMain. +cgi'", -onmouseover=>"this.className='btn btnhov'", -onmouseout=> +"this.className='btn'"), ' '; print FH $cgi->submit(-name=>'Perform Blast', -label=>'View Re +sults', -class=>"btn", -onmouseover=>"this.className='btn btnhov'", -onmouseout=> +"this.className='btn'", -onclick=>"return changeSubmit()"); print FH $cgi->hidden(-name=>'queryPath', -value=>$queryPath); print FH $cgi->end_form(); print FH "<p>",$cgi->hr(), $cgi->a({-href=>"/"}, "<p>Back to M +ain"); print FH "<br>\nthis is the end"; close FH; } sub querySummary{ my ($query, $FH) = @_; my $total = 0; my @dbs = keys %{ $query->[2]}; foreach my $db (@dbs){ $total += $query->[2]->{$db}; } print $FH "<br /> <span class='blue'>To +tal hits: $total</span>, from databases: "; foreach my $db (@dbs){ print $FH "<span class='orange'>$db</span>($query->[2]->{$ +db}) "; } print $FH '<br />'; } sub printIndividualQueryMenu{ my ($queries, $cgi, $FH, $parsed, $resultantfile, $blastM6File +) = @_; my @qNames = keys %{$queries}; my $size = @qNames; print $FH "**query total: ",$size, "<br>"; # print FH Dumper($queries); my $i = 0; foreach my $query (@qNames){ $i++; my @dbs = keys %{ $queries->{$query}->[2]}; print $FH $cgi->table({-class=>'individual'}), "\n"; #----- summary of query -----# print $FH $cgi->Tr(), $cgi->td({-class=>'individual'}), "\ +n"; print $FH '<span class="red">'; print $FH $cgi->checkbox(-name=>'selectedQueries',-chec +ked=>0,-value=>"$query", -label=>"$query", -onClick=>"checkValue(this +)"); print $FH '</span>'; querySummary($queries->{$query}, $FH); print $FH ' '; print $FH $cgi->checkbox(-name=>"$i", -checked=>0, -value= +>"", -label=>"View this query separately", -rel=>"$i"); print $FH $cgi->end_td(), $cgi->end_Tr(), "\n"; #----- form starts -----# print $FH $cgi->Tr({-rel=>"$i"}), $cgi->td({-class=>'in +dividual'}), "\n"; print $FH $cgi->start_form(-target=>'_blank', -name=>"v +iewOne", -action=>"/cgi-bin/BlastQuery/blastNVisualizationOne.cgi")," +\n"; print $FH $cgi->table({-class=>'individualMenu'}); #----- Hit annotation info -----# print $FH $cgi->Tr(), $cgi->td({-class=>'innerLeft'}), "\n +"; print $FH $cgi->table(), $cgi->Tr(), $cgi->td(); print $FH "<span class='sub'>From the hit annotation:</spa +n><br />\n"; my @checked=('gene', 'location', 'length'); my $annotationTitles = $parsed->getAnnotationOrderInfo( +); print $FH $cgi->checkbox_group(-name=>'annotationTitles +', -values=>$annotationTitles, -linebreak=>'true', -default=>\@checke +d), "<br />\n"; print $FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table( +); print $FH $cgi->end_td(), $cgi->td({-class=>'innerMiddle'} +), "\n"; #alignment information print $FH $cgi->table(), $cgi->Tr(), $cgi->td(); print $FH "<span class='sub'>From the alignment:</span><br +>\n"; @checked = ('alignment','score', 'evalue','identity','alig +nment length'); my $alignmentTitles = ['alignment','score', 'evalue','iden +tity','alignment length']; print $FH $cgi->checkbox_group(-name=>'alignmentTitles +', -values=>$alignmentTitles, -linebreak=>'true', -default=>\@checked +), "<br>\n"; #alignment filters print $FH "<span class='sub'>Filters:</span><br />\n"; print $FH 'View top ', $cgi->textfield(-name=>'topXHit',-s +ize=>5,-maxlength=>10, -default=>10), " hits (e value filtered)<br /> +\n"; print $FH 'No E values > ', $cgi->textfield(-name=>'limitE +value',-size=>5,-maxlength=>10),"<br />\n"; print $FH 'No % Identity < ', $cgi->textfield(-name=>'limi +tIdentity',-size=>5,-maxlength=>10),"%<br />\n"; print $FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table( +); #last column print $FH $cgi->end_td(), $cgi->td({-class=>'innerRight'}) +, "\n"; print $FH $cgi->table(), $cgi->Tr(), $cgi->td(); print $FH "<span class='sub'>From which database?</span><b +r />\n"; print $FH $cgi->checkbox_group(-name=>'databases',-values= +>\@dbs,-linebreak=>'true', -default=>\@dbs), "<br />\n"; print $FH "<span class='sub'>Order Results by:</span><br / +>\n"; my $orderBy = ['evalue', 'sourceDB']; print $FH $cgi->radio_group(-name=>'orderBy',-value=>$ord +erBy, -default=>'evalue'), '<br />'; print $FH '<br />'; print $FH $cgi->checkbox(-name=>'showQueryData',-checked= +>1,-value=>'on',-label=>'Include query length and ID in table'); print $FH "<br /><br />\n"; print $FH "</small>"; #----- submit button -----# print $FH $cgi->submit(-name=>'Perform Blast', -label=>'Vi +ew Results', -class=>"btn", -onmouseover=>"this.className='btn btnhov'", -onmouseout=> +"this.className='btn'"); print $FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table( +); print $FH $cgi->hidden(-name=>'hidden', -default=>[$query, + $resultantfile, $blastM6File]); print $FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table( +); print $FH $cgi->end_form(); print $FH $cgi->end_td(), $cgi->end_Tr(), "\n"; print $FH $cgi->end_table(); print $FH "<br />"; } } sub isInArray{ my ($element, $array) = @_; foreach (@$array){ return 1 if ($element eq $_); } return 0; } 1;
In reply to Re: detached thread not working??
by bluegirl123
in thread detached thread not working??
by bluegirl123
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |