[Bio] / FigKernelPackages / Observation.pm Repository:
ViewVC logotype

Diff of /FigKernelPackages/Observation.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.50, Thu Dec 6 18:47:35 2007 UTC revision 1.73, Tue Sep 9 14:38:50 2008 UTC
# Line 1  Line 1 
1  package Observation;  package Observation;
2    
3  use lib '/vol/ontologies';  #use lib '/vol/ontologies';
4  use DBMaster;  use DBMaster;
5  use Data::Dumper;  use Data::Dumper;
6    
7  require Exporter;  require Exporter;
8  @EXPORT_OK = qw(get_objects);  @EXPORT_OK = qw(get_objects get_sims_objects);
9    
10  use WebColors;  use WebColors;
11    use WebConfig;
12    
13  use FIG_Config;  use FIG_Config;
14  #use strict;  #use strict;
15  #use warnings;  #use warnings;
16  use HTML;  use HTML;
17    use FFs;
18    
19  1;  1;
20    
 # $Id$  
   
21  =head1 NAME  =head1 NAME
22    
23  Observation -- A presentation layer for observations in SEED.  Observation -- A presentation layer for observations in SEED.
# Line 319  Line 319 
319  =cut  =cut
320    
321  sub get_objects {  sub get_objects {
322      my ($self,$fid,$fig,$scope) = @_;      my ($self,$fid,$fig,$parameters,$scope) = @_;
323    
324      my $objects = [];      my $objects = [];
325      my @matched_datasets=();      my @matched_datasets=();
# Line 337  Line 337 
337          $domain_classes{'PFAM'} = 1;          $domain_classes{'PFAM'} = 1;
338          get_identical_proteins($fid,\@matched_datasets,$fig);          get_identical_proteins($fid,\@matched_datasets,$fig);
339          get_attribute_based_domain_observations($fid,\%domain_classes,\@matched_datasets,\@attributes,$fig);          get_attribute_based_domain_observations($fid,\%domain_classes,\@matched_datasets,\@attributes,$fig);
340          get_sims_observations($fid,\@matched_datasets,$fig);          get_sims_observations($fid,\@matched_datasets,$fig,$parameters);
341          get_functional_coupling($fid,\@matched_datasets,$fig);          get_functional_coupling($fid,\@matched_datasets,$fig);
342          get_attribute_based_location_observations($fid,\@matched_datasets,\@attributes,$fig);          get_attribute_based_location_observations($fid,\@matched_datasets,\@attributes,$fig);
343          get_pdb_observations($fid,\@matched_datasets,\@attributes,$fig);          get_pdb_observations($fid,\@matched_datasets,\@attributes,$fig);
# Line 374  Line 374 
374    
375  }  }
376    
377    =head3 get_attributes
378        provides layer of abstraction between tools and underlying access method to Attribute Server
379    =cut
380    
381    sub get_attributes{
382        my ($self,$fig,$search_set,$search_term,$value_array_ref) = @_;
383        my @attributes = $fig->get_attributes($search_set,$search_term,@$value_array_ref);
384        return @attributes;
385    }
386    
387    =head3 get_sims_objects()
388    
389    This is the B<REAL WORKHORSE> method of this Package.
390    
391    =cut
392    
393    sub get_sims_objects {
394        my ($self,$fid,$fig,$parameters) = @_;
395    
396        my $objects = [];
397        my @matched_datasets=();
398    
399        # call function that fetches attribute based observations
400        # returns an array of arrays of hashes
401        get_sims_observations($fid,\@matched_datasets,$fig,$parameters);
402    
403        foreach my $dataset (@matched_datasets) {
404            my $object;
405            if ($dataset->{'class'} eq "SIM"){
406                $object = Observation::Sims->new($dataset);
407            }
408            push (@$objects, $object);
409        }
410        return $objects;
411    }
412    
413    
414  =head3 display_housekeeping  =head3 display_housekeeping
415  This method returns the housekeeping data for a given peg in a table format  This method returns the housekeeping data for a given peg in a table format
416    
# Line 383  Line 420 
420      my $content = [];      my $content = [];
421      my $row = [];      my $row = [];
422    
423      my $org_name = $fig->org_of($fid);      my $org_name = "Data not available";
424        if ( $fig->org_of($fid)){
425            $org_name = $fig->org_of($fid);
426        }
427      my $org_id = $fig->genome_of($fid);      my $org_id = $fig->genome_of($fid);
428      my $function = $fig->function_of($fid);      my $function = $fig->function_of($fid);
429      #my $taxonomy = $fig->taxonomy_of($org_id);      #my $taxonomy = $fig->taxonomy_of($org_id);
# Line 414  Line 454 
454  =cut  =cut
455    
456  sub get_sims_summary {  sub get_sims_summary {
457      my ($observation, $fid, $taxes, $dataset, $fig) = @_;      my ($observation, $dataset, $fig) = @_;
458      my %families;      my %families;
459      #my @sims= $fig->nsims($fid,20000,10,"fig");      my $taxes = $fig->taxonomy_list();
460    
461      foreach my $thing (@$dataset) {      foreach my $thing (@$dataset) {
462            my ($id, $evalue);
463            if ($thing =~ /fig\|/){
464                $id = $thing;
465                $evalue = -1;
466            }
467            else{
468          next if ($thing->class ne "SIM");          next if ($thing->class ne "SIM");
469                $id      = $thing->acc;
470          my $id      = $thing->acc;              $evalue  = $thing->evalue;
471          my $evalue  = $thing->evalue;          }
   
472          next if ($id !~ /fig\|/);          next if ($id !~ /fig\|/);
473          next if ($fig->is_deleted_fid($id));          next if ($fig->is_deleted_fid($id));
474    
475          my $genome = $fig->genome_of($id);          my $genome = $fig->genome_of($id);
476          #my ($genome1) = ($genome) =~ /(.*)\./;          #my ($genome1) = ($genome) =~ /(.*)\./;
477          #my $taxonomy = $taxes->{$genome1};          my $taxonomy = $taxes->{$genome};
         my $taxonomy = $fig->taxonomy_of($genome); # use this if the taxonomies have been updated  
478          my $parent_tax = "Root";          my $parent_tax = "Root";
479          my @currLineage = ($parent_tax);          my @currLineage = ($parent_tax);
480          foreach my $tax (split(/\; /, $taxonomy)){          push (@{$families{figs}{$parent_tax}}, $id);
481              push (@{$families{children}{$parent_tax}}, $tax);          my $level = 2;
482    
483            foreach my $tax (split(/\; /, $taxonomy),$id){
484              next if ($tax eq $parent_tax);
485              push (@{$families{children}{$parent_tax}}, $tax) if ($tax ne $parent_tax);
486              push (@{$families{figs}{$tax}}, $id) if ($tax ne $parent_tax);
487              $families{level}{$tax} = $level;
488              push (@currLineage, $tax);              push (@currLineage, $tax);
489              $families{parent}{$tax} = $parent_tax;              $families{parent}{$tax} = $parent_tax;
490              $families{lineage}{$tax} = join(";", @currLineage);              $families{lineage}{$tax} = join(";", @currLineage);
491              if (defined ($families{evalue}{$tax})){              if (defined ($families{evalue}{$tax})){
492                  if ($sim->[10] < $families{evalue}{$tax}){              if ($evalue < $families{evalue}{$tax}){
493                      $families{evalue}{$tax} = $evalue;                      $families{evalue}{$tax} = $evalue;
494                      $families{color}{$tax} = &get_taxcolor($evalue);                      $families{color}{$tax} = &get_taxcolor($evalue);
495                  }                  }
# Line 449  Line 500 
500              }              }
501    
502              $parent_tax = $tax;              $parent_tax = $tax;
503              $level++;
504          }          }
505      }      }
506    
# Line 459  Line 511 
511          my @out = grep(!$saw{$_}++, @{$families{children}{$key}});          my @out = grep(!$saw{$_}++, @{$families{children}{$key}});
512          $families{children}{$key} = \@out;          $families{children}{$key} = \@out;
513      }      }
514      return (\%families);  
515        return \%families;
516  }  }
517    
518  =head1 Internal Methods  =head1 Internal Methods
# Line 473  Line 526 
526  sub get_taxcolor{  sub get_taxcolor{
527      my ($evalue) = @_;      my ($evalue) = @_;
528      my $color;      my $color;
529      if ($evalue <= 1e-170){        $color = "#FF2000";    }      if ($evalue == -1){            $color = "black";      }
530        elsif (($evalue <= 1e-170) && ($evalue >= 0)){        $color = "#FF2000";    }
531      elsif (($evalue <= 1e-120) && ($evalue > 1e-170)){        $color = "#FF3300";    }      elsif (($evalue <= 1e-120) && ($evalue > 1e-170)){        $color = "#FF3300";    }
532      elsif (($evalue <= 1e-90) && ($evalue > 1e-120)){        $color = "#FF6600";    }      elsif (($evalue <= 1e-90) && ($evalue > 1e-120)){        $color = "#FF6600";    }
533      elsif (($evalue <= 1e-70) && ($evalue > 1e-90)){        $color = "#FF9900";    }      elsif (($evalue <= 1e-70) && ($evalue > 1e-90)){        $color = "#FF9900";    }
# Line 491  Line 545 
545    
546      # we read a FIG ID and a reference to an array (of arrays of hashes, see above)      # we read a FIG ID and a reference to an array (of arrays of hashes, see above)
547      my ($fid,$domain_classes,$datasets_ref,$attributes_ref,$fig) = (@_);      my ($fid,$domain_classes,$datasets_ref,$attributes_ref,$fig) = (@_);
548        my $seen = {};
549      foreach my $attr_ref (@$attributes_ref) {      foreach my $attr_ref (@$attributes_ref) {
550          my $key = @$attr_ref[1];          my $key = @$attr_ref[1];
551          my @parts = split("::",$key);          my @parts = split("::",$key);
552          my $class = $parts[0];          my $class = $parts[0];
553          my $name = $parts[1];          my $name = $parts[1];
554          next if (($class eq "PFAM") && ($name !~ /interpro/));          next if ($seen->{$name});
555            $seen->{$name}++;
556            #next if (($class eq "PFAM") && ($name !~ /interpro/));
557    
558          if($domain_classes->{$parts[0]}){          if($domain_classes->{$parts[0]}){
559              my $val = @$attr_ref[2];              my $val = @$attr_ref[2];
# Line 654  Line 710 
710  =cut  =cut
711    
712  sub get_sims_observations{  sub get_sims_observations{
713        my ($fid,$datasets_ref,$fig,$parameters) = (@_);
714    
715      my ($fid,$datasets_ref,$fig) = (@_);      my ($max_sims, $max_expand, $max_eval, $sim_order, $db_filter, $sim_filters);
716      #my $fig = new FIG;      if ( (defined $parameters->{flag}) && ($parameters->{flag})){
717      my @sims= $fig->sims($fid,500,10,"fig");        $max_sims = $parameters->{max_sims};
718          $max_expand = $parameters->{max_expand};
719          $max_eval = $parameters->{max_eval};
720          $db_filter = $parameters->{db_filter};
721          $sim_filters->{ sort_by } = $parameters->{sim_order};
722          #$sim_order = $parameters->{sim_order};
723          $group_by_genome = 1 if (defined ($parameters->{group_genome}));
724        }
725        elsif ( (defined $parameters->{sims_db}) && ($parameters->{sims_db} eq 'all')){
726          $max_sims = 50;
727          $max_expand = 5;
728          $max_eval = 1e-5;
729          $db_filter = "all";
730          $sim_filters->{ sort_by } = 'id';
731        }
732        else{
733          $max_sims = 50;
734          $max_expand = 5;
735          $max_eval = 1e-5;
736          $db_filter = "figx";
737          $sim_filters->{ sort_by } = 'id';
738          #$sim_order = "id";
739        }
740    
741        my($id, $genome, @genomes, %sims);
742        my @tmp= $fig->sims($fid,$max_sims,$max_eval,$db_filter,$max_expand,$sim_filters);
743        @tmp = grep { !($_->id2 =~ /^fig\|/ and $fig->is_deleted_fid($_->id2)) } @tmp;
744      my ($dataset);      my ($dataset);
745    
746      foreach my $sim (@sims){      if ($group_by_genome){
747          next if ($fig->is_deleted_fid($sim->[1]));        #  Collect all sims from genome with the first occurance of the genome:
748          foreach $sim ( @tmp ){
749            $id = $sim->id2;
750            $genome = ($id =~ /^fig\|(\d+\.\d+)\.peg\.\d+/) ? $1 : $id;
751            if (! defined( $sims{ $genome } ) ) { push @genomes, $genome }
752            push @{ $sims{ $genome } }, $sim;
753          }
754          @tmp = map { @{ $sims{$_} } } @genomes;
755        }
756    
757        my $seen_sims={};
758        foreach my $sim (@tmp){
759          my $hit = $sim->[1];          my $hit = $sim->[1];
760            next if ($seen_sims->{$hit});
761            $seen_sims->{$hit}++;
762          my $percent = $sim->[2];          my $percent = $sim->[2];
763          my $evalue = $sim->[10];          my $evalue = $sim->[10];
764          my $qfrom = $sim->[6];          my $qfrom = $sim->[6];
# Line 673  Line 769 
769          my $hlength = $sim->[13];          my $hlength = $sim->[13];
770          my $db = get_database($hit);          my $db = get_database($hit);
771          my $func = $fig->function_of($hit);          my $func = $fig->function_of($hit);
772          my $organism = $fig->org_of($hit);          my $organism;
773            if ($fig->org_of($hit)){
774                $organism = $fig->org_of($hit);
775            }
776            else{
777                $organism = "Data not available";
778            }
779    
780          $dataset = {'class' => 'SIM',          $dataset = {'class' => 'SIM',
781                      'query' => $sim->[0],                      'query' => $sim->[0],
# Line 706  Line 808 
808      my ($id) = (@_);      my ($id) = (@_);
809    
810      my ($db);      my ($db);
811      if ($id =~ /^fig\|/)              { $db = "FIG" }      if ($id =~ /^fig\|/)              { $db = "SEED" }
812      elsif ($id =~ /^gi\|/)            { $db = "NCBI" }      elsif ($id =~ /^gi\|/)            { $db = "NCBI" }
813        elsif ($id =~ /^gb\|/)            { $db = "GenBank" }
814      elsif ($id =~ /^^[NXYZA]P_/)      { $db = "RefSeq" }      elsif ($id =~ /^^[NXYZA]P_/)      { $db = "RefSeq" }
815        elsif ($id =~ /^ref\|/)           { $db = "RefSeq" }
816      elsif ($id =~ /^sp\|/)            { $db = "SwissProt" }      elsif ($id =~ /^sp\|/)            { $db = "SwissProt" }
817      elsif ($id =~ /^uni\|/)           { $db = "UniProt" }      elsif ($id =~ /^uni\|/)           { $db = "UniProt" }
818      elsif ($id =~ /^tigr\|/)          { $db = "TIGR" }      elsif ($id =~ /^tigr\|/)          { $db = "TIGR" }
# Line 717  Line 821 
821      elsif ($id =~ /^tr\|/)                          { $db = "TrEMBL" }      elsif ($id =~ /^tr\|/)                          { $db = "TrEMBL" }
822      elsif ($id =~ /^eric\|/)          { $db = "ASAP" }      elsif ($id =~ /^eric\|/)          { $db = "ASAP" }
823      elsif ($id =~ /^img\|/)           { $db = "JGI" }      elsif ($id =~ /^img\|/)           { $db = "JGI" }
824        elsif ($id =~ /^pdb\|/)           { $db = "PDB" }
825        elsif ($id =~ /^img\|/)           { $db = "IMG" }
826        elsif ($id =~ /^cmr\|/)           { $db = "CMR" }
827        elsif ($id =~ /^dbj\|/)           { $db = "DBJ" }
828    
829      return ($db);      return ($db);
830    
# Line 774  Line 882 
882      my ($bound,$sim_cutoff,$coupling_cutoff) = (5000, 1.0e-10, 4);      my ($bound,$sim_cutoff,$coupling_cutoff) = (5000, 1.0e-10, 4);
883    
884      # get the fc data      # get the fc data
885      my @fc_data = $fig->coupling_and_evidence($fid,$bound,$sim_cutoff,$coupling_cutoff,1);      my @fc_data = $fig->coupling_and_evidence($fid,$bound,$sim_cutoff,$coupling_cutoff);
886    
887      # retrieve data      # retrieve data
888      my @rows = map { ($sc,$neigh) = @$_;      my @rows = map { ($sc,$neigh) = @$_;
# Line 919  Line 1027 
1027      my ($self,$gd,$fig) = @_;      my ($self,$gd,$fig) = @_;
1028    
1029      my $fid = $self->fig_id;      my $fid = $self->fig_id;
1030      my $dbmaster = DBMaster->new(-database =>'Ontology');      my $dbmaster = DBMaster->new(-database =>'Ontology',
1031                                    -host     => $WebConfig::DBHOST,
1032                                    -user     => $WebConfig::DBUSER,
1033                                    -password => $WebConfig::DBPWD);
1034    
1035      my $acc = $self->acc;      my $acc = $self->acc;
1036    
# Line 1058  Line 1169 
1169          my $id = $row->[0];          my $id = $row->[0];
1170          my $who = $row->[1];          my $who = $row->[1];
1171          my $assignment = $row->[2];          my $assignment = $row->[2];
1172          my $organism = $fig->org_of($id);          my $organism = "Data not available";
1173            if ($fig->org_of($id)){
1174                $organism = $fig->org_of($id);
1175            }
1176          my $single_domain = [];          my $single_domain = [];
1177          push(@$single_domain,$who);          push(@$single_domain,$who);
1178          push(@$single_domain,&HTML::set_prot_links($cgi,$id));          push(@$single_domain,"<a href='?page=Annotation&feature=$id'>$id</a>");
1179          push(@$single_domain,$organism);          push(@$single_domain,$organism);
1180          push(@$single_domain,$assignment);          push(@$single_domain,$assignment);
1181          push(@$all_domains,$single_domain);          push(@$all_domains,$single_domain);
# Line 1178  Line 1292 
1292      my $db_and_id = $thing->acc;      my $db_and_id = $thing->acc;
1293      my ($db,$id) = split("::",$db_and_id);      my ($db,$id) = split("::",$db_and_id);
1294    
1295      my $dbmaster = DBMaster->new(-database =>'Ontology');      my $dbmaster = DBMaster->new(-database =>'Ontology',
1296                                    -host     => $WebConfig::DBHOST,
1297                                    -user     => $WebConfig::DBUSER,
1298                                    -password => $WebConfig::DBPWD);
1299    
1300      my ($name_title,$name_value,$description_title,$description_value);      my ($name_title,$name_value,$description_title,$description_value);
1301      if($db eq "CDD"){      if($db eq "CDD"){
# Line 1255  Line 1372 
1372      my $link;      my $link;
1373      my $link_url;      my $link_url;
1374      if ($thing->class eq "CDD"){$link_url = "http://0-www.ncbi.nlm.nih.gov.library.vu.edu.au:80/Structure/cdd/cddsrv.cgi?uid=$link_id"}      if ($thing->class eq "CDD"){$link_url = "http://0-www.ncbi.nlm.nih.gov.library.vu.edu.au:80/Structure/cdd/cddsrv.cgi?uid=$link_id"}
1375      elsif($thing->class eq "PFAM"){$link_url = "http://www.sanger.ac.uk/cgi-bin/Pfam/getacc?$link_id"}      elsif($thing->class eq "PFAM"){$link_url = "http://pfam.sanger.ac.uk/family?acc=$link_id"}
1376      else{$link_url = "NO_URL"}      else{$link_url = "NO_URL"}
1377    
1378      $link = {"link_title" => $thing->acc,      $link = {"link_title" => $thing->acc,
# Line 1293  Line 1410 
1410          my $db_and_id = $thing->acc;          my $db_and_id = $thing->acc;
1411          my ($db,$id) = split("::",$db_and_id);          my ($db,$id) = split("::",$db_and_id);
1412    
1413          my $dbmaster = DBMaster->new(-database =>'Ontology');          my $dbmaster = DBMaster->new(-database =>'Ontology',
1414                                    -host     => $WebConfig::DBHOST,
1415                                    -user     => $WebConfig::DBUSER,
1416                                    -password => $WebConfig::DBPWD);
1417    
1418          my ($name_title,$name_value,$description_title,$description_value);          my ($name_title,$name_value,$description_title,$description_value);
1419          if($db eq "CDD"){          if($db eq "CDD"){
# Line 1312  Line 1432 
1432                  $description_value = $cdd_obj->description;                  $description_value = $cdd_obj->description;
1433              }              }
1434          }          }
1435            elsif($db =~ /PFAM/){
1436                my ($new_id) = ($id) =~ /(.*?)_/;
1437                my $pfam_objs = $dbmaster->pfam->get_objects( { 'id' => $new_id } );
1438                if(!scalar(@$pfam_objs)){
1439                    $name_title = "name";
1440                    $name_value = "not available";
1441                    $description_title = "description";
1442                    $description_value = "not available";
1443                }
1444                else{
1445                    my $pfam_obj = $pfam_objs->[0];
1446                    $name_title = "name";
1447                    $name_value = $pfam_obj->term;
1448                    #$description_title = "description";
1449                    #$description_value = $pfam_obj->description;
1450                }
1451            }
1452    
1453          my $location =  $thing->start . " - " . $thing->stop;          my $location =  $thing->start . " - " . $thing->stop;
1454    
# Line 1394  Line 1531 
1531      #color is      #color is
1532      my $color = "6";      my $color = "6";
1533    
 =pod=  
   
     if($cello_location){  
         my $cello_descriptions = [];  
         my $line_data =[];  
   
         my $line_config = { 'title' => 'Localization Evidence',  
                             'short_title' => 'CELLO',  
                             'hover_title' => 'Localization',  
                             'basepair_offset' => '1' };  
   
         my $description_cello_location = {"title" => 'Best Cello Location',  
                                           "value" => $cello_location};  
   
         push(@$cello_descriptions,$description_cello_location);  
   
         my $description_cello_score = {"title" => 'Cello Score',  
                                        "value" => $cello_score};  
   
         push(@$cello_descriptions,$description_cello_score);  
   
         my $element_hash = {  
             "title" => "CELLO",  
             "color"=> $color,  
             "start" => "1",  
             "end" =>  $length + 1,  
             "zlayer" => '1',  
             "description" => $cello_descriptions};  
   
         push(@$line_data,$element_hash);  
         $gd->add_line($line_data, $line_config);  
     }  
   
     $color = "2";  
     if($tmpred_score){  
         my $line_data =[];  
         my $line_config = { 'title' => 'Localization Evidence',  
                             'short_title' => 'Transmembrane',  
                             'basepair_offset' => '1' };  
   
         foreach my $tmpred (@tmpred_locations){  
             my $descriptions = [];  
             my ($begin,$end) =split("-",$tmpred);  
             my $description_tmpred_score = {"title" => 'TMPRED score',  
                              "value" => $tmpred_score};  
1534    
             push(@$descriptions,$description_tmpred_score);  
1535    
1536              my $element_hash = {  #    if($cello_location){
1537              "title" => "transmembrane location",  #       my $cello_descriptions = [];
1538              "start" => $begin + 1,  #       my $line_data =[];
1539              "end" =>  $end + 1,  #
1540              "color"=> $color,  #       my $line_config = { 'title' => 'Localization Evidence',
1541              "zlayer" => '5',  #                           'short_title' => 'CELLO',
1542              "type" => 'box',  #                            'hover_title' => 'Localization',
1543              "description" => $descriptions};  #                           'basepair_offset' => '1' };
1544    #
1545              push(@$line_data,$element_hash);  #       my $description_cello_location = {"title" => 'Best Cello Location',
1546    #                                         "value" => $cello_location};
1547    #
1548    #       push(@$cello_descriptions,$description_cello_location);
1549    #
1550    #       my $description_cello_score = {"title" => 'Cello Score',
1551    #                                      "value" => $cello_score};
1552    #
1553    #       push(@$cello_descriptions,$description_cello_score);
1554    #
1555    #       my $element_hash = {
1556    #           "title" => "CELLO",
1557    #           "color"=> $color,
1558    #           "start" => "1",
1559    #           "end" =>  $length + 1,
1560    #           "zlayer" => '1',
1561    #           "description" => $cello_descriptions};
1562    #
1563    #       push(@$line_data,$element_hash);
1564    #       $gd->add_line($line_data, $line_config);
1565    #    }
1566    #
1567    #    $color = "2";
1568    #    if($tmpred_score){
1569    #       my $line_data =[];
1570    #       my $line_config = { 'title' => 'Localization Evidence',
1571    #                           'short_title' => 'Transmembrane',
1572    #                           'basepair_offset' => '1' };
1573    #
1574    #       foreach my $tmpred (@tmpred_locations){
1575    #           my $descriptions = [];
1576    #           my ($begin,$end) =split("-",$tmpred);
1577    #           my $description_tmpred_score = {"title" => 'TMPRED score',
1578    #                            "value" => $tmpred_score};
1579    #
1580    #           push(@$descriptions,$description_tmpred_score);
1581    #
1582    #           my $element_hash = {
1583    #           "title" => "transmembrane location",
1584    #           "start" => $begin + 1,
1585    #           "end" =>  $end + 1,
1586    #           "color"=> $color,
1587    #           "zlayer" => '5',
1588    #           "type" => 'box',
1589    #           "description" => $descriptions};
1590    #
1591    #           push(@$line_data,$element_hash);
1592    #
1593    #       }
1594    #       $gd->add_line($line_data, $line_config);
1595    #    }
1596    
         }  
         $gd->add_line($line_data, $line_config);  
     }  
 =cut  
1597    
1598      if((scalar(@phobius_tm_locations) > 0) || $phobius_signal_location){      if((scalar(@phobius_tm_locations) > 0) || $phobius_signal_location){
1599          my $line_data =[];          my $line_data =[];
# Line 1508  Line 1645 
1645          $gd->add_line($line_data, $line_config);          $gd->add_line($line_data, $line_config);
1646      }      }
1647    
 =head3  
     $color = "1";  
     if($signal_peptide_score){  
         my $line_data = [];  
         my $descriptions = [];  
   
         my $line_config = { 'title' => 'Localization Evidence',  
                             'short_title' => 'SignalP',  
                             'hover_title' => 'Localization',  
                             'basepair_offset' => '1' };  
   
         my $description_signal_peptide_score = {"title" => 'signal peptide score',  
                                                 "value" => $signal_peptide_score};  
1648    
1649          push(@$descriptions,$description_signal_peptide_score);  #    $color = "1";
1650    #    if($signal_peptide_score){
1651          my $description_cleavage_prob = {"title" => 'cleavage site probability',  #       my $line_data = [];
1652                                           "value" => $cleavage_prob};  #       my $descriptions = [];
1653    #
1654          push(@$descriptions,$description_cleavage_prob);  #       my $line_config = { 'title' => 'Localization Evidence',
1655    #                           'short_title' => 'SignalP',
1656          my $element_hash = {  #                            'hover_title' => 'Localization',
1657              "title" => "SignalP",  #                           'basepair_offset' => '1' };
1658              "start" => $cleavage_loc_begin - 2,  #
1659              "end" =>  $cleavage_loc_end + 1,  #       my $description_signal_peptide_score = {"title" => 'signal peptide score',
1660              "type" => 'bigbox',  #                                               "value" => $signal_peptide_score};
1661              "color"=> $color,  #
1662              "zlayer" => '10',  #       push(@$descriptions,$description_signal_peptide_score);
1663              "description" => $descriptions};  #
1664    #       my $description_cleavage_prob = {"title" => 'cleavage site probability',
1665    #                                        "value" => $cleavage_prob};
1666    #
1667    #       push(@$descriptions,$description_cleavage_prob);
1668    #
1669    #       my $element_hash = {
1670    #           "title" => "SignalP",
1671    #           "start" => $cleavage_loc_begin - 2,
1672    #           "end" =>  $cleavage_loc_end + 1,
1673    #           "type" => 'bigbox',
1674    #           "color"=> $color,
1675    #           "zlayer" => '10',
1676    #           "description" => $descriptions};
1677    #
1678    #       push(@$line_data,$element_hash);
1679    #       $gd->add_line($line_data, $line_config);
1680    #    }
1681    
         push(@$line_data,$element_hash);  
         $gd->add_line($line_data, $line_config);  
     }  
 =cut  
1682    
1683      return ($gd);      return ($gd);
1684    
# Line 1637  Line 1774 
1774  =cut  =cut
1775    
1776  sub display {  sub display {
1777      my ($self,$gd,$array,$fig) = @_;      my ($self,$gd,$thing,$fig,$base_start,$in_subs,$cgi) = @_;
     #my $fig = new FIG;  
   
     my @ids;  
     foreach my $thing(@$array){  
         next if ($thing->class ne "SIM");  
         push (@ids, $thing->acc);  
     }  
   
     my %in_subs  = $fig->subsystems_for_pegs(\@ids);  
   
     foreach my $thing (@$array){  
         if ($thing->class eq "SIM"){  
1778    
1779        # declare variables
1780        my $window_size = $gd->window_size;
1781              my $peg = $thing->acc;              my $peg = $thing->acc;
1782              my $query = $thing->query;      my $query_id = $thing->query;
   
1783              my $organism = $thing->organism;              my $organism = $thing->organism;
1784        my $abbrev_name = $fig->abbrev($organism);
1785        if (!$organism){
1786          $organism = $peg;
1787          $abbrev_name = $peg;
1788        }
1789              my $genome = $fig->genome_of($peg);              my $genome = $fig->genome_of($peg);
1790              my ($org_tax) = ($genome) =~ /(.*)\./;              my ($org_tax) = ($genome) =~ /(.*)\./;
1791              my $function = $thing->function;              my $function = $thing->function;
1792              my $abbrev_name = $fig->abbrev($organism);      my $query_start = $thing->qstart;
1793              my $align_start = $thing->qstart;      my $query_stop = $thing->qstop;
             my $align_stop = $thing->qstop;  
1794              my $hit_start = $thing->hstart;              my $hit_start = $thing->hstart;
1795              my $hit_stop = $thing->hstop;              my $hit_stop = $thing->hstop;
1796        my $ln_query = $thing->qlength;
1797        my $ln_hit = $thing->hlength;
1798    #    my $query_color = match_color($query_start, $query_stop, $ln_query, 1);
1799    #    my $hit_color = match_color($hit_start, $hit_stop, $ln_hit, 1);
1800        my $query_color = match_color($query_start, $query_stop, abs($query_stop-$query_start), 1);
1801        my $hit_color = match_color($hit_start, $hit_stop, abs($query_stop-$query_start), 1);
1802    
1803              my $tax_link = "http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=" . $org_tax;              my $tax_link = "http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=" . $org_tax;
1804    
1805        # hit sequence title
1806              my $line_config = { 'title' => "$organism [$org_tax]",              my $line_config = { 'title' => "$organism [$org_tax]",
1807                                  'short_title' => "$abbrev_name",                                  'short_title' => "$abbrev_name",
1808                                  'title_link' => '$tax_link',                                  'title_link' => '$tax_link',
1809                                  'basepair_offset' => '0'                          'basepair_offset' => '0',
1810                            'no_middle_line' => '1'
1811                                  };                                  };
1812    
1813        # query sequence title
1814        my $replace_id = $peg;
1815        $replace_id =~ s/\|/_/ig;
1816        my $anchor_name = "anchor_". $replace_id;
1817        my $query_config = { 'title' => "Query",
1818                             'short_title' => "Query",
1819                             'title_link' => "changeSimsLocation('$replace_id', 1)",
1820                             'basepair_offset' => '0',
1821                             'no_middle_line' => '1'
1822                             };
1823              my $line_data = [];              my $line_data = [];
1824        my $query_data = [];
1825    
1826              my $element_hash;              my $element_hash;
1827              my $links_list = [];      my $hit_links_list = [];
1828              my $descriptions = [];      my $hit_descriptions = [];
1829        my $query_descriptions = [];
1830              # get subsystem information  
1831              my $url_link = "?page=Annotation&feature=".$peg;      # get sequence information
1832              my $link;      # evidence link
1833              $link = {"link_title" => $peg,      my $evidence_link;
1834                       "link" => $url_link};      if ($peg =~ /^fig\|/){
1835              push(@$links_list,$link);        $evidence_link = "?page=Annotation&feature=".$peg;
1836        }
1837        else{
1838          my $db = &Observation::get_database($peg);
1839          my ($link_id) = ($peg) =~ /\|(.*)/;
1840          $evidence_link = &HTML::alias_url($link_id, $db);
1841          #print STDERR "LINK: $db    $evidence_link";
1842        }
1843        my $link = {"link_title" => $peg,
1844                    "link" => $evidence_link};
1845        push(@$hit_links_list,$link) if ($evidence_link);
1846    
1847              #my @subsystems = $fig->peg_to_subsystems($peg);      # subsystem link
1848              my @subs = @{$in_subs{$peg}} if (defined $in_subs{$peg});      my $subs = $in_subs->{$peg} if (defined $in_subs->{$peg});
1849              my @subsystems;              my @subsystems;
1850        foreach my $array (@$subs){
             foreach my $array (@subs){  
1851                  my $subsystem = $$array[0];                  my $subsystem = $$array[0];
1852                  push(@subsystems,$subsystem);                  push(@subsystems,$subsystem);
1853                  my $link;          my $link = {"link" => "?page=Subsystems&subsystem=$subsystem",
                 $link = {"link" => "?page=Subsystems&subsystem=$subsystem",  
1854                           "link_title" => $subsystem};                           "link_title" => $subsystem};
1855                  push(@$links_list,$link);          push(@$hit_links_list,$link);
1856              }              }
1857    
1858        # blast alignment
1859              $link = {"link_title" => "view blast alignment",              $link = {"link_title" => "view blast alignment",
1860                       "link" => "$FIG_Config::cgi_url/seedviewer.cgi?page=ToolResult&tool=bl2seq&peg1=$query&peg2=$peg"};               "link" => "$FIG_Config::cgi_url/seedviewer.cgi?page=ToolResult&tool=bl2seq&peg1=$query_id&peg2=$peg"};
1861              push (@$links_list,$link);      push (@$hit_links_list,$link) if ($peg =~ /^fig\|/);
1862    
1863        # description data
1864              my $description_function;              my $description_function;
1865              $description_function = {"title" => "function",              $description_function = {"title" => "function",
1866                                       "value" => $function};                                       "value" => $function};
1867              push(@$descriptions,$description_function);      push(@$hit_descriptions,$description_function);
1868    
1869              my ($description_ss, $ss_string);      # subsystem description
1870              $ss_string = join (",", @subsystems);      my $ss_string = join (",", @subsystems);
1871              $description_ss = {"title" => "subsystems",      $ss_string =~ s/_/ /ig;
1872        my $description_ss = {"title" => "subsystems",
1873                                 "value" => $ss_string};                                 "value" => $ss_string};
1874              push(@$descriptions,$description_ss);      push(@$hit_descriptions,$description_ss);
1875    
1876        # location description
1877        # hit
1878              my $description_loc;              my $description_loc;
1879              $description_loc = {"title" => "location start",      $description_loc = {"title" => "Hit Location",
1880                                  "value" => $hit_start};                          "value" => $hit_start . " - " . $hit_stop};
1881              push(@$descriptions, $description_loc);      push(@$hit_descriptions, $description_loc);
1882    
1883              $description_loc = {"title" => "location stop",      $description_loc = {"title" => "Sequence Length",
1884                                  "value" => $hit_stop};                          "value" => $ln_hit};
1885              push(@$descriptions, $description_loc);      push(@$hit_descriptions, $description_loc);
1886    
1887        # query
1888        $description_loc = {"title" => "Hit Location",
1889                            "value" => $query_start . " - " . $query_stop};
1890        push(@$query_descriptions, $description_loc);
1891    
1892        $description_loc = {"title" => "Sequence Length",
1893                            "value" => $ln_query};
1894        push(@$query_descriptions, $description_loc);
1895    
1896    
1897    
1898        # evalue score description
1899              my $evalue = $thing->evalue;              my $evalue = $thing->evalue;
1900              while ($evalue =~ /-0/)              while ($evalue =~ /-0/)
1901              {              {
# Line 1731  Line 1905 
1905              }              }
1906    
1907              my $color = &color($evalue);              my $color = &color($evalue);
   
1908              my $description_eval = {"title" => "E-Value",              my $description_eval = {"title" => "E-Value",
1909                                      "value" => $evalue};                                      "value" => $evalue};
1910              push(@$descriptions, $description_eval);      push(@$hit_descriptions, $description_eval);
1911        push(@$query_descriptions, $description_eval);
1912    
1913              my $identity = $self->identity;              my $identity = $self->identity;
1914              my $description_identity = {"title" => "Identity",              my $description_identity = {"title" => "Identity",
1915                                          "value" => $identity};                                          "value" => $identity};
1916              push(@$descriptions, $description_identity);      push(@$hit_descriptions, $description_identity);
1917        push(@$query_descriptions, $description_identity);
1918    
1919    
1920        my $number = $base_start + ($query_start-$hit_start);
1921        #print STDERR "START: $number";
1922        $element_hash = {
1923            "title" => $query_id,
1924            "start" => $base_start,
1925            "end" => $base_start+$ln_query,
1926            "type"=> 'box',
1927            "color"=> $color,
1928            "zlayer" => "2",
1929            "links_list" => $query_links_list,
1930            "description" => $query_descriptions
1931            };
1932        push(@$query_data,$element_hash);
1933    
1934        $element_hash = {
1935            "title" => $query_id . ': HIT AREA',
1936            "start" => $base_start + $query_start,
1937            "end" =>  $base_start + $query_stop,
1938            "type"=> 'smallbox',
1939            "color"=> $query_color,
1940            "zlayer" => "3",
1941            "links_list" => $query_links_list,
1942            "description" => $query_descriptions
1943            };
1944        push(@$query_data,$element_hash);
1945    
1946        $gd->add_line($query_data, $query_config);
1947    
1948    
1949              $element_hash = {              $element_hash = {
1950                  "title" => $peg,                  "title" => $peg,
1951                  "start" => $align_start,                  "start" => $base_start + ($query_start-$hit_start),
1952                  "end" =>  $align_stop,                  "end" => $base_start + (($query_start-$hit_start)+$ln_hit),
1953                  "type"=> 'box',                  "type"=> 'box',
1954                  "color"=> $color,                  "color"=> $color,
1955                  "zlayer" => "2",                  "zlayer" => "2",
1956                  "links_list" => $links_list,                  "links_list" => $hit_links_list,
1957                  "description" => $descriptions                  "description" => $hit_descriptions
1958                    };
1959        push(@$line_data,$element_hash);
1960    
1961        $element_hash = {
1962            "title" => $peg . ': HIT AREA',
1963            "start" => $base_start + $query_start,
1964            "end" =>  $base_start + $query_stop,
1965            "type"=> 'smallbox',
1966            "color"=> $hit_color,
1967            "zlayer" => "3",
1968            "links_list" => $hit_links_list,
1969            "description" => $hit_descriptions
1970                  };                  };
1971              push(@$line_data,$element_hash);              push(@$line_data,$element_hash);
1972    
1973              $gd->add_line($line_data, $line_config);              $gd->add_line($line_data, $line_config);
1974          }  
1975      }      my $breaker = [];
1976        my $breaker_hash = {};
1977        my $breaker_config = { 'no_middle_line' => "1" };
1978    
1979        push (@$breaker, $breaker_hash);
1980        $gd->add_line($breaker, $breaker_config);
1981    
1982      return ($gd);      return ($gd);
1983  }  }
1984    
# Line 1800  Line 2024 
2024              }              }
2025          }          }
2026    
2027          my $dbmaster = DBMaster->new(-database =>'Ontology');          my $dbmaster = DBMaster->new(-database =>'Ontology',
2028                                    -host     => $WebConfig::DBHOST,
2029                                    -user     => $WebConfig::DBUSER,
2030                                    -password => $WebConfig::DBPWD);
2031          my ($name_value,$description_value);          my ($name_value,$description_value);
2032    
2033          if($db eq "CDD"){          if($db eq "CDD"){
# Line 1837  Line 2064 
2064          my $link;          my $link;
2065          my $link_url;          my $link_url;
2066          if ($db eq "CDD"){$link_url = "http://0-www.ncbi.nlm.nih.gov.library.vu.edu.au:80/Structure/cdd/cddsrv.cgi?uid=$link_id"}          if ($db eq "CDD"){$link_url = "http://0-www.ncbi.nlm.nih.gov.library.vu.edu.au:80/Structure/cdd/cddsrv.cgi?uid=$link_id"}
2067          elsif($db eq "PFAM"){$link_url = "http://www.sanger.ac.uk/cgi-bin/Pfam/getacc?$link_id"}          elsif($db eq "PFAM"){$link_url = "http://pfam.sanger.ac.uk/family?acc=$link_id"}
2068          else{$link_url = "NO_URL"}          else{$link_url = "NO_URL"}
2069    
2070          $link = {"link_title" => $name_value,          $link = {"link_title" => $name_value,
# Line 1881  Line 2108 
2108  =cut  =cut
2109    
2110  sub display_table {  sub display_table {
2111      my ($self,$dataset, $scroll_list, $query_fid,$lineages,$fig) = @_;      my ($self,$dataset, $show_columns, $query_fid, $fig, $application, $cgi) = @_;
2112        my ($count, $data, $content, %box_column, $subsystems_column, $evidence_column, %e_identical, $function_color, @ids);
2113    
2114      my $data = [];      my $scroll_list;
2115      my $count = 0;      foreach my $col (@$show_columns){
2116      my $content;          push (@$scroll_list, $col->{key});
2117      #my $fig = new FIG;      }
2118      my $cgi = new CGI;  
2119      my @ids;      push (@ids, $query_fid);
2120      foreach my $thing (@$dataset) {      foreach my $thing (@$dataset) {
2121          next if ($thing->class ne "SIM");          next if ($thing->class ne "SIM");
2122          push (@ids, $thing->acc);          push (@ids, $thing->acc);
2123      }      }
2124    
2125      my (%box_column, %subsystems_column, %evidence_column, %e_identical);      $lineages = $fig->taxonomy_list() if (grep /lineage/, @$scroll_list);
2126      my @attributes = $fig->get_attributes(\@ids);      my @attributes = $fig->get_attributes(\@ids) if ( (grep /evidence/, @$scroll_list) || (grep /(pfam|mw)/, @$scroll_list) );
2127    
2128      # get the column for the subsystems      # get the column for the subsystems
2129      %subsystems_column = &get_subsystems_column(\@ids,$fig);      $subsystems_column = &get_subsystems_column(\@ids,$fig,$cgi,'hash');
2130    
2131      # get the column for the evidence codes      # get the column for the evidence codes
2132      %evidence_column = &get_evidence_column(\@ids, \@attributes,$fig);      $evidence_column = &get_evidence_column(\@ids, \@attributes, $fig, $cgi, 'hash');
2133    
2134      # get the column for pfam_domain      # get the column for pfam_domain
2135      %pfam_column = &get_pfam_column(\@ids, \@attributes,$fig);      $pfam_column = &get_attrb_column(\@ids, \@attributes, $fig, $cgi, 'pfam', 'PFAM', 'hash') if (grep /^pfam$/, @$scroll_list);
2136    
2137        # get the column for molecular weight
2138        $mw_column = &get_attrb_column(\@ids, \@attributes, $fig, $cgi, 'mw', 'molecular_weight', 'hash') if (grep /^mw$/, @$scroll_list);
2139    
2140        # get the column for organism's habitat
2141        my $habitat_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'habitat', 'Habitat', 'hash') if (grep /^habitat$/, @$scroll_list);
2142    
2143        # get the column for organism's temperature optimum
2144        my $temperature_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'temperature', 'Optimal_Temperature', 'hash') if (grep /^temperature$/, @$scroll_list);
2145    
2146        # get the column for organism's temperature range
2147        my $temperature_range_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'temp_range', 'Temperature_Range', 'hash') if (grep /^temp_range$/, @$scroll_list);
2148    
2149        # get the column for organism's oxygen requirement
2150        my $oxygen_req_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'oxygen', 'Oxygen_Requirement', 'hash') if (grep /^oxygen$/, @$scroll_list);
2151    
2152        # get the column for organism's pathogenicity
2153        my $pathogenic_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'pathogenic', 'Pathogenic', 'hash') if (grep /^pathogenic$/, @$scroll_list);
2154    
2155        # get the column for organism's pathogenicity host
2156        my $pathogenic_in_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'pathogenic_in', 'Pathogenic_In', 'hash') if (grep /^pathogenic_in$/, @$scroll_list);
2157    
2158        # get the column for organism's salinity
2159        my $salinity_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'salinity', 'Salinity', 'hash') if (grep /^salinity$/, @$scroll_list);
2160    
2161        # get the column for organism's motility
2162        my $motility_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'motility', 'Motility', 'hash') if (grep /^motility$/, @$scroll_list);
2163    
2164        # get the column for organism's gram stain
2165        my $gram_stain_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'gram_stain', 'Gram_Stain', 'hash') if (grep /^gram_stain$/, @$scroll_list);
2166    
2167        # get the column for organism's endospores
2168        my $endospores_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'endospores', 'Endospores', 'hash') if (grep /^endospores$/, @$scroll_list);
2169    
2170        # get the column for organism's shape
2171        my $shape_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'shape', 'Shape', 'hash') if (grep /^shape$/, @$scroll_list);
2172    
2173        # get the column for organism's disease
2174        my $disease_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'disease', 'Disease', 'hash') if (grep /^disease$/, @$scroll_list);
2175    
2176        # get the column for organism's disease
2177        my $gc_content_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'gc_content', 'GC_Content', 'hash') if (grep /^gc_content$/, @$scroll_list);
2178    
2179        # get the column for transmembrane domains
2180        my $transmembrane_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'transmembrane', 'Phobius::transmembrane', 'hash') if (grep /^transmembrane$/, @$scroll_list);
2181    
2182        # get the column for similar to human
2183        my $similar_to_human_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'similar_to_human', 'similar_to_human', 'hash') if (grep /^similar_to_human$/, @$scroll_list);
2184    
2185        # get the column for signal peptide
2186        my $signal_peptide_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'signal_peptide', 'Phobius::signal', 'hash') if (grep /^signal_peptide$/, @$scroll_list);
2187    
2188        # get the column for transmembrane domains
2189        my $isoelectric_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'isoelectric', 'isoelectric_point', 'hash') if (grep /^isoelectric$/, @$scroll_list);
2190    
2191        # get the column for conserved neighborhood
2192        my $cons_neigh_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'conserved_neighborhood', undef, 'hash') if (grep /^conserved_neighborhood$/, @$scroll_list);
2193    
2194        # get the column for cellular location
2195        my $cell_location_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'cellular_location', 'PSORT::', 'hash') if (grep /^isoelectric$/, @$scroll_list);
2196    
2197        # get the aliases
2198        my $alias_col;
2199        if ( (grep /asap_id/, @$scroll_list) || (grep /ncbi_id/, @$scroll_list) ||
2200             (grep /refseq_id/, @$scroll_list) || (grep /swissprot_id/, @$scroll_list) ||
2201             (grep /uniprot_id/, @$scroll_list) || (grep /tigr_id/, @$scroll_list) ||
2202             (grep /kegg_id/, @$scroll_list) || (grep /pir_id/, @$scroll_list) ||
2203             (grep /trembl_id/, @$scroll_list) || (grep /jgi_id/, @$scroll_list) ) {
2204            $alias_col = &get_db_aliases(\@ids,$fig,'all',$cgi,'hash');
2205        }
2206    
2207        # get the colors for the function cell
2208        my $functions = $fig->function_of_bulk(\@ids,1);
2209        $functional_color = &get_function_color_cell($functions, $fig);
2210        my $query_function = $fig->function_of($query_fid);
2211    
2212      my %e_identical = &get_essentially_identical($query_fid,$dataset,$fig);      my %e_identical = &get_essentially_identical($query_fid,$dataset,$fig);
     my $alias_col = &get_aliases(\@ids,$fig);  
     #my $alias_col = {};  
