#!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 blast 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
"; # 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 hold 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\\Apache2\\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, error: $!"; # 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=>'onLoad()'); #this is the window title print FH $cgi->h1("Nucleotide Blast Results: \n"); print FH "

Save Blast Results:

\n"; print FH ''; print FH $cgi->start_form(-target=>'_blank', -name=>"saveResults", -action=>"/cgi-bin/BlastQuery/saveFile.cgi", -onSubmit=>"return validateMultipleForm()"),"\n"; print FH 'Folder name ', $cgi->textfield(-name=>'saveFile',-size=>20,-maxlength=>50), ' (saved in C:\BlastQueries\)'; print FH '

'; 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 Results', -class=>"btn", -onmouseover=>"this.className='btn btnhov'", -onmouseout=>"this.className='btn'",-onclick=>"return validateSaveResultsForm()" ); print FH $cgi->checkbox(-name=>'saveQuery', -value=>$cgi->param('queryFile'), -label=>'Save a copy of the query file/web query as well'); print FH $cgi->end_form(); print FH '
'; print FH "

Queries:

\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 gaps or not my $hasZero=0; my $maxMinDB = $parsed->getMaxMinDBLite(); #$parsed->print FHBlastPView0(); # print FH Dumper($maxMinDB); my $queries = $parsed->getAllQueryInfo(); print FH ''; print FH $cgi->checkbox(-name=>'selectall',-checked=>0,-value=>'on',-label=>'Select/Deselect all queries for multiple viewing', -onclick=>'selectDeselect()'); print FH ''; printIndividualQueryMenu($queries, $cgi, FH, $parsed, $resultantfile, $blastM6File); # return; print FH ''; print FH "

Please select what data you wish to view:

\n"; print FH ""; print FH $cgi->start_form(-target=>'_blank', -name=>"viewMultiple", -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 "From the hit annotation:
\n"; my @checked=('gene', 'location', 'length'); my $annotationTitles = $parsed->getAnnotationOrderInfo(); print FH $cgi->checkbox_group(-name=>'annotationTitles', -values=>$annotationTitles, -linebreak=>'true', -default=>\@checked), "
\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 "From the alignment:
\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), "
\n"; #alignment filters print FH "Filters:
\n"; print FH 'View top ', $cgi->textfield(-name=>'topXHit',-size=>5,-maxlength=>10, -default=>1), " hits (e value filtered)
\n"; print FH 'No E values > ', $cgi->textfield(-name=>'limitEvalue',-size=>5,-maxlength=>10),"
\n"; print FH 'No % Identity < ', $cgi->textfield(-name=>'limitIdentity',-size=>5,-maxlength=>10),"%
\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 "From which database?
\n"; my $databases = $parsed->getAllDatabases(); print FH $cgi->checkbox_group(-name=>'databases',-values=>$databases,-linebreak=>'true', -default=>$databases), "
\n"; print FH "Order Results by:
\n"; my $orderBy = ['evalue', 'sourceDB']; print FH $cgi->radio_group(-name=>'orderBy',-value=>$orderBy, -default=>'evalue'), '
'; print FH '
'; print FH $cgi->checkbox(-name=>'showQueryData',-checked=>1,-value=>'on',-label=>'Include query length in table'); print FH "

