[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.58, Wed Apr 23 15:50:16 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 374  Line 374 
374    
375  }  }
376    
377    =head3 get_sims_objects()
378    
379    This is the B<REAL WORKHORSE> method of this Package.
380    
381    =cut
382    
383    sub get_sims_objects {
384        my ($self,$fid,$fig,$parameters) = @_;
385    
386        my $objects = [];
387        my @matched_datasets=();
388    
389        # call function that fetches attribute based observations
390        # returns an array of arrays of hashes
391        get_sims_observations($fid,\@matched_datasets,$fig,$parameters);
392    
393        foreach my $dataset (@matched_datasets) {
394            my $object;
395            if ($dataset->{'class'} eq "SIM"){
396                $object = Observation::Sims->new($dataset);
397            }
398            push (@$objects, $object);
399        }
400        return $objects;
401    }
402    
403    
404  =head3 display_housekeeping  =head3 display_housekeeping
405  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
406    
# Line 414  Line 441 
441  =cut  =cut
442    
443  sub get_sims_summary {  sub get_sims_summary {
444      my ($observation, $fid, $taxes, $dataset, $fig) = @_;      my ($observation, $dataset, $fig) = @_;
445      my %families;      my %families;
446      #my @sims= $fig->nsims($fid,20000,10,"fig");      my $taxes = $fig->taxonomy_list();
447    
448      foreach my $thing (@$dataset) {      foreach my $thing (@$dataset) {
449            my ($id, $evalue);
450            if ($thing =~ /fig\|/){
451                $id = $thing;
452                $evalue = -1;
453            }
454            else{
455          next if ($thing->class ne "SIM");          next if ($thing->class ne "SIM");
456                $id      = $thing->acc;
457          my $id      = $thing->acc;              $evalue  = $thing->evalue;
458          my $evalue  = $thing->evalue;          }
   
459          next if ($id !~ /fig\|/);          next if ($id !~ /fig\|/);
460          next if ($fig->is_deleted_fid($id));          next if ($fig->is_deleted_fid($id));
461    
462          my $genome = $fig->genome_of($id);          my $genome = $fig->genome_of($id);
463          #my ($genome1) = ($genome) =~ /(.*)\./;          #my ($genome1) = ($genome) =~ /(.*)\./;
464          #my $taxonomy = $taxes->{$genome1};          my $taxonomy = $taxes->{$genome};
         my $taxonomy = $fig->taxonomy_of($genome); # use this if the taxonomies have been updated  
465          my $parent_tax = "Root";          my $parent_tax = "Root";
466          my @currLineage = ($parent_tax);          my @currLineage = ($parent_tax);
467            push (@{$families{figs}{$parent_tax}}, $id);
468            my $level = 2;
469          foreach my $tax (split(/\; /, $taxonomy)){          foreach my $tax (split(/\; /, $taxonomy)){
470              push (@{$families{children}{$parent_tax}}, $tax);              push (@{$families{children}{$parent_tax}}, $tax) if ($tax ne $parent_tax);
471                push (@{$families{figs}{$tax}}, $id) if ($tax ne $parent_tax);
472                $families{level}{$tax} = $level;
473              push (@currLineage, $tax);              push (@currLineage, $tax);
474              $families{parent}{$tax} = $parent_tax;              $families{parent}{$tax} = $parent_tax;
475              $families{lineage}{$tax} = join(";", @currLineage);              $families{lineage}{$tax} = join(";", @currLineage);
476              if (defined ($families{evalue}{$tax})){              if (defined ($families{evalue}{$tax})){
477                  if ($sim->[10] < $families{evalue}{$tax}){                  if ($evalue < $families{evalue}{$tax}){
478                      $families{evalue}{$tax} = $evalue;                      $families{evalue}{$tax} = $evalue;
479                      $families{color}{$tax} = &get_taxcolor($evalue);                      $families{color}{$tax} = &get_taxcolor($evalue);
480                  }                  }
# Line 449  Line 485 
485              }              }
486    
487              $parent_tax = $tax;              $parent_tax = $tax;
488                $level++;
489          }          }
490      }      }
491    
# Line 459  Line 496 
496          my @out = grep(!$saw{$_}++, @{$families{children}{$key}});          my @out = grep(!$saw{$_}++, @{$families{children}{$key}});
497          $families{children}{$key} = \@out;          $families{children}{$key} = \@out;
498      }      }
499      return (\%families);  
500        return \%families;
501  }  }
502    
503  =head1 Internal Methods  =head1 Internal Methods
# Line 473  Line 511 
511  sub get_taxcolor{  sub get_taxcolor{
512      my ($evalue) = @_;      my ($evalue) = @_;
513      my $color;      my $color;
514      if ($evalue <= 1e-170){        $color = "#FF2000";    }      if ($evalue == -1){            $color = "black";      }
515        elsif (($evalue <= 1e-170) && ($evalue >= 0)){        $color = "#FF2000";    }
516      elsif (($evalue <= 1e-120) && ($evalue > 1e-170)){        $color = "#FF3300";    }      elsif (($evalue <= 1e-120) && ($evalue > 1e-170)){        $color = "#FF3300";    }
517      elsif (($evalue <= 1e-90) && ($evalue > 1e-120)){        $color = "#FF6600";    }      elsif (($evalue <= 1e-90) && ($evalue > 1e-120)){        $color = "#FF6600";    }
518      elsif (($evalue <= 1e-70) && ($evalue > 1e-90)){        $color = "#FF9900";    }      elsif (($evalue <= 1e-70) && ($evalue > 1e-90)){        $color = "#FF9900";    }
# Line 497  Line 536 
536          my @parts = split("::",$key);          my @parts = split("::",$key);
537          my $class = $parts[0];          my $class = $parts[0];
538          my $name = $parts[1];          my $name = $parts[1];
539          next if (($class eq "PFAM") && ($name !~ /interpro/));          #next if (($class eq "PFAM") && ($name !~ /interpro/));
540    
541          if($domain_classes->{$parts[0]}){          if($domain_classes->{$parts[0]}){
542              my $val = @$attr_ref[2];              my $val = @$attr_ref[2];
# Line 654  Line 693 
693  =cut  =cut
694    
695  sub get_sims_observations{  sub get_sims_observations{
696        my ($fid,$datasets_ref,$fig,$parameters) = (@_);
697    
698      my ($fid,$datasets_ref,$fig) = (@_);      my ($max_sims, $max_expand, $max_eval, $sim_order, $db_filter);
699      #my $fig = new FIG;      if ($parameters->{flag}){
700      my @sims= $fig->sims($fid,500,10,"fig");        $max_sims = $parameters->{max_sims};
701          $max_expand = $parameters->{max_expand};
702          $max_eval = $parameters->{max_eval};
703          $db_filter = $parameters->{db_filter};
704          $sim_order = $parameters->{sim_order};
705          $group_by_genome = 1 if (defined ($parameters->{group_genome}));
706        }
707        else{
708          $max_sims = 50;
709          $max_expand = 5;
710          $max_eval = 1e-5;
711          $db_filter = "figx";
712          $sim_order = "id";
713        }
714    
715        my(@tmp, $id, $genome, @genomes, %sims);
716        my @tmp= $fig->sims($fid,$max_sims,$max_eval,$db_filter,$max_expand);
717        @tmp = grep { !($_->id2 =~ /^fig\|/ and $fig->is_deleted_fid($_->id2)) } @tmp;
718      my ($dataset);      my ($dataset);
719    
720      foreach my $sim (@sims){      if ($group_by_genome){
721          next if ($fig->is_deleted_fid($sim->[1]));        #  Collect all sims from genome with the first occurance of the genome:
722          foreach $sim ( @tmp ){
723            $id = $sim->id2;
724            $genome = ($id =~ /^fig\|(\d+\.\d+)\.peg\.\d+/) ? $1 : $id;
725            if (! defined( $sims{ $genome } ) ) { push @genomes, $genome }
726            push @{ $sims{ $genome } }, $sim;
727          }
728          @tmp = map { @{ $sims{$_} } } @genomes;
729        }
730    
731        foreach my $sim (@tmp){
732          my $hit = $sim->[1];          my $hit = $sim->[1];
733          my $percent = $sim->[2];          my $percent = $sim->[2];
734          my $evalue = $sim->[10];          my $evalue = $sim->[10];
# Line 706  Line 773 
773      my ($id) = (@_);      my ($id) = (@_);
774    
775      my ($db);      my ($db);
776      if ($id =~ /^fig\|/)              { $db = "FIG" }      if ($id =~ /^fig\|/)              { $db = "SEED" }
777      elsif ($id =~ /^gi\|/)            { $db = "NCBI" }      elsif ($id =~ /^gi\|/)            { $db = "NCBI" }
778        elsif ($id =~ /^gb\|/)            { $db = "GenBank" }
779      elsif ($id =~ /^^[NXYZA]P_/)      { $db = "RefSeq" }      elsif ($id =~ /^^[NXYZA]P_/)      { $db = "RefSeq" }
780        elsif ($id =~ /^ref\|/)           { $db = "RefSeq" }
781      elsif ($id =~ /^sp\|/)            { $db = "SwissProt" }      elsif ($id =~ /^sp\|/)            { $db = "SwissProt" }
782      elsif ($id =~ /^uni\|/)           { $db = "UniProt" }      elsif ($id =~ /^uni\|/)           { $db = "UniProt" }
783      elsif ($id =~ /^tigr\|/)          { $db = "TIGR" }      elsif ($id =~ /^tigr\|/)          { $db = "TIGR" }
# Line 717  Line 786 
786      elsif ($id =~ /^tr\|/)                          { $db = "TrEMBL" }      elsif ($id =~ /^tr\|/)                          { $db = "TrEMBL" }
787      elsif ($id =~ /^eric\|/)          { $db = "ASAP" }      elsif ($id =~ /^eric\|/)          { $db = "ASAP" }
788      elsif ($id =~ /^img\|/)           { $db = "JGI" }      elsif ($id =~ /^img\|/)           { $db = "JGI" }
789        elsif ($id =~ /^pdb\|/)           { $db = "PDB" }
790        elsif ($id =~ /^img\|/)           { $db = "IMG" }
791        elsif ($id =~ /^cmr\|/)           { $db = "CMR" }
792        elsif ($id =~ /^dbj\|/)           { $db = "DBJ" }
793    
794      return ($db);      return ($db);
795    
# Line 919  Line 992 
992      my ($self,$gd,$fig) = @_;      my ($self,$gd,$fig) = @_;
993    
994      my $fid = $self->fig_id;      my $fid = $self->fig_id;
995      my $dbmaster = DBMaster->new(-database =>'Ontology');      my $dbmaster = DBMaster->new(-database =>'Ontology',
996                                    -host     => $WebConfig::DBHOST,
997                                    -user     => $WebConfig::DBUSER,
998                                    -password => $WebConfig::DBPWD);
999    
1000      my $acc = $self->acc;      my $acc = $self->acc;
1001    
# Line 1178  Line 1254 
1254      my $db_and_id = $thing->acc;      my $db_and_id = $thing->acc;
1255      my ($db,$id) = split("::",$db_and_id);      my ($db,$id) = split("::",$db_and_id);
1256    
1257      my $dbmaster = DBMaster->new(-database =>'Ontology');      my $dbmaster = DBMaster->new(-database =>'Ontology',
1258                                    -host     => $WebConfig::DBHOST,
1259                                    -user     => $WebConfig::DBUSER,
1260                                    -password => $WebConfig::DBPWD);
1261    
1262      my ($name_title,$name_value,$description_title,$description_value);      my ($name_title,$name_value,$description_title,$description_value);
1263      if($db eq "CDD"){      if($db eq "CDD"){
# Line 1255  Line 1334 
1334      my $link;      my $link;
1335      my $link_url;      my $link_url;
1336      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"}
1337      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"}
1338      else{$link_url = "NO_URL"}      else{$link_url = "NO_URL"}
1339    
1340      $link = {"link_title" => $thing->acc,      $link = {"link_title" => $thing->acc,
# Line 1293  Line 1372 
1372          my $db_and_id = $thing->acc;          my $db_and_id = $thing->acc;
1373          my ($db,$id) = split("::",$db_and_id);          my ($db,$id) = split("::",$db_and_id);
1374    
1375          my $dbmaster = DBMaster->new(-database =>'Ontology');          my $dbmaster = DBMaster->new(-database =>'Ontology',
1376                                    -host     => $WebConfig::DBHOST,
1377                                    -user     => $WebConfig::DBUSER,
1378                                    -password => $WebConfig::DBPWD);
1379    
1380          my ($name_title,$name_value,$description_title,$description_value);          my ($name_title,$name_value,$description_title,$description_value);
1381          if($db eq "CDD"){          if($db eq "CDD"){
# Line 1312  Line 1394 
1394                  $description_value = $cdd_obj->description;                  $description_value = $cdd_obj->description;
1395              }              }
1396          }          }
1397            elsif($db =~ /PFAM/){
1398                my ($new_id) = ($id) =~ /(.*?)_/;
1399                my $pfam_objs = $dbmaster->pfam->get_objects( { 'id' => $new_id } );
1400                if(!scalar(@$pfam_objs)){
1401                    $name_title = "name";
1402                    $name_value = "not available";
1403                    $description_title = "description";
1404                    $description_value = "not available";
1405                }
1406                else{
1407                    my $pfam_obj = $pfam_objs->[0];
1408                    $name_title = "name";
1409                    $name_value = $pfam_obj->term;
1410                    #$description_title = "description";
1411                    #$description_value = $pfam_obj->description;
1412                }
1413            }
1414    
1415          my $location =  $thing->start . " - " . $thing->stop;          my $location =  $thing->start . " - " . $thing->stop;
1416    
# Line 1394  Line 1493 
1493      #color is      #color is
1494      my $color = "6";      my $color = "6";
1495    
1496  =pod=  =head3
1497    
1498      if($cello_location){      if($cello_location){
1499          my $cello_descriptions = [];          my $cello_descriptions = [];
# Line 1637  Line 1736 
1736  =cut  =cut
1737    
1738  sub display {  sub display {
1739      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"){  
1740    
1741        # declare variables
1742        my $window_size = $gd->window_size;
1743              my $peg = $thing->acc;              my $peg = $thing->acc;
1744              my $query = $thing->query;      my $query_id = $thing->query;
   
1745              my $organism = $thing->organism;              my $organism = $thing->organism;
1746        my $abbrev_name = $fig->abbrev($organism);
1747        if (!$organism){
1748          $organism = $peg;
1749          $abbrev_name = $peg;
1750        }
1751              my $genome = $fig->genome_of($peg);              my $genome = $fig->genome_of($peg);
1752              my ($org_tax) = ($genome) =~ /(.*)\./;              my ($org_tax) = ($genome) =~ /(.*)\./;
1753              my $function = $thing->function;              my $function = $thing->function;
1754              my $abbrev_name = $fig->abbrev($organism);      my $query_start = $thing->qstart;
1755              my $align_start = $thing->qstart;      my $query_stop = $thing->qstop;
             my $align_stop = $thing->qstop;  
1756              my $hit_start = $thing->hstart;              my $hit_start = $thing->hstart;
1757              my $hit_stop = $thing->hstop;              my $hit_stop = $thing->hstop;
1758        my $ln_query = $thing->qlength;
1759        my $ln_hit = $thing->hlength;
1760        my $query_color = match_color($query_start, $query_stop, $ln_query, 1);
1761        my $hit_color = match_color($hit_start, $hit_stop, $ln_hit, 1);
1762    
1763              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;
1764    
1765        # hit sequence title
1766              my $line_config = { 'title' => "$organism [$org_tax]",              my $line_config = { 'title' => "$organism [$org_tax]",
1767                                  'short_title' => "$abbrev_name",                                  'short_title' => "$abbrev_name",
1768                                  'title_link' => '$tax_link',                                  'title_link' => '$tax_link',
1769                                  'basepair_offset' => '0'                                  'basepair_offset' => '0'
1770                                  };                                  };
1771    
1772        # query sequence title
1773        my $replace_id = $peg;
1774        $replace_id =~ s/\|/_/ig;
1775        my $anchor_name = "anchor_". $replace_id;
1776        my $query_config = { 'title' => "Query",
1777                             'short_title' => "Query",
1778                             'title_link' => "changeSimsLocation('$replace_id', 1)",
1779                             'basepair_offset' => '0'
1780                             };
1781              my $line_data = [];              my $line_data = [];
1782        my $query_data = [];
1783    
1784              my $element_hash;              my $element_hash;
1785              my $links_list = [];      my $hit_links_list = [];
1786              my $descriptions = [];      my $hit_descriptions = [];
1787        my $query_descriptions = [];
1788              # get subsystem information  
1789              my $url_link = "?page=Annotation&feature=".$peg;      # get sequence information
1790              my $link;      # evidence link
1791              $link = {"link_title" => $peg,      my $evidence_link;
1792                       "link" => $url_link};      if ($peg =~ /^fig\|/){
1793              push(@$links_list,$link);        $evidence_link = "?page=Evidence&feature=".$peg;
1794        }
1795        else{
1796          my $db = &Observation::get_database($peg);
1797          my ($link_id) = ($peg) =~ /\|(.*)/;
1798          $evidence_link = &HTML::alias_url($link_id, $db);
1799          #print STDERR "LINK: $db    $evidence_link";
1800        }
1801        my $link = {"link_title" => $peg,
1802                    "link" => $evidence_link};
1803        push(@$hit_links_list,$link) if ($evidence_link);
1804    
1805              #my @subsystems = $fig->peg_to_subsystems($peg);      # subsystem link
1806              my @subs = @{$in_subs{$peg}} if (defined $in_subs{$peg});      my $subs = $in_subs->{$peg} if (defined $in_subs->{$peg});
1807              my @subsystems;              my @subsystems;
1808        foreach my $array (@$subs){
             foreach my $array (@subs){  
1809                  my $subsystem = $$array[0];                  my $subsystem = $$array[0];
1810                  push(@subsystems,$subsystem);                  push(@subsystems,$subsystem);
1811                  my $link;          my $link = {"link" => "?page=Subsystems&subsystem=$subsystem",
                 $link = {"link" => "?page=Subsystems&subsystem=$subsystem",  
1812                           "link_title" => $subsystem};                           "link_title" => $subsystem};
1813                  push(@$links_list,$link);          push(@$hit_links_list,$link);
1814              }              }
1815    
1816        # blast alignment
1817              $link = {"link_title" => "view blast alignment",              $link = {"link_title" => "view blast alignment",
1818                       "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"};
1819              push (@$links_list,$link);      push (@$hit_links_list,$link) if ($peg =~ /^fig\|/);
1820    
1821        # description data
1822              my $description_function;              my $description_function;
1823              $description_function = {"title" => "function",              $description_function = {"title" => "function",
1824                                       "value" => $function};                                       "value" => $function};
1825              push(@$descriptions,$description_function);      push(@$hit_descriptions,$description_function);
1826    
1827              my ($description_ss, $ss_string);      # subsystem description
1828              $ss_string = join (",", @subsystems);      my $ss_string = join (",", @subsystems);
1829              $description_ss = {"title" => "subsystems",      $ss_string =~ s/_/ /ig;
1830        my $description_ss = {"title" => "subsystems",
1831                                 "value" => $ss_string};                                 "value" => $ss_string};
1832              push(@$descriptions,$description_ss);      push(@$hit_descriptions,$description_ss);
1833    
1834        # location description
1835        # hit
1836              my $description_loc;              my $description_loc;
1837              $description_loc = {"title" => "location start",      $description_loc = {"title" => "Hit Location",
1838                                  "value" => $hit_start};                          "value" => $hit_start . " - " . $hit_stop};
1839              push(@$descriptions, $description_loc);      push(@$hit_descriptions, $description_loc);
   
             $description_loc = {"title" => "location stop",  
                                 "value" => $hit_stop};  
             push(@$descriptions, $description_loc);  
1840    
1841        $description_loc = {"title" => "Sequence Length",
1842                            "value" => $ln_hit};
1843        push(@$hit_descriptions, $description_loc);
1844    
1845        # query
1846        $description_loc = {"title" => "Hit Location",
1847                            "value" => $query_start . " - " . $query_stop};
1848        push(@$query_descriptions, $description_loc);
1849    
1850        $description_loc = {"title" => "Sequence Length",
1851                            "value" => $ln_query};
1852        push(@$query_descriptions, $description_loc);
1853    
1854    
1855    
1856        # evalue score description
1857              my $evalue = $thing->evalue;              my $evalue = $thing->evalue;
1858              while ($evalue =~ /-0/)              while ($evalue =~ /-0/)
1859              {              {
# Line 1731  Line 1863 
1863              }              }
1864    
1865              my $color = &color($evalue);              my $color = &color($evalue);
   
1866              my $description_eval = {"title" => "E-Value",              my $description_eval = {"title" => "E-Value",
1867                                      "value" => $evalue};                                      "value" => $evalue};
1868              push(@$descriptions, $description_eval);      push(@$hit_descriptions, $description_eval);
1869        push(@$query_descriptions, $description_eval);
1870    
1871              my $identity = $self->identity;              my $identity = $self->identity;
1872              my $description_identity = {"title" => "Identity",              my $description_identity = {"title" => "Identity",
1873                                          "value" => $identity};                                          "value" => $identity};
1874              push(@$descriptions, $description_identity);      push(@$hit_descriptions, $description_identity);
1875        push(@$query_descriptions, $description_identity);
1876    
1877    
1878        my $number = $base_start + ($query_start-$hit_start);
1879        #print STDERR "START: $number";
1880        $element_hash = {
1881            "title" => $query_id,
1882            "start" => $base_start,
1883            "end" => $base_start+$ln_query,
1884            "type"=> 'box',
1885            "color"=> $color,
1886            "zlayer" => "2",
1887            "links_list" => $query_links_list,
1888            "description" => $query_descriptions
1889            };
1890        push(@$query_data,$element_hash);
1891    
1892        $element_hash = {
1893            "title" => $query_id . ': HIT AREA',
1894            "start" => $base_start + $query_start,
1895            "end" =>  $base_start + $query_stop,
1896            "type"=> 'smallbox',
1897            "color"=> $query_color,
1898            "zlayer" => "3",
1899            "links_list" => $query_links_list,
1900            "description" => $query_descriptions
1901            };
1902        push(@$query_data,$element_hash);
1903    
1904        $gd->add_line($query_data, $query_config);
1905    
1906    
1907              $element_hash = {              $element_hash = {
1908                  "title" => $peg,                  "title" => $peg,
1909                  "start" => $align_start,                  "start" => $base_start + ($query_start-$hit_start),
1910                  "end" =>  $align_stop,                  "end" => $base_start + (($query_start-$hit_start)+$ln_hit),
1911                  "type"=> 'box',                  "type"=> 'box',
1912                  "color"=> $color,                  "color"=> $color,
1913                  "zlayer" => "2",                  "zlayer" => "2",
1914                  "links_list" => $links_list,                  "links_list" => $hit_links_list,
1915                  "description" => $descriptions                  "description" => $hit_descriptions
1916                  };                  };
1917              push(@$line_data,$element_hash);              push(@$line_data,$element_hash);
1918    
1919        $element_hash = {
1920            "title" => $peg . ': HIT AREA',
1921            "start" => $base_start + $query_start,
1922            "end" =>  $base_start + $query_stop,
1923            "type"=> 'smallbox',
1924            "color"=> $hit_color,
1925            "zlayer" => "3",
1926            "links_list" => $hit_links_list,
1927            "description" => $hit_descriptions
1928            };
1929        push(@$line_data,$element_hash);
1930    
1931              $gd->add_line($line_data, $line_config);              $gd->add_line($line_data, $line_config);
1932          }  
1933      }      my $breaker = [];
1934        my $breaker_hash = {};
1935        my $breaker_config = { 'no_middle_line' => "1" };
1936    
1937        push (@$breaker, $breaker_hash);
1938        $gd->add_line($breaker, $breaker_config);
1939    
1940      return ($gd);      return ($gd);
1941  }  }
1942    
# Line 1800  Line 1982 
1982              }              }
1983          }          }
1984    
1985          my $dbmaster = DBMaster->new(-database =>'Ontology');          my $dbmaster = DBMaster->new(-database =>'Ontology',
1986                                    -host     => $WebConfig::DBHOST,
1987                                    -user     => $WebConfig::DBUSER,
1988                                    -password => $WebConfig::DBPWD);
1989          my ($name_value,$description_value);          my ($name_value,$description_value);
1990    
1991          if($db eq "CDD"){          if($db eq "CDD"){
# Line 1837  Line 2022 
2022          my $link;          my $link;
2023          my $link_url;          my $link_url;
2024          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"}
2025          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"}
2026          else{$link_url = "NO_URL"}          else{$link_url = "NO_URL"}
2027    
2028          $link = {"link_title" => $name_value,          $link = {"link_title" => $name_value,
# Line 1886  Line 2071 
2071      my $data = [];      my $data = [];
2072      my $count = 0;      my $count = 0;
2073      my $content;      my $content;
     #my $fig = new FIG;  
2074      my $cgi = new CGI;      my $cgi = new CGI;
2075      my @ids;      my @ids;
2076        $lineages = $fig->taxonomy_list();
2077    
2078      foreach my $thing (@$dataset) {      foreach my $thing (@$dataset) {
2079          next if ($thing->class ne "SIM");          next if ($thing->class ne "SIM");
2080          push (@ids, $thing->acc);          push (@ids, $thing->acc);
2081      }      }
2082    
2083      my (%box_column, %subsystems_column, %evidence_column, %e_identical);      my (%box_column, %subsystems_column, %evidence_column, %e_identical, $function_color);
2084      my @attributes = $fig->get_attributes(\@ids);      my @attributes = $fig->get_attributes(\@ids);
2085    
2086      # get the column for the subsystems      # get the column for the subsystems
# Line 1906  Line 2092 
2092      # get the column for pfam_domain      # get the column for pfam_domain
2093      %pfam_column = &get_pfam_column(\@ids, \@attributes,$fig);      %pfam_column = &get_pfam_column(\@ids, \@attributes,$fig);
2094    
2095        # get the colors for the function cell
2096        my $functions = $fig->function_of_bulk(\@ids,1);
2097        $function_color = &get_function_color_cell($functions, $fig);
2098        my $query_function = $fig->function_of($query_fid);
2099    
2100      my %e_identical = &get_essentially_identical($query_fid,$dataset,$fig);      my %e_identical = &get_essentially_identical($query_fid,$dataset,$fig);
2101      my $alias_col = &get_aliases(\@ids,$fig);      my $alias_col = &get_aliases(\@ids,$fig);
2102      #my $alias_col = {};      #my $alias_col = {};
2103    
2104        my $figfam_data = &FIG::get_figfams_data();
2105        my $figfams = new FFs($figfam_data);
2106    
2107        my $func_color_offset=0;
2108      foreach my $thing (@$dataset) {      foreach my $thing (@$dataset) {
2109          next if ($thing->class ne "SIM");          next if ($thing->class ne "SIM");
2110          my $single_domain = [];          my $single_domain = [];
# Line 1926  Line 2121 
2121          my $e2      = $thing->hstop;          my $e2      = $thing->hstop;
2122          my $d1      = abs($e1 - $b1) + 1;          my $d1      = abs($e1 - $b1) + 1;
2123          my $d2      = abs($e2 - $b2) + 1;          my $d2      = abs($e2 - $b2) + 1;
2124          my $reg1    = "$b1-$e1 (<b>$d1/$ln1</b>)";          my $color1  = match_color( $b1, $e1, $ln1 );
2125          my $reg2    = "$b2-$e2 (<b>$d2/$ln2</b>)";          my $color2  = match_color( $b2, $e2, $ln2 );
2126            my $reg1    = {'data'=> "$b1-$e1 (<b>$d1/$ln1</b>)", 'highlight' => $color1};
2127            my $reg2    = {'data'=> "$b2-$e2 (<b>$d2/$ln2</b>)", 'highlight' => $color2};
2128    
2129            # organisms cell
2130            my ($org, $org_color) = $fig->org_and_color_of($id);
2131            my $org_cell = { 'data' =>  $thing->organism, 'highlight' => $org_color};
2132    
2133          # checkbox column          # checkbox cell
2134            my ($box_cell,$tax);
2135          my $field_name = "tables_" . $id;          my $field_name = "tables_" . $id;
2136          my $pair_name = "visual_" . $id;          my $pair_name = "visual_" . $id;
2137          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;
2138          my ($tax) = ($id) =~ /fig\|(.*?)\./;          my $replace_id = $id;
2139            $replace_id =~ s/\|/_/ig;
2140            my $anchor_name = "anchor_". $replace_id;
2141            if ($id =~ /^fig\|/){
2142              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');">);
2143              $box_cell = { 'data'=>$box, 'highlight'=>$org_color};
2144              ($tax) = ($id) =~ /fig\|(.*?)\./;
2145            }
2146            else{
2147              my $box = qq(<a name="$anchor_name"></a>);
2148              $box_cell = { 'data'=>$box, 'highlight'=>$org_color};
2149            }
2150    
2151          # get the linked fig id          # get the linked fig id
2152          my $fig_col;          my $anchor_link = "graph_" . $replace_id;
2153          if (defined ($e_identical{$id})){          my $fig_data =  "<table><tr><td>" . &HTML::set_prot_links($cgi,$id) . "</td>" . "&nbsp;" x 2;
2154              $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='./Html/anchor_alignment' alt='View Graphic View of Alignment' onClick='changeSimsLocation("$anchor_link", 0)'/></td></tr></table>);
2155            my $fig_col = {'data'=> $fig_data,
2156                           'highlight'=>"#ffffff"};
2157    
2158        my $replace_id = $peg;
2159        $replace_id =~ s/\|/_/ig;
2160        my $anchor_name = "anchor_". $replace_id;
2161        my $query_config = { 'title' => "Query",
2162                             'short_title' => "Query",
2163                             'title_link' => "changeSimsLocation('$replace_id')",
2164                             'basepair_offset' => '0'
2165                             };
2166            # function cell
2167            my $function_cell_colors = {0=>"#ffffff", 1=>"#eeccaa", 2=>"#ffaaaa",
2168                                        3=>"#ffcc66", 4=>"#ffff00", 5=>"#aaffaa",
2169                                        6=>"#bbbbff", 7=>"#ffaaff", 8=>"#dddddd"};
2170            my $current_function =  $thing->function;
2171            my $function_color = $function_cell_colors->{ $function_color->{$current_function} - $func_color_offset};
2172            my $function_cell;
2173            if ($current_function){
2174              if ($current_function eq $query_function){
2175                $function_cell = {'data'=>$current_function, 'highlight'=>$function_cell_colors->{0}};
2176                $func_color_offset=1;
2177              }
2178              else{
2179                $function_cell = {'data'=>$current_function,'highlight' => $function_color};
2180              }
2181          }          }
2182          else{          else{
2183              $fig_col = "<a href='?page=Annotation&feature=$id'>$id</a>";#&HTML::set_prot_links($cgi,$id);            $function_cell = {'data'=>$current_function,'highlight' => "#dddddd"};
2184          }          }
2185    
2186          push (@$single_domain, $box_col, $fig_col, $thing->evalue,          push (@$single_domain, $box_cell, $fig_col, {'data'=> $thing->evalue, 'highlight'=>"#ffffff"},
2187                "$iden\%", $reg1, $reg2, $thing->organism, $thing->function);   # permanent columns                 {'data'=>"$iden\%", 'highlight'=>"#ffffff"}, $reg1, $reg2, $org_cell, $function_cell);   # permanent columns
2188    
2189            my ($ff) = $figfams->families_containing_peg($id);
2190    
2191          foreach my $col (sort keys %$scroll_list){          foreach my $col (sort keys %$scroll_list){
2192              if ($col =~ /associated_subsystem/)          {push(@$single_domain,$subsystems_column{$id});}              if ($col =~ /associated_subsystem/)          {push(@$single_domain,{'data'=>$subsystems_column{$id},'highlight'=>"#ffffff"});}
2193              elsif ($col =~ /evidence/)                   {push(@$single_domain,$evidence_column{$id});}              elsif ($col =~ /evidence/)                   {push(@$single_domain,{'data'=>$evidence_column{$id},'highlight'=>"#ffffff"});}
2194              elsif ($col =~ /pfam_domains/)               {push(@$single_domain,$pfam_column{$id});}              elsif ($col =~ /pfam_domains/)               {push(@$single_domain,{'data'=>$pfam_column{$id},'highlight'=>"#ffffff"});}
2195              elsif ($col =~ /ncbi_id/)                    {push(@$single_domain,$alias_col->{$id}->{"NCBI"});}              elsif ($col =~ /ncbi_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"NCBI"},'highlight'=>"#ffffff"});}
2196              elsif ($col =~ /refseq_id/)                  {push(@$single_domain,$alias_col->{$id}->{"RefSeq"});}              elsif ($col =~ /refseq_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"RefSeq"},'highlight'=>"#ffffff"});}
2197              elsif ($col =~ /swissprot_id/)               {push(@$single_domain,$alias_col->{$id}->{"SwissProt"});}              elsif ($col =~ /swissprot_id/)               {push(@$single_domain,{'data'=>$alias_col->{$id}->{"SwissProt"},'highlight'=>"#ffffff"});}
2198              elsif ($col =~ /uniprot_id/)                 {push(@$single_domain,$alias_col->{$id}->{"UniProt"});}              elsif ($col =~ /uniprot_id/)                 {push(@$single_domain,{'data'=>$alias_col->{$id}->{"UniProt"},'highlight'=>"#ffffff"});}
2199              elsif ($col =~ /tigr_id/)                    {push(@$single_domain,$alias_col->{$id}->{"TIGR"});}              elsif ($col =~ /tigr_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TIGR"},'highlight'=>"#ffffff"});}
2200              elsif ($col =~ /pir_id/)                     {push(@$single_domain,$alias_col->{$id}->{"PIR"});}              elsif ($col =~ /pir_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"PIR"},'highlight'=>"#ffffff"});}
2201              elsif ($col =~ /kegg_id/)                    {push(@$single_domain,$alias_col->{$id}->{"KEGG"});}              elsif ($col =~ /kegg_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"KEGG"},'highlight'=>"#ffffff"});}
2202              #elsif ($col =~ /trembl_id/)                  {push(@$single_domain,$alias_col->{$id}->{"TrEMBL"});}              #elsif ($col =~ /trembl_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TrEMBL"},'highlight'=>"#ffffff"});}
2203              elsif ($col =~ /asap_id/)                    {push(@$single_domain,$alias_col->{$id}->{"ASAP"});}              elsif ($col =~ /asap_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"ASAP"},'highlight'=>"#ffffff"});}
2204              elsif ($col =~ /jgi_id/)                     {push(@$single_domain,$alias_col->{$id}->{"JGI"});}              elsif ($col =~ /jgi_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"JGI"},'highlight'=>"#ffffff"});}
2205              #elsif ($col =~ /taxonomy/)                   {push(@$single_domain,$lineages->{$tax});}              elsif ($col =~ /taxonomy/)                   {push(@$single_domain,{'data'=>$lineages->{$tax},'highlight'=>"#ffffff"});}
2206              elsif ($col =~ /taxonomy/)                   {push(@$single_domain,$fig->taxonomy_of($taxid));}              #elsif ($col =~ /taxonomy/)                   {push(@$single_domain,$fig->taxonomy_of($taxid));}
2207                #elsif ($col =~ /figfam/)                     {push(@$single_domain,"<a href='?page=FigFamViewer&figfam=" . $ff_hash->{$id} . "' target='_new'>" . $ff_hash->{$id} . "</a>");}
2208                elsif ($col =~ /figfam/)                     {push(@$single_domain,{'data'=>"<a href='?page=FigFamViewer&figfam=" . $ff . "' target='_new'>" . $ff . "</a>",'highlight'=>"#ffffff"});}
2209          }          }
2210          push(@$data,$single_domain);          push(@$data,$single_domain);
2211      }      }
# Line 1981  Line 2224 
2224      foreach my $id (@$ids){      foreach my $id (@$ids){
2225          my $field_name = "tables_" . $id;          my $field_name = "tables_" . $id;
2226          my $pair_name = "visual_" . $id;          my $pair_name = "visual_" . $id;
2227          $column{$id} = qq(<input type=checkbox name=seq value="$id" id="$field_name" onClick="VisualCheckPair('$field_name', '$pair_name');">);          my $cell_name = "cell_" . $id;
2228            $column{$id} = qq(<input type=checkbox name=seq value="$id" id="$field_name" onClick="VisualCheckPair('$field_name', '$pair_name', '$cell_name');">);
2229      }      }
2230      return (%column);      return (%column);
2231  }  }
# Line 2012  Line 2256 
2256      return (%column);      return (%column);
2257  }  }
2258    
2259    sub match_color {
2260        my ( $b, $e, $n , $rgb) = @_;
2261        my ( $l, $r ) = ( $e > $b ) ? ( $b, $e ) : ( $e, $b );
2262        my $hue = 5/6 * 0.5*($l+$r)/$n - 1/12;
2263        my $cov = ( $r - $l + 1 ) / $n;
2264        my $sat = 1 - 10 * $cov / 9;
2265        my $br  = 1;
2266        if ($rgb){
2267            return html2rgb( rgb2html( hsb2rgb( $hue, $sat, $br ) ) );
2268        }
2269        else{
2270            rgb2html( hsb2rgb( $hue, $sat, $br ) );
2271        }
2272    }
2273    
2274    sub hsb2rgb {
2275        my ( $h, $s, $br ) = @_;
2276        $h = 6 * ($h - floor($h));
2277        if ( $s  > 1 ) { $s  = 1 } elsif ( $s  < 0 ) { $s  = 0 }
2278        if ( $br > 1 ) { $br = 1 } elsif ( $br < 0 ) { $br = 0 }
2279        my ( $r, $g, $b ) = ( $h <= 3 ) ? ( ( $h <= 1 ) ? ( 1,      $h,     0      )
2280                                          : ( $h <= 2 ) ? ( 2 - $h, 1,      0      )
2281                                          :               ( 0,      1,      $h - 2 )
2282                                          )
2283                                        : ( ( $h <= 4 ) ? ( 0,      4 - $h, 1      )
2284                                          : ( $h <= 5 ) ? ( $h - 4, 0,      1      )
2285                                          :               ( 1,      0,      6 - $h )
2286                                          );
2287        ( ( $r * $s + 1 - $s ) * $br,
2288          ( $g * $s + 1 - $s ) * $br,
2289          ( $b * $s + 1 - $s ) * $br
2290        )
2291    }
2292    
2293    sub html2rgb {
2294        my ($hex) = @_;
2295        my ($r,$g,$b) = ($hex) =~ /^\#(\w\w)(\w\w)(\w\w)/;
2296        my $code = { 'A'=>10, 'B'=>11, 'C'=>12, 'D'=>13, 'E'=>14, 'F'=>15,
2297                     1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9};
2298    
2299        my @R = split(//, $r);
2300        my @G = split(//, $g);
2301        my @B = split(//, $b);
2302    
2303        my $red = ($code->{uc($R[0])}*16)+$code->{uc($R[1])};
2304        my $green = ($code->{uc($G[0])}*16)+$code->{uc($G[1])};
2305        my $blue = ($code->{uc($B[0])}*16)+$code->{uc($B[1])};
2306    
2307        my $rgb = [$red, $green, $blue];
2308        return $rgb;
2309    
2310    }
2311    
2312    sub rgb2html {
2313        my ( $r, $g, $b ) = @_;
2314        if ( $r > 1 ) { $r = 1 } elsif ( $r < 0 ) { $r = 0 }
2315        if ( $g > 1 ) { $g = 1 } elsif ( $g < 0 ) { $g = 0 }
2316        if ( $b > 1 ) { $b = 1 } elsif ( $b < 0 ) { $b = 0 }
2317        sprintf("#%02x%02x%02x", int(255.999*$r), int(255.999*$g), int(255.999*$b) )
2318    }
2319    
2320    sub floor {
2321        my $x = $_[0];
2322        defined( $x ) || return undef;
2323        ( $x >= 0 ) || ( int($x) == $x ) ? int( $x ) : -1 - int( - $x )
2324    }
2325    
2326    sub get_function_color_cell{
2327      my ($functions, $fig) = @_;
2328    
2329      # figure out the quantity of each function
2330      my %hash;
2331      foreach my $key (keys %$functions){
2332        my $func = $functions->{$key};
2333        $hash{$func}++;
2334      }
2335    
2336      my %func_colors;
2337      my $count = 1;
2338      foreach my $key (sort {$hash{$b}<=>$hash{$a}} keys %hash){
2339        $func_colors{$key}=$count;
2340        $count++;
2341      }
2342    
2343      return \%func_colors;
2344    }
2345    
2346  sub get_essentially_identical{  sub get_essentially_identical{
2347      my ($fid,$dataset,$fig) = @_;      my ($fid,$dataset,$fig) = @_;
2348      #my $fig = new FIG;      #my $fig = new FIG;
# Line 2084  Line 2415 
2415      #my $fig = new FIG;      #my $fig = new FIG;
2416      my $cgi = new CGI;      my $cgi = new CGI;
2417      my (%column, %code_attributes, %attribute_locations);      my (%column, %code_attributes, %attribute_locations);
2418      my $dbmaster = DBMaster->new(-database =>'Ontology');      my $dbmaster = DBMaster->new(-database =>'Ontology',
2419                                    -host     => $WebConfig::DBHOST,
2420                                    -user     => $WebConfig::DBUSER,
2421                                    -password => $WebConfig::DBPWD);
2422    
2423      my @codes = grep { $_->[1] =~ /^PFAM/i } @$attributes;      my @codes = grep { $_->[1] =~ /^PFAM/i } @$attributes;
2424      foreach my $key (@codes){      foreach my $key (@codes){
# Line 2113  Line 2447 
2447    
2448              foreach my $code (@ncodes) {              foreach my $code (@ncodes) {
2449                  my @parts = split("::",$code);                  my @parts = split("::",$code);
2450                  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>";
2451    
2452                  # get the locations for the domain                  # get the locations for the domain
2453                  my @locs;                  my @locs;
# Line 2195  Line 2529 
2529  sub display {  sub display {
2530      my ($self,$gd,$selected_taxonomies,$taxes,$sims_array,$fig) = @_;      my ($self,$gd,$selected_taxonomies,$taxes,$sims_array,$fig) = @_;
2531    
2532        $taxes = $fig->taxonomy_list();
2533    
2534      my $fid = $self->fig_id;      my $fid = $self->fig_id;
2535      my $compare_or_coupling = $self->context;      my $compare_or_coupling = $self->context;
2536      my $gd_window_size = $gd->window_size;      my $gd_window_size = $gd->window_size;
# Line 2268  Line 2604 
2604                  #my $genome = $fig->genome_of($sim->[1]);                  #my $genome = $fig->genome_of($sim->[1]);
2605                  my $genome = $fig->genome_of($sim->acc);                  my $genome = $fig->genome_of($sim->acc);
2606                  #my ($genome1) = ($genome) =~ /(.*)\./;                  #my ($genome1) = ($genome) =~ /(.*)\./;
2607                  #my $lineage = $taxes->{$genome1};                  my $lineage = $taxes->{$genome};
2608                  my $lineage = $fig->taxonomy_of($fig->genome_of($genome));                  #my $lineage = $fig->taxonomy_of($fig->genome_of($genome));
2609                  foreach my $taxon(@selected_taxonomy){                  foreach my $taxon(@selected_taxonomy){
2610                      if ($lineage =~ /$taxon/){                      if ($lineage =~ /$taxon/){
2611                          #push (@selected_sims, $sim->[1]);                          #push (@selected_sims, $sim->[1]);
# Line 2351  Line 2687 
2687          my $region_gs = $fig->genus_species($region_genome);          my $region_gs = $fig->genus_species($region_genome);
2688          my $abbrev_name = $fig->abbrev($region_gs);          my $abbrev_name = $fig->abbrev($region_gs);
2689          #my ($genome1) = ($region_genome) =~ /(.*?)\./;          #my ($genome1) = ($region_genome) =~ /(.*?)\./;
2690          #my $lineage = $taxes->{$genome1};          my $lineage = $taxes->{$region_genome};
2691          my $lineage = $fig->taxonomy_of($region_genome);          #my $lineage = $fig->taxonomy_of($region_genome);
2692          #$region_gs .= "Lineage:$lineage";          #$region_gs .= "Lineage:$lineage";
2693          my $line_config = { 'title' => $region_gs,          my $line_config = { 'title' => $region_gs,
2694                              'short_title' => $abbrev_name,                              'short_title' => $abbrev_name,
# Line 2442  Line 2778 
2778                  $prev_stop = $stop;                  $prev_stop = $stop;
2779                  $prev_fig = $fid1;                  $prev_fig = $fid1;
2780    
2781                  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})){
2782                      $start = $gd_window_size - $start;                      $start = $gd_window_size - $start;
2783                      $stop = $gd_window_size - $stop;                      $stop = $gd_window_size - $stop;
2784                  }                  }
# Line 2682  Line 3018 
3018    
3019      return($content);      return($content);
3020  }  }
3021    

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3