#!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;