\n"; print FH "
"; 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 ""; print FH $cgi->radio_group(-name=>'viewStyle',-value=>'regular', -default=>'regular', -labels=>\%tempLabels, -rel=>'regularview'); print FH "", "    ",""; print FH $cgi->radio_group(-name=>'viewStyle',-value=>'multiview', -default=>'regular', -labels=>\%tempLabels, -rel=>'multiview'); print FH ""; print FH $cgi->end_td(), $cgi->end_Tr(),$cgi->Tr({-rel=>'regularview'}),$cgi->td({-class=>'padded'}); #----- Single parameter visualization -----# print FH "Single Parameter Visualizations:
\n"; print FH $cgi->table({-class=>'multipleMenu'}), $cgi->Tr(), $cgi->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 '
'; print FH $cgi->checkbox(-name=>'visualize', -value=>$element, -label=>"Visualize $element", -rel=>"$element"); print FH ""; if ($element eq 'evalue'){ print FH ' max: ', $maxMin->{$element}->[0], ', min: ', $maxMin->{$element}->[1], '
'; 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 ' max: ', $maxMin->{$element}->[0], ', min: ', $maxMin->{$element}->[1], '
'; 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=>$element.'displaycolour', -values=>['red','blue','green']); if ($element eq 'evalue'){ 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'=>'magenta','255,255,255'=>'white','0,0,0'=>'black'); print FH ' Zero e value colour: ',$cgi->popup_menu(-name=>$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=>\%labels); } print FH '
'; 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, -rel=>'none'); print FH $cgi->textfield(-name=>$element.'bin',-size=>5,-maxlength=>5), ' bins or '; %temp =(threshold=>'Set threshold'); print FH $cgi->radio_group(-name=>$element.'visualMethod',-value=>'threshold', -onclick=>"enableOverwrite('".$element.'visualMethod'."','".$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.'start1',-size=>5,-maxlength=>10), ', ', $cgi->textfield(-name=>$element.'end1',-size=>5,-maxlength=>10), ')', $cgi->radio_group(-name=>$element.'colour1',-value=>'colour', -default=>'colour', -labels=>\%temp, -onClick=>"enableOverwrite2('$element"."colour1', '$element"."bin1', 1,'$element"."specifiedcolour1')"); 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'=>'magenta','255,255,255'=>'white','0,0,0'=>'black'); print FH $cgi->popup_menu(-name=>$element.'specifiedcolour1', -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=>"enableOverwrite2('$element"."colour1', '$element"."bin1', 1,'$element"."specifiedcolour1')"), $cgi->textfield(-name=>$element.'bin1',-size=>5,-maxlength=>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 range', -onClick=>"addRow(\"$element\", \"$element\")"); print FH $cgi->button(-name=>'remove', -value=>'Remove last range', -onClick=>"removeRowFromTable(\"$element\")"); print FH $cgi->checkbox(-name=>$element.'overwrite', -value=>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 "
"; $i++; } print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); print FH '
'; #----- Multiple parameter visualization -----# print FH "Multiple Parameter Visualizations:", $cgi->checkbox(-name=>'multiParam',-checked=>0,-value=>1,-label=>'', -rel=>'multiple'),"

\n"; print FH $cgi->table({-class=>'multiVisual'}), $cgi->Tr({-rel=>'multiple'}), $cgi->td(); print FH ''; print FH $cgi->table({-class=>'sets', -id=>'Multiple1'}), $cgi->Tr(), $cgi->td({-class=>'blue'}); print FH '    Visualization 1: '; print FH 'Visual colour: ',$cgi->popup_menu(-name=>'Multiple1displaycolour', -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 'Range 1: '; my %temp =('auto'=>'Auto range with '); print FH $cgi->radio_group(-name=>'Multiple1Range1Style',-value=>'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',-value=>'colour', -default=>'auto', -labels=>\%temp, -onClick=>"enableOverwrite2('Multiple1Range1Style', 'Multiple1Range1bin', 0,'Multiple1Range1specifiedcolour')"); 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=>'Multiple1Range1specifiedcolour', -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=>\%colourLabels, -disabled=>'true'); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->Tr(), $cgi->td(); print FH $cgi->table({-class =>'parameters',-id=>'Multiple1Range1Param1'}), $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 ' Parameter: ',$cgi->popup_menu(-name=>'Multiple1Range1Param1', -values=>\@visualizable, -labels=>\%paramLabels); print FH ' Range: [',$cgi->textfield(-name=>'Multiple1Range1Param1Start',-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', -value=>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','Multiple1Range1' )", -class=>"btn2",-onmouseout=>"this.className='btn2'"); print FH $cgi->button(-name=>'removeParam', -value=>'Remove last 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 last range', -onClick=>"remove2RowsFromTable('Multiple1Range1')", -class=>"btn3", -onmouseout=>"this.className='btn3'"); print FH $cgi->end_td(), $cgi->end_Tr(); print FH ''; print FH $cgi->end_table(); print FH $cgi->button(-name=>'addSet', -value=>'Add another visualization', -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 ''; #print FH the max and min infos foreach my $element (@visualizable){ if ($element eq 'evalue'){ print FH $element,': max: ', $maxMin->{$element}->[0], ', min: ', $maxMin->{$element}->[1], '
'; }else{ print FH $element, ': max: ', $maxMin->{$element}->[0], ', min: ', $maxMin->{$element}->[1], '
'; } } print FH '


'; print FH '
'; print FH $cgi->end_td(),$cgi->end_Tr(); print FH $cgi->end_table(); print FH $cgi->end_td(), $cgi->end_Tr(),$cgi->Tr({-rel=>'multiview'}),$cgi->td({-class=>'padded'}); %tempLabels =('single'=>'Single Parameter Visualizations', 'multi'=>'Multiple Parameters Visualizations'); print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH ""; print FH $cgi->radio_group(-name=>'paramStyle',-value=>'single', -default=>'single', -labels=>\%tempLabels, -rel=>'singleParamStyle'); print FH "", "    ", ""; 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=>'singleParamStyle'}), $cgi->td({-class=>'padded'}); print FH ""; #----- Single parameter visualization -----# print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH ''; print FH $cgi->table({-class=>'visualization'}), $cgi->Tr(), $cgi->td(); %paramLabels = ('evalue'=>'E Value','identity'=>'Identity', 'alignment length'=>'Alignment Length'); print FH ' Parameter: ',$cgi->popup_menu(-name=>'visualtype', -values=>\@visualizable, -labels=>\%paramLabels , -onchange=>"enableEvalue()"); print FH 'Visual colour: ',$cgi->popup_menu(-name=>'singledisplaycolour', -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'=>'magenta','255,255,255'=>'white','0,0,0'=>'black'); print FH ' Zero e value colour: ',$cgi->popup_menu(-name=>'singlezero',-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 '
'; %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,-maxlength=>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'}), $cgi->Tr(), $cgi->td(); %temp =(colour=>'Colour ', autorange=>'Auto Range with '); print FH 'Range: [', $cgi->textfield(-name=>'singlestart1',-size=>5,-maxlength=>10), ', ', $cgi->textfield(-name=>'singleend1',-size=>5,-maxlength=>10), ')', $cgi->radio_group(-name=>'singlecolour1',-value=>'colour', -default=>'colour', -labels=>\%temp, -onClick=>"enableOverwrite2('singlecolour1','singlebin1',1,'singlespecifiedcolour1' )"); %labels = ('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=>'singlespecifiedcolour1', -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=>'singlecolour1',-value=>'autorange',-default=>'colour', -labels=>\%temp, -onClick=>"enableOverwrite2('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 range', -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 '
'; print FH $cgi->end_td(), $cgi->td(); print FH ''; #print FH the max and min infos foreach my $element (@visualizable){ if ($element eq 'evalue'){ print FH $element,': max: ', $maxMinDB->{$element}->[0], ', min: ', $maxMinDB->{$element}->[1], '
'; 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
' if $hasZero; print FH "haszero $hasZero
"; }else{ print FH $element, ': max: ', $maxMinDB->{$element}->[0], ', min: ', $maxMinDB->{$element}->[1], '
'; print FH $cgi->hidden(-name=>$element.'Max', -value=>$maxMinDB->{$element}->[0]); print FH $cgi->hidden(-name=>$element.'Min', -value=>$maxMinDB->{$element}->[1]); } } print FH '
'; print FH $cgi->end_td(),$cgi->end_Tr(), $cgi->end_table(); #end single param table #ends single parameter visualization print FH $cgi->end_td(),$cgi->end_Tr(), $cgi->Tr({-rel=>'multiParamStyle'}), $cgi->td({-class=>'padded'}); #----- Multiple parameter visualization -----# print FH $cgi->table(), $cgi->Tr(), $cgi->td(); print FH ''; print FH $cgi->table({-class=>'sets', -id=>'Multiple1'}), $cgi->Tr(), $cgi->td({-class=>'blue'}); print FH '    Visualization 1: '; print FH 'Visual colour: ',$cgi->popup_menu(-name=>'Multiple1displaycolour', -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 'Range 1: '; %temp =('auto'=>'Auto range with '); print FH $cgi->radio_group(-name=>'Multiple1Range1Style',-value=>'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 =(threshold=>'Specify colour: '); print FH $cgi->radio_group(-name=>'Multiple1Range1Style',-value=>'colour', -default=>'auto', -labels=>\%temp, -onClick=>"enableOverwrite2('Multiple1Range1Style','Multiple1Range1bin',0, 'Multiple1Range1specifiedcolour')"); %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=>'Multiple1Range1specifiedcolour', -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=>\%colourLabels, -disabled=>'true'); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->Tr(), $cgi->td(); print FH $cgi->table({-class =>'parameters',-id=>'Multiple1Range1Param1'}), $cgi->Tr(), $cgi->td(); %paramLabels = ('evalue'=>'E Value','identity'=>'Identity', 'alignment length'=>'Alignment Length'); #my %paramAttrs = ('evalue'=>{'rel'=>'includeZero'},'identity'=>{'rel'=>'none'}, 'gap'=>{'rel'=>'none'}, 'alignment length'=>{'rel'=>'none'}); print FH ' Parameter: ',$cgi->popup_menu(-name=>'Multiple1Range1Param1', -values=>\@visualizable, -labels=>\%paramLabels); print FH ' Range: [',$cgi->textfield(-name=>'Multiple1Range1Param1Start',-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', -value=>1, -label=>"Include zero e values"); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); #end parameters table print FH '    '; print FH $cgi->button(-name=>'addParam', -value=>'Add another parameter', -onClick=>"addParamRow('Multiple1Range1Param1','Multiple1Range1' )", -class=>"btn2",-onmouseout=>"this.className='btn2'"); print FH $cgi->button(-name=>'removeParam', -value=>'Remove last parameter', -onClick=>"removeRowFromTable('Multiple1Range1Param1')", -class=>"btn2",-onmouseout=>"this.className='btn2'"); print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table(); #end 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 last range', -onClick=>"remove2RowsFromTable('Multiple1Range1')", -class=>"btn3", -onmouseout=>"this.className='btn3'"); print FH ''; print FH $cgi->end_td(), $cgi->end_Tr(), $cgi->end_table();#end multiple table print FH $cgi->end_td(), $cgi->td({-class=>'bottom'}); print FH ''; #print FH the max and min infos foreach my $element (@visualizable){ if ($element eq 'evalue'){ print FH $element,': max: ', $maxMinDB->{$element}->[0], ', min: ', $maxMinDB->{$element}->[1], '
'; print FH 'Zero e value exists
' if $hasZero; }else{ print FH $element, ': max: ', $maxMinDB->{$element}->[0], ', min: ', $maxMinDB->{$element}->[1], '
'; } } print FH '