2213    
2214      foreach my $thing (@$dataset) {      my $figfam_data = &FIG::get_figfams_data();
2215        my $figfams = new FFs($figfam_data);
2216        my $same_genome_flag = 0;
2217    
2218        my $func_color_offset=0;
2219        unshift(@$dataset, $query_fid);
2220        for (my $thing_count=0;$thing_count<scalar @$dataset;$thing_count++){
2221    #    foreach my $thing ( @$dataset){
2222            my $thing = $dataset->[$thing_count];
2223            my $next_thing = $dataset->[$thing_count+1] if (defined $dataset->[$thing_count+1]);
2224            my ($id, $taxid, $iden, $ln1,$ln2,$b1,$b2,$e1,$e2,$d1,$d2,$color1,$color2,$reg1,$reg2, $next_org);
2225            if ($thing eq $query_fid){
2226                $id = $thing;
2227                $taxid   = $fig->genome_of($id);
2228                $organism = $fig->genus_species($taxid);
2229                $current_function = $fig->function_of($id);
2230            }
2231            else{
2232          next if ($thing->class ne "SIM");          next if ($thing->class ne "SIM");
2233    
2234                $id      = $thing->acc;
2235                $evalue  = $thing->evalue;
2236                $taxid   = $fig->genome_of($id);
2237                $iden    = $thing->identity;
2238                $organism= $thing->organism;
2239                $ln1     = $thing->qlength;
2240                $ln2     = $thing->hlength;
2241                $b1      = $thing->qstart;
2242                $e1      = $thing->qstop;
2243                $b2      = $thing->hstart;
2244                $e2      = $thing->hstop;
2245                $d1      = abs($e1 - $b1) + 1;
2246                $d2      = abs($e2 - $b2) + 1;
2247                $color1  = match_color( $b1, $e1, $ln1 );
2248                $color2  = match_color( $b2, $e2, $ln2 );
2249                $reg1    = {'data'=> "$b1-$e1 (<b>$d1/$ln1</b>)", 'highlight' => $color1};
2250                $reg2    = {'data'=> "$b2-$e2 (<b>$d2/$ln2</b>)", 'highlight' => $color2};
2251                $current_function = $thing->function;
2252                $next_org = $next_thing->organism if (defined $next_thing);
2253            }
2254    
2255          my $single_domain = [];          my $single_domain = [];
2256          $count++;          $count++;
2257    
2258          my $id      = $thing->acc;          # organisms cell
2259          my $taxid   = $fig->genome_of($id);          my ($org, $org_color) = $fig->org_and_color_of($id);
         my $iden    = $thing->identity;  
         my $ln1     = $thing->qlength;  
         my $ln2     = $thing->hlength;  
         my $b1      = $thing->qstart;  
         my $e1      = $thing->qstop;  
         my $b2      = $thing->hstart;  
         my $e2      = $thing->hstop;  
         my $d1      = abs($e1 - $b1) + 1;  
         my $d2      = abs($e2 - $b2) + 1;  
         my $reg1    = "$b1-$e1 (<b>$d1/$ln1</b>)";  
         my $reg2    = "$b2-$e2 (<b>$d2/$ln2</b>)";  
2260    
2261          # checkbox column          my $org_cell;
2262            if ( ($next_org ne $organism) && ($same_genome_flag == 0) ){
2263                $org_cell = { 'data' =>  $organism, 'highlight' => $org_color};
2264            }
2265            elsif ($next_org eq $organism){
2266                $org_cell = { 'data' =>  "<b>" . $organism . "</b>", 'highlight' => $org_color};
2267                $same_genome_flag = 1;
2268            }
2269            elsif ($same_genome_flag == 1){
2270                $org_cell = { 'data' =>  "<b>" . $organism . "</b>", 'highlight' => $org_color};
2271                $same_genome_flag = 0;
2272            }
2273    
2274            # checkbox cell
2275            my ($box_cell,$tax, $radio_cell);
2276          my $field_name = "tables_" . $id;          my $field_name = "tables_" . $id;
2277          my $pair_name = "visual_" . $id;          my $pair_name = "visual_" . $id;
2278          my $box_col = qq(<input type=checkbox name=seq value="$id" id="$field_name" onClick="VisualCheckPair('$field_name', '$pair_name');">);          my $cell_name = "cell_". $id;
2279          my ($tax) = ($id) =~ /fig\|(.*?)\./;          my $replace_id = $id;
2280            $replace_id =~ s/\|/_/ig;
2281            my $white = '#ffffff';
2282            $white = '#999966' if ($id eq $query_fid);
2283            $org_color = '#999966' if ($id eq $query_fid);
2284            my $anchor_name = "anchor_". $replace_id;
2285            my $checked = "";
2286            #$checked = "checked" if ($id eq $query_fid);
2287            if ($id =~ /^fig\|/){
2288              my $box = qq~<a name="$anchor_name"></a><input type="checkbox" name="seq" value="$id" id="$field_name" onClick="VisualCheckPair('$field_name', '$pair_name','$cell_name');" $checked>~;
2289              $box_cell = { 'data'=>$box, 'highlight'=>$org_color};
2290              $tax = $fig->genome_of($id);
2291            }
2292            else{
2293              my $box = qq(<a name="$anchor_name"></a>);
2294              $box_cell = { 'data'=>$box, 'highlight'=>$org_color};
2295            }
2296    
2297            # create the radio cell for any sequence, not just fig ids
2298            my $radio = qq(<input type="radio" name="function_select" value="$current_function" id="$field_name" onClick="clearText('new_text_function')">);
2299            $radio_cell = { 'data'=>$radio, 'highlight'=>$white};
2300    
2301          # get the linked fig id          # get the linked fig id
2302          my $fig_col;          my $anchor_link = "graph_" . $replace_id;
2303          if (defined ($e_identical{$id})){          my $fig_data =  "<table><tr><td><a href='?page=Annotation&feature=$id'>$id</a></td>" . "&nbsp;" x 2;
2304              $fig_col = "<a href='?page=Annotation&feature=$id'>$id</a>";#&HTML::set_prot_links($cgi,$id) . "*";          $fig_data .= qq(<td><img height='10px' width='20px' src='$FIG_Config::cgi_url/Html/anchor_alignment.png' alt='View Graphic View of Alignment' onClick='changeSimsLocation("$anchor_link", 0)'/></td></tr></table>);
2305          }          my $fig_col = {'data'=> $fig_data,
2306          else{                         'highlight'=>$white};
2307              $fig_col = "<a href='?page=Annotation&feature=$id'>$id</a>";#&HTML::set_prot_links($cgi,$id);  
2308          }          $replace_id = $peg;
2309            $replace_id =~ s/\|/_/ig;
2310          push (@$single_domain, $box_col, $fig_col, $thing->evalue,          $anchor_name = "anchor_". $replace_id;
2311                "$iden\%", $reg1, $reg2, $thing->organism, $thing->function);   # permanent columns          my $query_config = { 'title' => "Query",
2312                                 'short_title' => "Query",
2313          foreach my $col (sort keys %$scroll_list){                               'title_link' => "changeSimsLocation('$replace_id')",
2314              if ($col =~ /associated_subsystem/)          {push(@$single_domain,$subsystems_column{$id});}                               'basepair_offset' => '0'
2315              elsif ($col =~ /evidence/)                   {push(@$single_domain,$evidence_column{$id});}                               };
2316              elsif ($col =~ /pfam_domains/)               {push(@$single_domain,$pfam_column{$id});}  
2317              elsif ($col =~ /ncbi_id/)                    {push(@$single_domain,$alias_col->{$id}->{"NCBI"});}          # function cell
2318              elsif ($col =~ /refseq_id/)                  {push(@$single_domain,$alias_col->{$id}->{"RefSeq"});}          my $function_cell_colors = {0=>"#ffffff", 1=>"#eeccaa", 2=>"#ffaaaa",
2319              elsif ($col =~ /swissprot_id/)               {push(@$single_domain,$alias_col->{$id}->{"SwissProt"});}                                      3=>"#ffcc66", 4=>"#ffff00", 5=>"#aaffaa",
2320              elsif ($col =~ /uniprot_id/)                 {push(@$single_domain,$alias_col->{$id}->{"UniProt"});}                                      6=>"#bbbbff", 7=>"#ffaaff", 8=>"#dddddd"};
2321              elsif ($col =~ /tigr_id/)                    {push(@$single_domain,$alias_col->{$id}->{"TIGR"});}  
2322              elsif ($col =~ /pir_id/)                     {push(@$single_domain,$alias_col->{$id}->{"PIR"});}          my $function_color;
2323              elsif ($col =~ /kegg_id/)                    {push(@$single_domain,$alias_col->{$id}->{"KEGG"});}          if ( (defined($functional_color->{$query_function})) && ($functional_color->{$query_function} == 1) ){
2324              #elsif ($col =~ /trembl_id/)                  {push(@$single_domain,$alias_col->{$id}->{"TrEMBL"});}              $function_color = $function_cell_colors->{ $functional_color->{$current_function} - $func_color_offset};
2325              elsif ($col =~ /asap_id/)                    {push(@$single_domain,$alias_col->{$id}->{"ASAP"});}          }
2326              elsif ($col =~ /jgi_id/)                     {push(@$single_domain,$alias_col->{$id}->{"JGI"});}          else{
2327              #elsif ($col =~ /taxonomy/)                   {push(@$single_domain,$lineages->{$tax});}              $function_color = $function_cell_colors->{ $functional_color->{$current_function}};
2328              elsif ($col =~ /taxonomy/)                   {push(@$single_domain,$fig->taxonomy_of($taxid));}          }
2329            my $function_cell;
2330            if ($current_function){
2331              if ($current_function eq $query_function){
2332                $function_cell = {'data'=>$current_function, 'highlight'=>$function_cell_colors->{0}};
2333                $func_color_offset=1;
2334              }
2335              else{
2336                  $function_cell = {'data'=>$current_function,'highlight' => $function_color};
2337              }
2338            }
2339            else{
2340              $function_cell = {'data'=>$current_function,'highlight' => "#dddddd"};
2341            }
2342    
2343            if ($id eq $query_fid){
2344                push (@$single_domain, $box_cell, {'data'=>qq~<i>Query Sequence: </i>~  . qq~<b>$id</b>~ , 'highlight'=>$white}, {'data'=> 'n/a', 'highlight'=>$white},
2345                      {'data'=>'n/a', 'highlight'=>$white}, {'data'=>'n/a', 'highlight'=>$white}, {'data'=>'n/a', 'highlight'=>$white},
2346                      {'data' =>  $organism, 'highlight'=> $white}, {'data'=>$current_function, 'highlight'=>$white},
2347                      {'data'=>$subsystems_column->{$id},'highlight'=>$white},
2348                      {'data'=>$evidence_column->{$id},'highlight'=>$white});  # permanent columns
2349            }
2350            else{
2351                push (@$single_domain, $box_cell, $fig_col, {'data'=> $evalue, 'highlight'=>"#ffffff"},
2352                      {'data'=>"$iden\%", 'highlight'=>"#ffffff"}, $reg1, $reg2, $org_cell, $function_cell,
2353                      {'data'=>$subsystems_column->{$id},'highlight'=>"#ffffff"},
2354                      {'data'=>$evidence_column->{$id},'highlight'=>"#ffffff"});  # permanent columns
2355    
2356            }
2357    
2358            if ( ( $application->session->user) ){
2359                my $user = $application->session->user;
2360                if ($user && $user->has_right(undef, 'annotate', 'genome', $fig->genome_of($id))) {
2361                    push (@$single_domain,$radio_cell);
2362                }
2363            }
2364    
2365            my ($ff) = $figfams->families_containing_peg($id);
2366    
2367            foreach my $col (@$scroll_list){
2368                if ($id eq $query_fid) { $highlight_color = "#999966"; }
2369                else { $highlight_color = "#ffffff"; }
2370    
2371                if ($col =~ /pfam/)                       {push(@$single_domain,{'data'=>$pfam_column->{$id},'highlight'=>$highlight_color});}
2372                elsif ($col =~ /mw/)                         {push(@$single_domain,{'data'=>$mw_column->{$id},'highlight'=>$highlight_color});}
2373                elsif ($col =~ /habitat/)                    {push(@$single_domain,{'data'=>$habitat_column->{$id},'highlight'=>$highlight_color});}
2374                elsif ($col =~ /temperature/)                {push(@$single_domain,{'data'=>$temperature_column->{$id},'highlight'=>$highlight_color});}
2375                elsif ($col =~ /temp_range/)                 {push(@$single_domain,{'data'=>$temperature_range_column->{$id},'highlight'=>$highlight_color});}
2376                elsif ($col =~ /oxygen/)                     {push(@$single_domain,{'data'=>$oxygen_req_column->{$id},'highlight'=>$highlight_color});}
2377                elsif ($col =~ /^pathogenic$/)               {push(@$single_domain,{'data'=>$pathogenic_column->{$id},'highlight'=>$highlight_color});}
2378                elsif ($col =~ /^pathogenic_in$/)            {push(@$single_domain,{'data'=>$pathogenic_in_column->{$id},'highlight'=>$highlight_color});}
2379                elsif ($col =~ /salinity/)                   {push(@$single_domain,{'data'=>$salinity_column->{$id},'highlight'=>$highlight_color});}
2380                elsif ($col =~ /motility/)                   {push(@$single_domain,{'data'=>$motility_column->{$id},'highlight'=>$highlight_color});}
2381                elsif ($col =~ /gram_stain/)                 {push(@$single_domain,{'data'=>$gram_stain_column->{$id},'highlight'=>$highlight_color});}
2382                elsif ($col =~ /endospores/)                 {push(@$single_domain,{'data'=>$endospores_column->{$id},'highlight'=>$highlight_color});}
2383                elsif ($col =~ /shape/)                      {push(@$single_domain,{'data'=>$shape_column->{$id},'highlight'=>$highlight_color});}
2384                elsif ($col =~ /disease/)                    {push(@$single_domain,{'data'=>$disease_column->{$id},'highlight'=>$highlight_color});}
2385                elsif ($col =~ /gc_content/)                 {push(@$single_domain,{'data'=>$gc_content_column->{$id},'highlight'=>$highlight_color});}
2386                elsif ($col =~ /transmembrane/)              {push(@$single_domain,{'data'=>$transmembrane_column->{$id},'highlight'=>$highlight_color});}
2387                elsif ($col =~ /signal_peptide/)             {push(@$single_domain,{'data'=>$signal_peptide_column->{$id},'highlight'=>$highlight_color});}
2388                elsif ($col =~ /isoelectric/)                {push(@$single_domain,{'data'=>$isoelectric_column->{$id},'highlight'=>$highlight_color});}
2389                elsif ($col =~ /conerved_neighborhood/)     {push(@$single_domain,{'data'=>$cons_neigh_column->{$id},'highlight'=>$highlight_color});}
2390                elsif ($col =~ /cellular_location/)          {push(@$single_domain,{'data'=>$cell_location_column->{$id},'highlight'=>$highlight_color});}
2391                elsif ($col =~ /ncbi_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"NCBI"},'highlight'=>$highlight_color});}
2392                elsif ($col =~ /refseq_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"RefSeq"},'highlight'=>$highlight_color});}
2393                elsif ($col =~ /swissprot_id/)               {push(@$single_domain,{'data'=>$alias_col->{$id}->{"SwissProt"},'highlight'=>$highlight_color});}
2394                elsif ($col =~ /uniprot_id/)                 {push(@$single_domain,{'data'=>$alias_col->{$id}->{"UniProt"},'highlight'=>$highlight_color});}
2395                elsif ($col =~ /tigr_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TIGR"},'highlight'=>$highlight_color});}
2396                elsif ($col =~ /pir_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"PIR"},'highlight'=>$highlight_color});}
2397                elsif ($col =~ /kegg_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"KEGG"},'highlight'=>$highlight_color});}
2398                elsif ($col =~ /trembl_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TrEMBL"},'highlight'=>$highlight_color});}
2399                elsif ($col =~ /asap_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"ASAP"},'highlight'=>$highlight_color});}
2400                elsif ($col =~ /jgi_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"JGI"},'highlight'=>$highlight_color});}
2401                elsif ($col =~ /lineage/)                   {push(@$single_domain,{'data'=>$lineages->{$tax},'highlight'=>$highlight_color});}
2402                elsif ($col =~ /figfam/)                     {push(@$single_domain,{'data'=>"<a href='?page=FigFamViewer&figfam=" . $ff . "' target='_new'>" . $ff . "</a>",'highlight'=>$highlight_color});}
2403          }          }
2404          push(@$data,$single_domain);          push(@$data,$single_domain);
2405      }      }
# Line 1972  Line 2409 
2409      else{      else{
2410          $content = "<p>This PEG does not have any similarities</p>";          $content = "<p>This PEG does not have any similarities</p>";
2411      }      }
2412        shift(@$dataset);
2413        return ($content);
2414    }
2415    
2416    
2417    =head3 display_figfam_table()
2418    
2419    If available use the function specified here to display the "raw" observation.
2420    This code will display a table for the similarities protein
2421    
2422    B<Please note> that URL linked to in display_method() is an external component and needs to added to the code for every class of evidence.
2423    
2424    =cut
2425    
2426    sub display_figfam_table {
2427      my ($self,$ids, $show_columns, $fig, $application, $cgi) = @_;
2428      my ($count, $data, $content, %box_column, $subsystems_column, $evidence_column, %e_identical, $function_color, @ids);
2429    
2430      my $scroll_list;
2431      foreach my $col (@$show_columns){
2432        push (@$scroll_list, $col->{key});
2433      }
2434    
2435      $lineages = $fig->taxonomy_list() if (grep /lineage/, @$scroll_list);
2436      my @attributes = $fig->get_attributes($ids) if ( (grep /evidence/, @$scroll_list) || (grep /(pfam|mw)/, @$scroll_list) );
2437    
2438      # get the column for the subsystems
2439      $subsystems_column = &get_subsystems_column($ids,$fig,$cgi,'hash');
2440    
2441      # get the column for the evidence codes
2442      $evidence_column = &get_evidence_column($ids, \@attributes, $fig, $cgi, 'hash') if (grep /^evidence$/, @$scroll_list);
2443    
2444      # get the column for pfam_domain
2445      $pfam_column = &get_attrb_column($ids, \@attributes, $fig, $cgi, 'pfam', 'PFAM', 'hash') if (grep /^pfam$/, @$scroll_list);
2446    
2447      # get the column for molecular weight
2448      $mw_column = &get_attrb_column($ids, \@attributes, $fig, $cgi, 'mw', 'molecular_weight', 'hash') if (grep /^mw$/, @$scroll_list);
2449    
2450      # get the column for organism's habitat
2451      my $habitat_column = &get_attrb_column($ids, undef, $fig, $cgi, 'habitat', 'Habitat', 'hash') if (grep /^habitat$/, @$scroll_list);
2452    
2453      # get the column for organism's temperature optimum
2454      my $temperature_column = &get_attrb_column($ids, undef, $fig, $cgi, 'temperature', 'Optimal_Temperature', 'hash') if (grep /^temperature$/, @$scroll_list);
2455    
2456      # get the column for organism's temperature range
2457      my $temperature_range_column = &get_attrb_column($ids, undef, $fig, $cgi, 'temp_range', 'Temperature_Range', 'hash') if (grep /^temp_range$/, @$scroll_list);
2458    
2459      # get the column for organism's oxygen requirement
2460      my $oxygen_req_column = &get_attrb_column($ids, undef, $fig, $cgi, 'oxygen', 'Oxygen_Requirement', 'hash') if (grep /^oxygen$/, @$scroll_list);
2461    
2462      # get the column for organism's pathogenicity
2463      my $pathogenic_column = &get_attrb_column($ids, undef, $fig, $cgi, 'pathogenic', 'Pathogenic', 'hash') if (grep /^pathogenic$/, @$scroll_list);
2464    
2465      # get the column for organism's pathogenicity host
2466      my $pathogenic_in_column = &get_attrb_column($ids, undef, $fig, $cgi, 'pathogenic_in', 'Pathogenic_In', 'hash') if (grep /^pathogenic_in$/, @$scroll_list);
2467    
2468      # get the column for organism's salinity
2469      my $salinity_column = &get_attrb_column($ids, undef, $fig, $cgi, 'salinity', 'Salinity', 'hash') if (grep /^salinity$/, @$scroll_list);
2470    
2471      # get the column for organism's motility
2472      my $motility_column = &get_attrb_column($ids, undef, $fig, $cgi, 'motility', 'Motility', 'hash') if (grep /^motility$/, @$scroll_list);
2473    
2474      # get the column for organism's gram stain
2475      my $gram_stain_column = &get_attrb_column($ids, undef, $fig, $cgi, 'gram_stain', 'Gram_Stain', 'hash') if (grep /^gram_stain$/, @$scroll_list);
2476    
2477      # get the column for organism's endospores
2478      my $endospores_column = &get_attrb_column($ids, undef, $fig, $cgi, 'endospores', 'Endospores', 'hash') if (grep /^endospores$/, @$scroll_list);
2479    
2480      # get the column for organism's shape
2481      my $shape_column = &get_attrb_column($ids, undef, $fig, $cgi, 'shape', 'Shape', 'hash') if (grep /^shape$/, @$scroll_list);
2482    
2483      # get the column for organism's disease
2484      my $disease_column = &get_attrb_column($ids, undef, $fig, $cgi, 'disease', 'Disease', 'hash') if (grep /^disease$/, @$scroll_list);
2485    
2486      # get the column for organism's disease
2487      my $gc_content_column = &get_attrb_column($ids, undef, $fig, $cgi, 'gc_content', 'GC_Content', 'hash') if (grep /^gc_content$/, @$scroll_list);
2488    
2489      # get the column for transmembrane domains
2490      my $transmembrane_column = &get_attrb_column($ids, undef, $fig, $cgi, 'transmembrane', 'Phobius::transmembrane', 'hash') if (grep /^transmembrane$/, @$scroll_list);
2491    
2492      # get the column for similar to human
2493      my $similar_to_human_column = &get_attrb_column($ids, undef, $fig, $cgi, 'similar_to_human', 'similar_to_human', 'hash') if (grep /^similar_to_human$/, @$scroll_list);
2494    
2495      # get the column for signal peptide
2496      my $signal_peptide_column = &get_attrb_column($ids, undef, $fig, $cgi, 'signal_peptide', 'Phobius::signal', 'hash') if (grep /^signal_peptide$/, @$scroll_list);
2497    
2498      # get the column for transmembrane domains
2499      my $isoelectric_column = &get_attrb_column($ids, undef, $fig, $cgi, 'isoelectric', 'isoelectric_point', 'hash') if (grep /^isoelectric$/, @$scroll_list);
2500    
2501      # get the column for conserved neighborhood
2502      my $cons_neigh_column = &get_attrb_column($ids, undef, $fig, $cgi, 'conserved_neighborhood', undef, 'hash') if (grep /^conserved_neighborhood$/, @$scroll_list);
2503    
2504      # get the column for cellular location
2505      my $cell_location_column = &get_attrb_column($ids, undef, $fig, $cgi, 'cellular_location', 'PSORT::', 'hash') if (grep /^isoelectric$/, @$scroll_list);
2506    
2507      # get the aliases
2508      my $alias_col;
2509      if ( (grep /asap_id/, @$scroll_list) || (grep /ncbi_id/, @$scroll_list) ||
2510           (grep /refseq_id/, @$scroll_list) || (grep /swissprot_id/, @$scroll_list) ||
2511           (grep /uniprot_id/, @$scroll_list) || (grep /tigr_id/, @$scroll_list) ||
2512           (grep /kegg_id/, @$scroll_list) || (grep /pir_id/, @$scroll_list) ||
2513           (grep /trembl_id/, @$scroll_list) || (grep /jgi_id/, @$scroll_list) ) {
2514        $alias_col = &get_db_aliases($ids,$fig,'all',$cgi,'hash');
2515      }
2516    
2517      foreach my $id ( @$ids){
2518        my $current_function = $fig->function_of($id);
2519        my $organism = $fig->org_of($id);
2520        my $single_domain = [];
2521    
2522        # organisms cell
2523        my ($org, $org_color) = $fig->org_and_color_of($id);
2524        my $org_cell = { 'data' =>  $organism, 'highlight' => $org_color};
2525    
2526        # get the linked fig id
2527        my $fig_data =  "<a href='?page=Annotation&feature=$id'>$id</a>";
2528        my $fig_col = {'data'=> $fig_data,
2529                       'highlight'=>"#ffffff"};
2530    
2531        # function cell
2532        $function_cell = {'data'=>$current_function, 'highlight'=> "#ffffff"};
2533    
2534        # insert data
2535        push (@$single_domain, $fig_col, $org_cell, {'data'=>$subsystems_column->{$id},'highlight'=>"#ffffff"}, $function_cell);
2536    
2537        foreach my $col (@$scroll_list){
2538          my $highlight_color = "#ffffff";
2539    
2540          if ($col =~ /evidence/)                   {push(@$single_domain,{'data'=>$evidence_column->{$id},'highlight'=>$highlight_color});}
2541          elsif ($col =~ /pfam/)                       {push(@$single_domain,{'data'=>$pfam_column->{$id},'highlight'=>$highlight_color});}
2542          elsif ($col =~ /mw/)                         {push(@$single_domain,{'data'=>$mw_column->{$id},'highlight'=>$highlight_color});}
2543          elsif ($col =~ /habitat/)                    {push(@$single_domain,{'data'=>$habitat_column->{$id},'highlight'=>$highlight_color});}
2544          elsif ($col =~ /temperature/)                {push(@$single_domain,{'data'=>$temperature_column->{$id},'highlight'=>$highlight_color});}
2545          elsif ($col =~ /temp_range/)                 {push(@$single_domain,{'data'=>$temperature_range_column->{$id},'highlight'=>$highlight_color});}
2546          elsif ($col =~ /oxygen/)                     {push(@$single_domain,{'data'=>$oxygen_req_column->{$id},'highlight'=>$highlight_color});}
2547          elsif ($col =~ /^pathogenic$/)               {push(@$single_domain,{'data'=>$pathogenic_column->{$id},'highlight'=>$highlight_color});}
2548          elsif ($col =~ /^pathogenic_in$/)            {push(@$single_domain,{'data'=>$pathogenic_in_column->{$id},'highlight'=>$highlight_color});}
2549          elsif ($col =~ /salinity/)                   {push(@$single_domain,{'data'=>$salinity_column->{$id},'highlight'=>$highlight_color});}
2550          elsif ($col =~ /motility/)                   {push(@$single_domain,{'data'=>$motility_column->{$id},'highlight'=>$highlight_color});}
2551          elsif ($col =~ /gram_stain/)                 {push(@$single_domain,{'data'=>$gram_stain_column->{$id},'highlight'=>$highlight_color});}
2552          elsif ($col =~ /endospores/)                 {push(@$single_domain,{'data'=>$endospores_column->{$id},'highlight'=>$highlight_color});}
2553          elsif ($col =~ /shape/)                      {push(@$single_domain,{'data'=>$shape_column->{$id},'highlight'=>$highlight_color});}
2554          elsif ($col =~ /disease/)                    {push(@$single_domain,{'data'=>$disease_column->{$id},'highlight'=>$highlight_color});}
2555          elsif ($col =~ /gc_content/)                 {push(@$single_domain,{'data'=>$gc_content_column->{$id},'highlight'=>$highlight_color});}
2556          elsif ($col =~ /transmembrane/)              {push(@$single_domain,{'data'=>$transmembrane_column->{$id},'highlight'=>$highlight_color});}
2557          elsif ($col =~ /signal_peptide/)             {push(@$single_domain,{'data'=>$signal_peptide_column->{$id},'highlight'=>$highlight_color});}
2558          elsif ($col =~ /isoelectric/)                {push(@$single_domain,{'data'=>$isoelectric_column->{$id},'highlight'=>$highlight_color});}
2559          elsif ($col =~ /conerved_neighborhood/)     {push(@$single_domain,{'data'=>$cons_neigh_column->{$id},'highlight'=>$highlight_color});}
2560          elsif ($col =~ /cellular_location/)          {push(@$single_domain,{'data'=>$cell_location_column->{$id},'highlight'=>$highlight_color});}
2561          elsif ($col =~ /ncbi_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"NCBI"},'highlight'=>$highlight_color});}
2562          elsif ($col =~ /refseq_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"RefSeq"},'highlight'=>$highlight_color});}
2563          elsif ($col =~ /swissprot_id/)               {push(@$single_domain,{'data'=>$alias_col->{$id}->{"SwissProt"},'highlight'=>$highlight_color});}
2564          elsif ($col =~ /uniprot_id/)                 {push(@$single_domain,{'data'=>$alias_col->{$id}->{"UniProt"},'highlight'=>$highlight_color});}
2565          elsif ($col =~ /tigr_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TIGR"},'highlight'=>$highlight_color});}
2566          elsif ($col =~ /pir_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"PIR"},'highlight'=>$highlight_color});}
2567          elsif ($col =~ /kegg_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"KEGG"},'highlight'=>$highlight_color});}
2568          elsif ($col =~ /trembl_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TrEMBL"},'highlight'=>$highlight_color});}
2569          elsif ($col =~ /asap_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"ASAP"},'highlight'=>$highlight_color});}
2570          elsif ($col =~ /jgi_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"JGI"},'highlight'=>$highlight_color});}
2571          elsif ($col =~ /lineage/)                   {push(@$single_domain,{'data'=>$lineages->{$tax},'highlight'=>$highlight_color});}
2572          elsif ($col =~ /figfam/)                     {push(@$single_domain,{'data'=>"<a href='?page=FigFamViewer&figfam=" . $ff . "' target='_new'>" . $ff . "</a>",'highlight'=>$highlight_color});}
2573        }
2574        push(@$data,$single_domain);
2575      }
2576    
2577      $content = $data;
2578      return ($content);      return ($content);
2579  }  }
2580    
# Line 1981  Line 2584 
2584      foreach my $id (@$ids){      foreach my $id (@$ids){
2585          my $field_name = "tables_" . $id;          my $field_name = "tables_" . $id;
2586          my $pair_name = "visual_" . $id;          my $pair_name = "visual_" . $id;
2587          $column{$id} = qq(<input type=checkbox name=seq value="$id" id="$field_name" onClick="VisualCheckPair('$field_name', '$pair_name');">);          my $cell_name = "cell_" . $id;
2588            $column{$id} = qq(<input type=checkbox name=seq value="$id" id="$field_name" onClick="VisualCheckPair('$field_name', '$pair_name', '$cell_name');">);
2589      }      }
2590      return (%column);      return (%column);
2591  }  }
2592    
2593    sub get_figfam_column{
2594        my ($ids, $fig, $cgi) = @_;
2595        my $column;
2596    
2597        my $figfam_data = &FIG::get_figfams_data();
2598        my $figfams = new FFs($figfam_data);
2599    
2600        foreach my $id (@$ids){
2601            my ($ff) =  $figfams->families_containing_peg($id);
2602            if ($ff){
2603                push (@$column, "<a href='?page=FigFamViewer&figfam=" . $ff . "' target='_new'>" . $ff . "</a>");
2604            }
2605            else{
2606                push (@$column, " ");
2607            }
2608        }
2609    
2610        return $column;
2611    }
2612    
2613  sub get_subsystems_column{  sub get_subsystems_column{
2614      my ($ids,$fig) = @_;      my ($ids,$fig,$cgi,$returnType) = @_;
2615    
     #my $fig = new FIG;  
     my $cgi = new CGI;  
2616      my %in_subs  = $fig->subsystems_for_pegs($ids);      my %in_subs  = $fig->subsystems_for_pegs($ids);
2617      my %column;      my ($column, $ss);
2618      foreach my $id (@$ids){      foreach my $id (@$ids){
2619          my @in_sub = @{$in_subs{$id}} if (defined $in_subs{$id});          my @in_sub = @{$in_subs{$id}} if (defined $in_subs{$id});
2620          my @subsystems;          my @subsystems;
2621    
2622          if (@in_sub > 0) {          if (@in_sub > 0) {
2623              foreach my $array(@in_sub){              foreach my $array(@in_sub){
2624                  my $ss = $$array[0];                  my $ss = $array->[0];
2625                  $ss =~ s/_/ /ig;                  $ss =~ s/_/ /ig;
2626                  push (@subsystems, "-" . $ss);                  push (@subsystems, "-" . $ss);
2627              }              }
2628              my $in_sub_line = join ("<br>", @subsystems);              my $in_sub_line = join ("<br>", @subsystems);
2629              $column{$id} = $in_sub_line;              $ss->{$id} = $in_sub_line;
2630          } else {          } else {
2631              $column{$id} = "&nbsp;";              $ss->{$id} = "None added";
2632          }          }
2633            push (@$column, $ss->{$id});
2634      }      }
2635      return (%column);  
2636        if ($returnType eq 'hash') { return $ss; }
2637        elsif ($returnType eq 'array') { return $column; }
2638    }
2639    
2640    sub get_lineage_column{
2641        my ($ids, $fig, $cgi) = @_;
2642    
2643        my $lineages = $fig->taxonomy_list();
2644    
2645        foreach my $id (@$ids){
2646            my $genome = $fig->genome_of($id);
2647            if ($lineages->{$genome}){
2648    #           push (@$column, qq~<table style='border-style:hidden;'><tr><td style='background-color: #ffffff;'>~ . $lineages->{$genome} . qq~</td></tr</table>~);
2649                push (@$column, $lineages->{$genome});
2650            }
2651            else{
2652                push (@$column, " ");
2653            }
2654        }
2655        return $column;
2656    }
2657    
2658    sub match_color {
2659        my ( $b, $e, $n , $rgb) = @_;
2660        my ( $l, $r ) = ( $e > $b ) ? ( $b, $e ) : ( $e, $b );
2661        my $hue = 5/6 * 0.5*($l+$r)/$n - 1/12;
2662        my $cov = ( $r - $l + 1 ) / $n;
2663        my $sat = 1 - 10 * $cov / 9;
2664        my $br  = 1;
2665        if ($rgb){
2666            return html2rgb( rgb2html( hsb2rgb( $hue, $sat, $br ) ) );
2667        }
2668        else{
2669            rgb2html( hsb2rgb( $hue, $sat, $br ) );
2670        }
2671    }
2672    
2673    sub hsb2rgb {
2674        my ( $h, $s, $br ) = @_;
2675        $h = 6 * ($h - floor($h));
2676        if ( $s  > 1 ) { $s  = 1 } elsif ( $s  < 0 ) { $s  = 0 }
2677        if ( $br > 1 ) { $br = 1 } elsif ( $br < 0 ) { $br = 0 }
2678        my ( $r, $g, $b ) = ( $h <= 3 ) ? ( ( $h <= 1 ) ? ( 1,      $h,     0      )
2679                                          : ( $h <= 2 ) ? ( 2 - $h, 1,      0      )
2680                                          :               ( 0,      1,      $h - 2 )
2681                                          )
2682                                        : ( ( $h <= 4 ) ? ( 0,      4 - $h, 1      )
2683                                          : ( $h <= 5 ) ? ( $h - 4, 0,      1      )
2684                                          :               ( 1,      0,      6 - $h )
2685                                          );
2686        ( ( $r * $s + 1 - $s ) * $br,
2687          ( $g * $s + 1 - $s ) * $br,
2688          ( $b * $s + 1 - $s ) * $br
2689        )
2690    }
2691    
2692    sub html2rgb {
2693        my ($hex) = @_;
2694        my ($r,$g,$b) = ($hex) =~ /^\#(\w\w)(\w\w)(\w\w)/;
2695        my $code = { 'A'=>10, 'B'=>11, 'C'=>12, 'D'=>13, 'E'=>14, 'F'=>15,
2696                     1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9};
2697    
2698        my @R = split(//, $r);
2699        my @G = split(//, $g);
2700        my @B = split(//, $b);
2701    
2702        my $red = ($code->{uc($R[0])}*16)+$code->{uc($R[1])};
2703        my $green = ($code->{uc($G[0])}*16)+$code->{uc($G[1])};
2704        my $blue = ($code->{uc($B[0])}*16)+$code->{uc($B[1])};
2705    
2706        my $rgb = [$red, $green, $blue];
2707        return $rgb;
2708    
2709    }
2710    
2711    sub rgb2html {
2712        my ( $r, $g, $b ) = @_;
2713        if ( $r > 1 ) { $r = 1 } elsif ( $r < 0 ) { $r = 0 }
2714        if ( $g > 1 ) { $g = 1 } elsif ( $g < 0 ) { $g = 0 }
2715        if ( $b > 1 ) { $b = 1 } elsif ( $b < 0 ) { $b = 0 }
2716        sprintf("#%02x%02x%02x", int(255.999*$r), int(255.999*$g), int(255.999*$b) )
2717    }
2718    
2719    sub floor {
2720        my $x = $_[0];
2721        defined( $x ) || return undef;
2722        ( $x >= 0 ) || ( int($x) == $x ) ? int( $x ) : -1 - int( - $x )
2723    }
2724    
2725    sub get_function_color_cell{
2726      my ($functions, $fig) = @_;
2727    
2728      # figure out the quantity of each function
2729      my %hash;
2730      foreach my $key (keys %$functions){
2731        my $func = $functions->{$key};
2732        $hash{$func}++;
2733      }
2734    
2735      my %func_colors;
2736      my $count = 1;
2737      foreach my $key (sort {$hash{$b}<=>$hash{$a}} keys %hash){
2738        $func_colors{$key}=$count;
2739        $count++;
2740      }
2741    
2742      return \%func_colors;
2743  }  }
2744    
2745  sub get_essentially_identical{  sub get_essentially_identical{
# Line 2042  Line 2772 
2772    
2773    
2774  sub get_evidence_column{  sub get_evidence_column{
2775      my ($ids, $attributes,$fig) = @_;      my ($ids,$attributes,$fig,$cgi,$returnType) = @_;
2776      #my $fig = new FIG;      my ($column, $code_attributes);
2777      my $cgi = new CGI;  
2778      my (%column, %code_attributes);      if (! defined $attributes) {
2779            my @attributes_array = $fig->get_attributes($ids);
2780            $attributes = \@attributes_array;
2781        }
2782    
2783      my @codes = grep { $_->[1] =~ /^evidence_code/i } @$attributes;      my @codes = grep { $_->[1] =~ /^evidence_code/i } @$attributes;
2784      foreach my $key (@codes){      foreach my $key (@codes){
2785          push (@{$code_attributes{$$key[0]}}, $key);          push (@{$code_attributes->{$key->[0]}}, $key);
2786      }      }
2787    
2788      foreach my $id (@$ids){      foreach my $id (@$ids){
2789          # add evidence code with tool tip          # add evidence code with tool tip
2790          my $ev_codes=" &nbsp; ";          my $ev_codes=" &nbsp; ";
2791    
2792          my @codes = @{$code_attributes{$id}} if (defined @{$code_attributes{$id}});          my @codes = @{$code_attributes->{$id}} if (defined @{$code_attributes->{$id}});
2793          my @ev_codes = ();          my @ev_codes = ();
2794          foreach my $code (@codes) {          foreach my $code (@codes) {
2795              my $pretty_code = $code->[2];              my $pretty_code = $code->[2];
2796              if ($pretty_code =~ /;/) {              if ($pretty_code =~ /;/) {
2797                  my ($cd, $ss) = split(";", $code->[2]);                  my ($cd, $ss) = split(";", $code->[2]);
2798                    #print STDERR "$id: $cd, $ss\n";
2799                    if ($cd =~ /ilit|dlit/){
2800                        my ($type,$pubmed_id) = ($cd) =~ /(.*?)\((.*)\)/;
2801                        my $publink = &HTML::alias_url($pubmed_id,'PMID');
2802                        $cd = $type . "(<a href='" . $publink . "'>" . $pubmed_id . "</a>)";
2803                    }
2804                  $ss =~ s/_/ /g;                  $ss =~ s/_/ /g;
2805                  $pretty_code = $cd;# . " in " . $ss;                  $pretty_code = $cd;# . " in " . $ss;
2806              }              }
# Line 2074  Line 2813 
2813                                  {                                  {
2814                                      id=>"evidence_codes", onMouseover=>"javascript:if(!this.tooltip) this.tooltip=new Popup_Tooltip(this, 'Evidence Codes', '$ev_code_help', ''); this.tooltip.addHandler(); return false;"}, join("<br />", @ev_codes));                                      id=>"evidence_codes", onMouseover=>"javascript:if(!this.tooltip) this.tooltip=new Popup_Tooltip(this, 'Evidence Codes', '$ev_code_help', ''); this.tooltip.addHandler(); return false;"}, join("<br />", @ev_codes));
2815          }          }
2816          $column{$id}=$ev_codes;  
2817            if ($returnType eq 'hash') { $column->{$id}=$ev_codes; }
2818            elsif ($returnType eq 'array') { push (@$column, $ev_codes); }
2819      }      }
2820      return (%column);      return $column;
2821  }  }
2822    
2823  sub get_pfam_column{  sub get_attrb_column{
2824      my ($ids, $attributes,$fig) = @_;      my ($ids, $attributes, $fig, $cgi, $colName, $attrbName, $returnType) = @_;
2825      #my $fig = new FIG;  
2826      my $cgi = new CGI;      my ($column, %code_attributes, %attribute_locations);
2827      my (%column, %code_attributes, %attribute_locations);      my $dbmaster = DBMaster->new(-database =>'Ontology',
2828      my $dbmaster = DBMaster->new(-database =>'Ontology');                                   -host     => $WebConfig::DBHOST,
2829                                     -user     => $WebConfig::DBUSER,
2830                                     -password => $WebConfig::DBPWD);
2831    
2832      my @codes = grep { $_->[1] =~ /^PFAM/i } @$attributes;      if ($colName eq "pfam"){
2833            if (! defined $attributes) {
2834                my @attributes_array = $fig->get_attributes($ids);
2835                $attributes = \@attributes_array;
2836            }
2837    
2838            my @codes = grep { $_->[1] =~ /^$attrbName/i } @$attributes;
2839      foreach my $key (@codes){      foreach my $key (@codes){
2840          my $name = $key->[1];          my $name = $key->[1];
2841          if ($name =~ /_/){          if ($name =~ /_/){
# Line 2097  Line 2846 
2846      }      }
2847    
2848      foreach my $id (@$ids){      foreach my $id (@$ids){
2849          # add evidence code              # add pfam code
2850          my $pfam_codes=" &nbsp; ";          my $pfam_codes=" &nbsp; ";
2851          my @pfam_codes = "";          my @pfam_codes = "";
2852          my %description_codes;          my %description_codes;
# Line 2113  Line 2862 
2862    
2863              foreach my $code (@ncodes) {              foreach my $code (@ncodes) {
2864                  my @parts = split("::",$code);                  my @parts = split("::",$code);
2865                  my $pfam_link = "<a href=http://www.sanger.ac.uk//cgi-bin/Pfam/getacc?" . $parts[1] . ">$parts[1]</a>";                      my $pfam_link = "<a href=http://pfam.sanger.ac.uk/family?acc=" . $parts[1] . ">$parts[1]</a>";
2866    
2867                  # get the locations for the domain                  # get the locations for the domain
2868                  my @locs;                  my @locs;
# Line 2132  Line 2881 
2881                  }                  }
2882                  else {                  else {
2883                      my $description = $dbmaster->pfam->get_objects( { 'id' => $parts[1] } );                      my $description = $dbmaster->pfam->get_objects( { 'id' => $parts[1] } );
2884                      $description_codes{$parts[1]} = ${$$description[0]}{term};                          $description_codes{$parts[1]} = $description->[0]->{term};
2885                      push(@pfam_codes, "$pfam_link ($locations)");                      push(@pfam_codes, "$pfam_link ($locations)");
2886                  }                  }
2887              }              }
2888    
2889                    if ($returnType eq 'hash') { $column->{$id} = join("<br><br>", @pfam_codes); }
2890                    elsif ($returnType eq 'array') { push (@$column, join("<br><br>", @pfam_codes)); }
2891                }
2892            }
2893        }
2894        elsif ($colName eq 'cellular_location'){
2895            if (! defined $attributes) {
2896                my @attributes_array = $fig->get_attributes($ids);
2897                $attributes = \@attributes_array;
2898          }          }
2899    
2900          $column{$id}=join("<br><br>", @pfam_codes);          my @codes = grep { $_->[1] =~ /^$attrbName/i } @$attributes;
2901            foreach my $key (@codes){
2902                my ($loc) = ($key->[1]) =~ /::(.*)/;
2903                my ($new_loc, @all);
2904                @all = split (//, $loc);
2905                my $count = 0;
2906                foreach my $i (@all){
2907                    if ( ($i eq uc($i)) && ($count > 0) ){
2908                        $new_loc .= " " . $i;
2909                    }
2910                    else{
2911                        $new_loc .= $i;
2912                    }
2913                    $count++;
2914                }
2915                push (@{$code_attributes{$key->[0]}}, [$new_loc, $key->[2]]);
2916            }
2917    
2918            foreach my $id (@$ids){
2919                my (@values, $entry);
2920                #@values = (" ");
2921                if (defined @{$code_attributes{$id}}){
2922                    my @ncodes = @{$code_attributes{$id}};
2923                    foreach my $code (@ncodes){
2924                        push (@values, $code->[0] . ", " . $code->[1]);
2925                    }
2926                }
2927                else{
2928                    @values = ("Not available");
2929                }
2930    
2931                if ($returnType eq 'hash') { $column->{$id} = join ("<BR>", @values); }
2932                elsif ($returnType eq 'array') { push (@$column, join ("<BR>", @values)); }
2933            }
2934        }
2935        elsif ( ($colName eq 'mw') || ($colName eq 'transmembrane') || ($colName eq 'similar_to_human') ||
2936                ($colName eq 'signal_peptide') || ($colName eq 'isoelectric') ){
2937            if (! defined $attributes) {
2938                my @attributes_array = $fig->get_attributes($ids);
2939                $attributes = \@attributes_array;
2940            }
2941    
2942            my @codes = grep { $_->[1] =~ /^$attrbName/i } @$attributes;
2943            foreach my $key (@codes){
2944                push (@{$code_attributes{$key->[0]}}, $key->[2]);
2945            }
2946    
2947            foreach my $id (@$ids){
2948                my (@values, $entry);
2949                #@values = (" ");
2950                if (defined @{$code_attributes{$id}}){
2951                    my @ncodes = @{$code_attributes{$id}};
2952                    foreach my $code (@ncodes){
2953                        push (@values, $code);
2954                    }
2955                }
2956                else{
2957                    @values = ("Not available");
2958                }
2959    
2960                if ($returnType eq 'hash') { $column->{$id} = join ("<BR>", @values); }
2961                elsif ($returnType eq 'array') { push (@$column, join ("<BR>", @values)); }
2962            }
2963        }
2964        elsif ( ($colName eq 'habitat') || ($colName eq 'temperature') || ($colName eq 'temp_range') ||
2965                ($colName eq 'oxygen') || ($colName eq 'pathogenic') || ($colName eq 'pathogenic_in') ||
2966                ($colName eq 'salinity') || ($colName eq 'motility') || ($colName eq 'gram_stain') ||
2967                ($colName eq 'endospores') || ($colName eq 'shape') || ($colName eq 'disease') ||
2968                ($colName eq 'gc_content') ) {
2969            if (! defined $attributes) {
2970                my @attributes_array = $fig->get_attributes(undef,$attrbName);
2971                $attributes = \@attributes_array;
2972      }      }
     return (%column);  
2973    
2974            my $genomes_with_phenotype;
2975            foreach my $attribute (@$attributes){
2976                my $genome = $attribute->[0];
2977                $genomes_with_phenotype->{$genome} = $attribute->[2];
2978  }  }
2979    
2980  sub get_aliases {          foreach my $id (@$ids){
2981      my ($ids,$fig) = @_;              my $genome = $fig->genome_of($id);
2982                my @values = (' ');
2983                if (defined $genomes_with_phenotype->{$genome}){
2984                    push (@values, $genomes_with_phenotype->{$genome});
2985                }
2986                if ($returnType eq 'hash') { $column->{$id} = join ("<BR>", @values); }
2987                elsif ($returnType eq 'array') { push (@$column, join ("<BR>", @values)); }
2988            }
2989        }
2990    
2991        return $column;
2992    }
2993    
2994    
2995    sub get_db_aliases {
2996        my ($ids,$fig,$db,$cgi,$returnType) = @_;
2997    
2998        my $db_array;
2999      my $all_aliases = $fig->feature_aliases_bulk($ids);      my $all_aliases = $fig->feature_aliases_bulk($ids);
3000      foreach my $id (@$ids){      foreach my $id (@$ids){
3001          foreach my $alias (@{$$all_aliases{$id}}){          foreach my $alias (@{$$all_aliases{$id}}){
3002              my $id_db = &Observation::get_database($alias);              my $id_db = &Observation::get_database($alias);
3003              next if ($aliases->{$id}->{$id_db});              next if ( ($id_db ne $db) && ($db ne 'all') );
3004                next if ($aliases->{$id}->{$db});
3005              $aliases->{$id}->{$id_db} = &HTML::set_prot_links($cgi,$alias);              $aliases->{$id}->{$id_db} = &HTML::set_prot_links($cgi,$alias);
3006          }          }
3007            if (!defined( $aliases->{$id}->{$db})){
3008                $aliases->{$id}->{$db} = " ";
3009      }      }
3010      return ($aliases);          #push (@$db_array, {'data'=>  $aliases->{$id}->{$db},'highlight'=>"#ffffff"});
3011            push (@$db_array, $aliases->{$id}->{$db});
3012  }  }
3013    
3014        if ($returnType eq 'hash') { return $aliases; }
3015        elsif ($returnType eq 'array') { return $db_array; }
3016    }
3017    
3018    
3019    
3020  sub html_enc { $_ = $_[0]; s/\&/&amp;/g; s/\>/&gt;/g; s/\</&lt;/g; $_ }  sub html_enc { $_ = $_[0]; s/\&/&amp;/g; s/\>/&gt;/g; s/\</&lt;/g; $_ }
3021    
3022  sub color {  sub color {
# Line 2195  Line 3054 
3054  sub display {  sub display {
3055      my ($self,$gd,$selected_taxonomies,$taxes,$sims_array,$fig) = @_;      my ($self,$gd,$selected_taxonomies,$taxes,$sims_array,$fig) = @_;
3056    
3057        $taxes = $fig->taxonomy_list();
3058    
3059      my $fid = $self->fig_id;      my $fid = $self->fig_id;
3060      my $compare_or_coupling = $self->context;      my $compare_or_coupling = $self->context;
3061      my $gd_window_size = $gd->window_size;      my $gd_window_size = $gd->window_size;
# Line 2268  Line 3129 
3129                  #my $genome = $fig->genome_of($sim->[1]);                  #my $genome = $fig->genome_of($sim->[1]);
3130                  my $genome = $fig->genome_of($sim->acc);                  my $genome = $fig->genome_of($sim->acc);
3131                  #my ($genome1) = ($genome) =~ /(.*)\./;                  #my ($genome1) = ($genome) =~ /(.*)\./;
3132                  #my $lineage = $taxes->{$genome1};                  my $lineage = $taxes->{$genome};
3133                  my $lineage = $fig->taxonomy_of($fig->genome_of($genome));                  #my $lineage = $fig->taxonomy_of($fig->genome_of($genome));
3134                  foreach my $taxon(@selected_taxonomy){                  foreach my $taxon(@selected_taxonomy){
3135                      if ($lineage =~ /$taxon/){                      if ($lineage =~ /$taxon/){
3136                          #push (@selected_sims, $sim->[1]);                          #push (@selected_sims, $sim->[1]);
# Line 2351  Line 3212 
3212          my $region_gs = $fig->genus_species($region_genome);          my $region_gs = $fig->genus_species($region_genome);
3213          my $abbrev_name = $fig->abbrev($region_gs);          my $abbrev_name = $fig->abbrev($region_gs);
3214          #my ($genome1) = ($region_genome) =~ /(.*?)\./;          #my ($genome1) = ($region_genome) =~ /(.*?)\./;
3215          #my $lineage = $taxes->{$genome1};          my $lineage = $taxes->{$region_genome};
3216          my $lineage = $fig->taxonomy_of($region_genome);          #my $lineage = $fig->taxonomy_of($region_genome);
3217          #$region_gs .= "Lineage:$lineage";          #$region_gs .= "Lineage:$lineage";
3218          my $line_config = { 'title' => $region_gs,          my $line_config = { 'title' => $region_gs,
3219                              'short_title' => $abbrev_name,                              'short_title' => $abbrev_name,
# Line 2442  Line 3303 
3303                  $prev_stop = $stop;                  $prev_stop = $stop;
3304                  $prev_fig = $fid1;                  $prev_fig = $fid1;
3305    
3306                  if ((defined($reverse_flag{$region_genome})) && ($reverse_flag{$region_genome} eq $all_genes{$fid1})){                  if ((defined($reverse_flag{$region_genome})) && ($reverse_flag{$region_genome} eq $all_gnes{$fid1})){
3307                      $start = $gd_window_size - $start;                      $start = $gd_window_size - $start;
3308                      $stop = $gd_window_size - $stop;                      $stop = $gd_window_size - $stop;
3309                  }                  }
# Line 2594  Line 3455 
3455      my $cgi = new CGI;      my $cgi = new CGI;
3456      my $count = 0;      my $count = 0;
3457      my $peg_array = [];      my $peg_array = [];
3458      my (%evidence_column, %subsystems_column,  %e_identical);      my ($evidence_column, $subsystems_column,  %e_identical);
3459    
3460      if (@$dataset != 1){      if (@$dataset != 1){
3461          foreach my $thing (@$dataset){          foreach my $thing (@$dataset){
# Line 2603  Line 3464 
3464              }              }
3465          }          }
3466          # get the column for the evidence codes          # get the column for the evidence codes
3467          %evidence_column = &Observation::Sims::get_evidence_column($peg_array);          $evidence_column = &Observation::Sims::get_evidence_column($peg_array, undef, $fig, $cgi, 'hash');
3468    
3469          # get the column for the subsystems          # get the column for the subsystems
3470          %subsystems_column = &Observation::Sims::get_subsystems_column($peg_array,$fig);          $subsystems_column = &Observation::Sims::get_subsystems_column($peg_array,$fig, $cgi, 'array');
3471    
3472          # get essentially identical seqs          # get essentially identical seqs
3473          %e_identical = &Observation::Sims::get_essentially_identical($mypeg,$dataset,$fig);          %e_identical = &Observation::Sims::get_essentially_identical($mypeg,$dataset,$fig);
# Line 2620  Line 3481 
3481          last if ($count > 10);          last if ($count > 10);
3482          my $row_data = [];          my $row_data = [];
3483          my ($set, $org, $ss, $ev, $function, $function_cell, $id_cell);          my ($set, $org, $ss, $ev, $function, $function_cell, $id_cell);
3484            if ($fig->org_of($id)){
3485          $org = $fig->org_of($id);          $org = $fig->org_of($id);
3486            }
3487            else{
3488                $org = "Data not available";
3489            }
3490          $function = $fig->function_of($id);          $function = $fig->function_of($id);
3491          if ($mypeg ne $id){          if ($mypeg ne $id){
3492              $function_cell = "<input type='radio' name='function' id='$id' value='$function' onClick=\"clearText('setAnnotation');\">&nbsp;&nbsp;$function";              $function_cell = "<input type='radio' name='function' id='$id' value='$function' onClick=\"clearText('setAnnotation');\">&nbsp;&nbsp;$function";
# Line 2635  Line 3501 
3501    
3502          push(@$row_data,$id_cell);          push(@$row_data,$id_cell);
3503          push(@$row_data,$org);          push(@$row_data,$org);
3504          push(@$row_data, $subsystems_column{$id}) if ($mypeg ne $id);          push(@$row_data, $subsystems_column->{$id}) if ($mypeg ne $id);
3505          push(@$row_data, $evidence_column{$id}) if ($mypeg ne $id);          push(@$row_data, $evidence_column->{$id}) if ($mypeg ne $id);
3506          push(@$row_data, $fig->translation_length($id));          push(@$row_data, $fig->translation_length($id));
3507          push(@$row_data,$function_cell);          push(@$row_data,$function_cell);
3508          push(@$all_rows,$row_data);          push(@$all_rows,$row_data);
# Line 2682  Line 3548 
3548    
3549      return($content);      return($content);
3550  }  }
3551    

Legend:
Removed from v.1.50  
changed lines
  Added in v.1.73

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3