'; print FH '
'; print FH $cgi->end_td(),$cgi->end_Tr(), $cgi->end_table(); #end 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 '
'; print FH '
'; # print FH "

\n"; #form buttons print FH $cgi->button(-name=>'Cancel', -label=>'Cancel', -class=>"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 Results', -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 "

",$cgi->hr(), $cgi->a({-href=>"/"}, "

Back to Main"); print FH "
\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 "
    Total hits: $total, from databases: "; foreach my $db (@dbs){ print $FH "$db($query->[2]->{$db}) "; } print $FH '
'; } sub printIndividualQueryMenu{ my ($queries, $cgi, $FH, $parsed, $resultantfile, $blastM6File) = @_; my @qNames = keys %{$queries}; my $size = @qNames; print $FH "**query total: ",$size, "
"; # 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 ''; print $FH $cgi->checkbox(-name=>'selectedQueries',-checked=>0,-value=>"$query", -label=>"$query", -onClick=>"checkValue(this)"); print $FH ''; 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=>'individual'}), "\n"; print $FH $cgi->start_form(-target=>'_blank', -name=>"viewOne", -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 "From the hit annotation:
\n"; my @checked=('gene', 'location', 'length'); my $annotationTitles = $parsed->getAnnotationOrderInfo(); print $FH $cgi->checkbox_group(-name=>'annotationTitles', -values=>$annotationTitles, -linebreak=>'true', -default=>\@checked), "
\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 "From the alignment:
\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), "
\n"; #alignment filters print $FH "Filters:
\n"; print $FH 'View top ', $cgi->textfield(-name=>'topXHit',-size=>5,-maxlength=>10, -default=>10), " hits (e value filtered)
\n"; print $FH 'No E values > ', $cgi->textfield(-name=>'limitEvalue',-size=>5,-maxlength=>10),"
\n"; print $FH 'No % Identity < ', $cgi->textfield(-name=>'limitIdentity',-size=>5,-maxlength=>10),"%
\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 "From which database?
\n"; print $FH $cgi->checkbox_group(-name=>'databases',-values=>\@dbs,-linebreak=>'true', -default=>\@dbs), "
\n"; print $FH "Order Results by:
\n"; my $orderBy = ['evalue', 'sourceDB']; print $FH $cgi->radio_group(-name=>'orderBy',-value=>$orderBy, -default=>'evalue'), '
'; print $FH '
'; print $FH $cgi->checkbox(-name=>'showQueryData',-checked=>1,-value=>'on',-label=>'Include query length and ID in table'); print $FH "

\n"; print $FH ""; #----- submit button -----# print $FH $cgi->submit(-name=>'Perform Blast', -label=>'View 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 "
"; } } sub isInArray{ my ($element, $array) = @_; foreach (@$array){ return 1 if ($element eq $_); } return 0; } 1;