[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.59, Mon Jun 2 05:05:35 2008 UTC revision 1.68, Sun Aug 24 15:00:17 2008 UTC
# 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    =head
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()  =head3 get_sims_objects()
388    
389  This is the B<REAL WORKHORSE> method of this Package.  This is the B<REAL WORKHORSE> method of this Package.
# Line 410  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 466  Line 479 
479          my @currLineage = ($parent_tax);          my @currLineage = ($parent_tax);
480          push (@{$families{figs}{$parent_tax}}, $id);          push (@{$families{figs}{$parent_tax}}, $id);
481          my $level = 2;          my $level = 2;
482          foreach my $tax (split(/\; /, $taxonomy)){          foreach my $tax (split(/\; /, $taxonomy),$id){
483              push (@{$families{children}{$parent_tax}}, $tax) if ($tax ne $parent_tax);              push (@{$families{children}{$parent_tax}}, $tax) if ($tax ne $parent_tax);
484              push (@{$families{figs}{$tax}}, $id) if ($tax ne $parent_tax);              push (@{$families{figs}{$tax}}, $id) if ($tax ne $parent_tax);
485              $families{level}{$tax} = $level;              $families{level}{$tax} = $level;
# Line 530  Line 543 
543    
544      # 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)
545      my ($fid,$domain_classes,$datasets_ref,$attributes_ref,$fig) = (@_);      my ($fid,$domain_classes,$datasets_ref,$attributes_ref,$fig) = (@_);
546        my $seen = {};
547      foreach my $attr_ref (@$attributes_ref) {      foreach my $attr_ref (@$attributes_ref) {
548          my $key = @$attr_ref[1];          my $key = @$attr_ref[1];
549          my @parts = split("::",$key);          my @parts = split("::",$key);
550          my $class = $parts[0];          my $class = $parts[0];
551          my $name = $parts[1];          my $name = $parts[1];
552            next if ($seen->{$name});
553            $seen->{$name}++;
554          #next if (($class eq "PFAM") && ($name !~ /interpro/));          #next if (($class eq "PFAM") && ($name !~ /interpro/));
555    
556          if($domain_classes->{$parts[0]}){          if($domain_classes->{$parts[0]}){
# Line 695  Line 710 
710  sub get_sims_observations{  sub get_sims_observations{
711      my ($fid,$datasets_ref,$fig,$parameters) = (@_);      my ($fid,$datasets_ref,$fig,$parameters) = (@_);
712    
713      my ($max_sims, $max_expand, $max_eval, $sim_order, $db_filter);      my ($max_sims, $max_expand, $max_eval, $sim_order, $db_filter, $sim_filters);
714      if ($parameters->{flag}){      if ( (defined $parameters->{flag}) && ($parameters->{flag})){
715        $max_sims = $parameters->{max_sims};        $max_sims = $parameters->{max_sims};
716        $max_expand = $parameters->{max_expand};        $max_expand = $parameters->{max_expand};
717        $max_eval = $parameters->{max_eval};        $max_eval = $parameters->{max_eval};
718        $db_filter = $parameters->{db_filter};        $db_filter = $parameters->{db_filter};
719        $sim_order = $parameters->{sim_order};        $sim_filters->{ sort_by } = $parameters->{sim_order};
720          #$sim_order = $parameters->{sim_order};
721        $group_by_genome = 1 if (defined ($parameters->{group_genome}));        $group_by_genome = 1 if (defined ($parameters->{group_genome}));
722      }      }
723        elsif ( (defined $parameters->{sims_db}) && ($parameters->{sims_db} eq 'all')){
724          $max_sims = 50;
725          $max_expand = 5;
726          $max_eval = 1e-5;
727          $db_filter = "all";
728          $sim_filters->{ sort_by } = 'id';
729        }
730      else{      else{
731        $max_sims = 50;        $max_sims = 50;
732        $max_expand = 5;        $max_expand = 5;
733        $max_eval = 1e-5;        $max_eval = 1e-5;
734        $db_filter = "figx";        $db_filter = "figx";
735        $sim_order = "id";        $sim_filters->{ sort_by } = 'id';
736          #$sim_order = "id";
737      }      }
738    
739      my($id, $genome, @genomes, %sims);      my($id, $genome, @genomes, %sims);
740      my @tmp= $fig->sims($fid,$max_sims,$max_eval,$db_filter,$max_expand);      my @tmp= $fig->sims($fid,$max_sims,$max_eval,$db_filter,$max_expand,$sim_filters);
741      @tmp = grep { !($_->id2 =~ /^fig\|/ and $fig->is_deleted_fid($_->id2)) } @tmp;      @tmp = grep { !($_->id2 =~ /^fig\|/ and $fig->is_deleted_fid($_->id2)) } @tmp;
742      my ($dataset);      my ($dataset);
743    
# Line 728  Line 752 
752        @tmp = map { @{ $sims{$_} } } @genomes;        @tmp = map { @{ $sims{$_} } } @genomes;
753      }      }
754    
755        my $seen_sims={};
756      foreach my $sim (@tmp){      foreach my $sim (@tmp){
757          my $hit = $sim->[1];          my $hit = $sim->[1];
758            next if ($seen_sims->{$hit});
759            $seen_sims->{$hit}++;
760          my $percent = $sim->[2];          my $percent = $sim->[2];
761          my $evalue = $sim->[10];          my $evalue = $sim->[10];
762          my $qfrom = $sim->[6];          my $qfrom = $sim->[6];
# Line 740  Line 767 
767          my $hlength = $sim->[13];          my $hlength = $sim->[13];
768          my $db = get_database($hit);          my $db = get_database($hit);
769          my $func = $fig->function_of($hit);          my $func = $fig->function_of($hit);
770          my $organism = $fig->org_of($hit);          my $organism;
771            if ($fig->org_of($hit)){
772                $organism = $fig->org_of($hit);
773            }
774            else{
775                $organism = "Data not available";
776            }
777    
778          $dataset = {'class' => 'SIM',          $dataset = {'class' => 'SIM',
779                      'query' => $sim->[0],                      'query' => $sim->[0],
# Line 1134  Line 1167 
1167          my $id = $row->[0];          my $id = $row->[0];
1168          my $who = $row->[1];          my $who = $row->[1];
1169          my $assignment = $row->[2];          my $assignment = $row->[2];
1170          my $organism = $fig->org_of($id);          my $organism = "Data not available";
1171            if ($fig->org_of($id)){
1172                $organism = $fig->org_of($id);
1173            }
1174          my $single_domain = [];          my $single_domain = [];
1175          push(@$single_domain,$who);          push(@$single_domain,$who);
1176          push(@$single_domain,&HTML::set_prot_links($cgi,$id));          push(@$single_domain,"<a href='?page=Annotation&feature=$id'>$id</a>");
1177          push(@$single_domain,$organism);          push(@$single_domain,$organism);
1178          push(@$single_domain,$assignment);          push(@$single_domain,$assignment);
1179          push(@$all_domains,$single_domain);          push(@$all_domains,$single_domain);
# Line 1757  Line 1793 
1793      my $hit_stop = $thing->hstop;      my $hit_stop = $thing->hstop;
1794      my $ln_query = $thing->qlength;      my $ln_query = $thing->qlength;
1795      my $ln_hit = $thing->hlength;      my $ln_hit = $thing->hlength;
1796      my $query_color = match_color($query_start, $query_stop, $ln_query, 1);  #    my $query_color = match_color($query_start, $query_stop, $ln_query, 1);
1797      my $hit_color = match_color($hit_start, $hit_stop, $ln_hit, 1);  #    my $hit_color = match_color($hit_start, $hit_stop, $ln_hit, 1);
1798        my $query_color = match_color($query_start, $query_stop, abs($query_stop-$query_start), 1);
1799        my $hit_color = match_color($hit_start, $hit_stop, abs($query_stop-$query_start), 1);
1800    
1801      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;
1802    
# Line 1766  Line 1804 
1804      my $line_config = { 'title' => "$organism [$org_tax]",      my $line_config = { 'title' => "$organism [$org_tax]",
1805                          'short_title' => "$abbrev_name",                          'short_title' => "$abbrev_name",
1806                          'title_link' => '$tax_link',                          'title_link' => '$tax_link',
1807                          'basepair_offset' => '0'                          'basepair_offset' => '0',
1808                            'no_middle_line' => '1'
1809                          };                          };
1810    
1811      # query sequence title      # query sequence title
# Line 1776  Line 1815 
1815      my $query_config = { 'title' => "Query",      my $query_config = { 'title' => "Query",
1816                           'short_title' => "Query",                           'short_title' => "Query",
1817                           'title_link' => "changeSimsLocation('$replace_id', 1)",                           'title_link' => "changeSimsLocation('$replace_id', 1)",
1818                           'basepair_offset' => '0'                           'basepair_offset' => '0',
1819                             'no_middle_line' => '1'
1820                           };                           };
1821      my $line_data = [];      my $line_data = [];
1822      my $query_data = [];      my $query_data = [];
# Line 1790  Line 1830 
1830      # evidence link      # evidence link
1831      my $evidence_link;      my $evidence_link;
1832      if ($peg =~ /^fig\|/){      if ($peg =~ /^fig\|/){
1833        $evidence_link = "?page=Evidence&feature=".$peg;        $evidence_link = "?page=Annotation&feature=".$peg;
1834      }      }
1835      else{      else{
1836        my $db = &Observation::get_database($peg);        my $db = &Observation::get_database($peg);
# Line 2066  Line 2106 
2106  =cut  =cut
2107    
2108  sub display_table {  sub display_table {
2109      my ($self,$dataset, $scroll_list, $query_fid,$lineages,$fig) = @_;      my ($self,$dataset, $show_columns, $query_fid, $fig, $application, $cgi) = @_;
2110        my ($count, $data, $content, %box_column, $subsystems_column, $evidence_column, %e_identical, $function_color, @ids);
2111    
2112      my $data = [];      my $scroll_list;
2113      my $count = 0;      foreach my $col (@$show_columns){
2114      my $content;          push (@$scroll_list, $col->{key});
2115      my $cgi = new CGI;      }
     my @ids;  
     $lineages = $fig->taxonomy_list();  
2116    
2117        push (@ids, $query_fid);
2118      foreach my $thing (@$dataset) {      foreach my $thing (@$dataset) {
2119          next if ($thing->class ne "SIM");          next if ($thing->class ne "SIM");
2120          push (@ids, $thing->acc);          push (@ids, $thing->acc);
2121      }      }
2122    
2123      my (%box_column, %subsystems_column, %evidence_column, %e_identical, $function_color);      $lineages = $fig->taxonomy_list() if (grep /lineage/, @$scroll_list);
2124      my @attributes = $fig->get_attributes(\@ids);      my @attributes = $fig->get_attributes(\@ids) if ( (grep /evidence/, @$scroll_list) || (grep /(pfam|mw)/, @$scroll_list) );
2125    
2126      # get the column for the subsystems      # get the column for the subsystems
2127      %subsystems_column = &get_subsystems_column(\@ids,$fig);      $subsystems_column = &get_subsystems_column(\@ids,$fig,$cgi,'hash') if (grep /subsystem/, @$scroll_list);
2128    
2129      # get the column for the evidence codes      # get the column for the evidence codes
2130      %evidence_column = &get_evidence_column(\@ids, \@attributes,$fig);      $evidence_column = &get_evidence_column(\@ids, \@attributes, $fig, $cgi, 'hash') if (grep /^evidence$/, @$scroll_list);
2131    
2132      # get the column for pfam_domain      # get the column for pfam_domain
2133      %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);
2134    
2135        # get the column for molecular weight
2136        $mw_column = &get_attrb_column(\@ids, \@attributes, $fig, $cgi, 'mw', 'molecular_weight', 'hash') if (grep /^mw$/, @$scroll_list);
2137    
2138        # get the column for organism's habitat
2139        my $habitat_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'habitat', 'Habitat', 'hash') if (grep /^habitat$/, @$scroll_list);
2140    
2141        # get the column for organism's temperature optimum
2142        my $temperature_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'temperature', 'Optimal_Temperature', 'hash') if (grep /^temperature$/, @$scroll_list);
2143    
2144        # get the column for organism's temperature range
2145        my $temperature_range_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'temp_range', 'Temperature_Range', 'hash') if (grep /^temp_range$/, @$scroll_list);
2146    
2147        # get the column for organism's oxygen requirement
2148        my $oxygen_req_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'oxygen', 'Oxygen_Requirement', 'hash') if (grep /^oxygen$/, @$scroll_list);
2149    
2150        # get the column for organism's pathogenicity
2151        my $pathogenic_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'pathogenic', 'Pathogenic', 'hash') if (grep /^pathogenic$/, @$scroll_list);
2152    
2153        # get the column for organism's pathogenicity host
2154        my $pathogenic_in_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'pathogenic_in', 'Pathogenic_In', 'hash') if (grep /^pathogenic_in$/, @$scroll_list);
2155    
2156        # get the column for organism's salinity
2157        my $salinity_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'salinity', 'Salinity', 'hash') if (grep /^salinity$/, @$scroll_list);
2158    
2159        # get the column for organism's motility
2160        my $motility_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'motility', 'Motility', 'hash') if (grep /^motility$/, @$scroll_list);
2161    
2162        # get the column for organism's gram stain
2163        my $gram_stain_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'gram_stain', 'Gram_Stain', 'hash') if (grep /^gram_stain$/, @$scroll_list);
2164    
2165        # get the column for organism's endospores
2166        my $endospores_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'endospores', 'Endospores', 'hash') if (grep /^endospores$/, @$scroll_list);
2167    
2168        # get the column for organism's shape
2169        my $shape_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'shape', 'Shape', 'hash') if (grep /^shape$/, @$scroll_list);
2170    
2171        # get the column for organism's disease
2172        my $disease_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'disease', 'Disease', 'hash') if (grep /^disease$/, @$scroll_list);
2173    
2174        # get the column for organism's disease
2175        my $gc_content_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'gc_content', 'GC_Content', 'hash') if (grep /^gc_content$/, @$scroll_list);
2176    
2177        # get the column for transmembrane domains
2178        my $transmembrane_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'transmembrane', 'Phobius::transmembrane', 'hash') if (grep /^transmembrane$/, @$scroll_list);
2179    
2180        # get the column for similar to human
2181        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);
2182    
2183        # get the column for signal peptide
2184        my $signal_peptide_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'signal_peptide', 'Phobius::signal', 'hash') if (grep /^signal_peptide$/, @$scroll_list);
2185    
2186        # get the column for transmembrane domains
2187        my $isoelectric_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'isoelectric', 'isoelectric_point', 'hash') if (grep /^isoelectric$/, @$scroll_list);
2188    
2189        # get the column for conserved neighborhood
2190        my $cons_neigh_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'conserved_neighborhood', undef, 'hash') if (grep /^conserved_neighborhood$/, @$scroll_list);
2191    
2192        # get the column for cellular location
2193        my $cell_location_column = &get_attrb_column(\@ids, undef, $fig, $cgi, 'cellular_location', 'PSORT::', 'hash') if (grep /^isoelectric$/, @$scroll_list);
2194    
2195        # get the aliases
2196        my $alias_col;
2197        if ( (grep /asap_id/, @$scroll_list) || (grep /ncbi_id/, @$scroll_list) ||
2198             (grep /refseq_id/, @$scroll_list) || (grep /swissprot_id/, @$scroll_list) ||
2199             (grep /uniprot_id/, @$scroll_list) || (grep /tigr_id/, @$scroll_list) ||
2200             (grep /kegg_id/, @$scroll_list) || (grep /pir_id/, @$scroll_list) ||
2201             (grep /trembl_id/, @$scroll_list) || (grep /jgi_id/, @$scroll_list) ) {
2202            $alias_col = &get_db_aliases(\@ids,$fig,'all',$cgi,'hash');
2203        }
2204    
2205      # get the colors for the function cell      # get the colors for the function cell
2206      my $functions = $fig->function_of_bulk(\@ids,1);      my $functions = $fig->function_of_bulk(\@ids,1);
2207      $function_color = &get_function_color_cell($functions, $fig);      $functional_color = &get_function_color_cell($functions, $fig);
2208      my $query_function = $fig->function_of($query_fid);      my $query_function = $fig->function_of($query_fid);
2209    
2210      %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 = {};  
2211    
2212      my $figfam_data = &FIG::get_figfams_data();      my $figfam_data = &FIG::get_figfams_data();
2213      my $figfams = new FFs($figfam_data);      my $figfams = new FFs($figfam_data);
2214        my $same_genome_flag = 0;
2215    
2216      my $func_color_offset=0;      my $func_color_offset=0;
2217      foreach my $thing ( @$dataset){      unshift(@$dataset, $query_fid);
2218        for (my $thing_count=0;$thing_count<scalar @$dataset;$thing_count++){
2219    #    foreach my $thing ( @$dataset){
2220            my $thing = $dataset->[$thing_count];
2221            my $next_thing = $dataset->[$thing_count+1] if (defined $dataset->[$thing_count+1]);
2222            my ($id, $taxid, $iden, $ln1,$ln2,$b1,$b2,$e1,$e2,$d1,$d2,$color1,$color2,$reg1,$reg2, $next_org);
2223            if ($thing eq $query_fid){
2224                $id = $thing;
2225                $taxid   = $fig->genome_of($id);
2226                $organism = $fig->genus_species($taxid);
2227                $current_function = $fig->function_of($id);
2228            }
2229            else{
2230          next if ($thing->class ne "SIM");          next if ($thing->class ne "SIM");
2231    
2232                $id      = $thing->acc;
2233                $evalue  = $thing->evalue;
2234                $taxid   = $fig->genome_of($id);
2235                $iden    = $thing->identity;
2236                $organism= $thing->organism;
2237                $ln1     = $thing->qlength;
2238                $ln2     = $thing->hlength;
2239                $b1      = $thing->qstart;
2240                $e1      = $thing->qstop;
2241                $b2      = $thing->hstart;
2242                $e2      = $thing->hstop;
2243                $d1      = abs($e1 - $b1) + 1;
2244                $d2      = abs($e2 - $b2) + 1;
2245                $color1  = match_color( $b1, $e1, $ln1 );
2246                $color2  = match_color( $b2, $e2, $ln2 );
2247                $reg1    = {'data'=> "$b1-$e1 (<b>$d1/$ln1</b>)", 'highlight' => $color1};
2248                $reg2    = {'data'=> "$b2-$e2 (<b>$d2/$ln2</b>)", 'highlight' => $color2};
2249                $current_function = $thing->function;
2250                $next_org = $next_thing->organism if (defined $next_thing);
2251            }
2252    
2253          my $single_domain = [];          my $single_domain = [];
2254          $count++;          $count++;
2255    
         my $id      = $thing->acc;  
         my $taxid   = $fig->genome_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 $color1  = match_color( $b1, $e1, $ln1 );  
         my $color2  = match_color( $b2, $e2, $ln2 );  
         my $reg1    = {'data'=> "$b1-$e1 (<b>$d1/$ln1</b>)", 'highlight' => $color1};  
         my $reg2    = {'data'=> "$b2-$e2 (<b>$d2/$ln2</b>)", 'highlight' => $color2};  
   
2256          # organisms cell          # organisms cell
2257          my ($org, $org_color) = $fig->org_and_color_of($id);          my ($org, $org_color) = $fig->org_and_color_of($id);
2258          my $org_cell = { 'data' =>  $thing->organism, 'highlight' => $org_color};  
2259            my $org_cell;
2260            if ( ($next_org ne $organism) && ($same_genome_flag == 0) ){
2261                $org_cell = { 'data' =>  $organism, 'highlight' => $org_color};
2262            }
2263            elsif ($next_org eq $organism){
2264                $org_cell = { 'data' =>  "<b>" . $organism . "</b>", 'highlight' => $org_color};
2265                $same_genome_flag = 1;
2266            }
2267            elsif ($same_genome_flag == 1){
2268                $org_cell = { 'data' =>  "<b>" . $organism . "</b>", 'highlight' => $org_color};
2269                $same_genome_flag = 0;
2270            }
2271    
2272          # checkbox cell          # checkbox cell
2273          my ($box_cell,$tax);          my ($box_cell,$tax, $radio_cell);
2274          my $field_name = "tables_" . $id;          my $field_name = "tables_" . $id;
2275          my $pair_name = "visual_" . $id;          my $pair_name = "visual_" . $id;
2276          my $cell_name = "cell_". $id;          my $cell_name = "cell_". $id;
2277          my $replace_id = $id;          my $replace_id = $id;
2278          $replace_id =~ s/\|/_/ig;          $replace_id =~ s/\|/_/ig;
2279            my $white = '#ffffff';
2280            $white = '#999966' if ($id eq $query_fid);
2281            $org_color = '#999966' if ($id eq $query_fid);
2282          my $anchor_name = "anchor_". $replace_id;          my $anchor_name = "anchor_". $replace_id;
2283            my $checked = "";
2284            #$checked = "checked" if ($id eq $query_fid);
2285          if ($id =~ /^fig\|/){          if ($id =~ /^fig\|/){
2286            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');">);            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>~;
2287            $box_cell = { 'data'=>$box, 'highlight'=>$org_color};            $box_cell = { 'data'=>$box, 'highlight'=>$org_color};
2288            ($tax) = ($id) =~ /fig\|(.*?)\./;            $tax = $fig->genome_of($id);
2289          }          }
2290          else{          else{
2291            my $box = qq(<a name="$anchor_name"></a>);            my $box = qq(<a name="$anchor_name"></a>);
2292            $box_cell = { 'data'=>$box, 'highlight'=>$org_color};            $box_cell = { 'data'=>$box, 'highlight'=>$org_color};
2293          }          }
2294    
2295            # create the radio cell for any sequence, not just fig ids
2296            my $radio = qq(<input type="radio" name="function_select" value="$id" id="$field_name" onClick="clearText('new_text_function')">);
2297            $radio_cell = { 'data'=>$radio, 'highlight'=>$white};
2298    
2299          # get the linked fig id          # get the linked fig id
2300          my $anchor_link = "graph_" . $replace_id;          my $anchor_link = "graph_" . $replace_id;
2301          my $fig_data =  "<table><tr><td>" . &HTML::set_prot_links($cgi,$id) . "</td>" . "&nbsp;" x 2;          my $fig_data =  "<table><tr><td><a href='?page=Annotation&feature=$id'>$id</a></td>" . "&nbsp;" x 2;
2302          $fig_data .= qq(<td><img height='10px' width='20px' src='./Html/anchor_alignment.png' alt='View Graphic View of Alignment' onClick='changeSimsLocation("$anchor_link", 0)'/></td></tr></table>);          $fig_data .= qq(<td><img height='10px' width='20px' src='./Html/anchor_alignment.png' alt='View Graphic View of Alignment' onClick='changeSimsLocation("$anchor_link", 0)'/></td></tr></table>);
2303          my $fig_col = {'data'=> $fig_data,          my $fig_col = {'data'=> $fig_data,
2304                         'highlight'=>"#ffffff"};                         'highlight'=>$white};
2305    
2306      $replace_id = $peg;      $replace_id = $peg;
2307      $replace_id =~ s/\|/_/ig;      $replace_id =~ s/\|/_/ig;
# Line 2163  Line 2311 
2311                           'title_link' => "changeSimsLocation('$replace_id')",                           'title_link' => "changeSimsLocation('$replace_id')",
2312                           'basepair_offset' => '0'                           'basepair_offset' => '0'
2313                           };                           };
2314    
2315          # function cell          # function cell
2316          my $function_cell_colors = {0=>"#ffffff", 1=>"#eeccaa", 2=>"#ffaaaa",          my $function_cell_colors = {0=>"#ffffff", 1=>"#eeccaa", 2=>"#ffaaaa",
2317                                      3=>"#ffcc66", 4=>"#ffff00", 5=>"#aaffaa",                                      3=>"#ffcc66", 4=>"#ffff00", 5=>"#aaffaa",
2318                                      6=>"#bbbbff", 7=>"#ffaaff", 8=>"#dddddd"};                                      6=>"#bbbbff", 7=>"#ffaaff", 8=>"#dddddd"};
2319          my $current_function =  $thing->function;  
2320          my $function_color = $function_cell_colors->{ $function_color->{$current_function} - $func_color_offset};          my $function_color;
2321            if ( (defined($functional_color->{$query_function})) && ($functional_color->{$query_function} == 1) ){
2322                $function_color = $function_cell_colors->{ $functional_color->{$current_function} - $func_color_offset};
2323            }
2324            else{
2325                $function_color = $function_cell_colors->{ $functional_color->{$current_function}};
2326            }
2327          my $function_cell;          my $function_cell;
2328          if ($current_function){          if ($current_function){
2329            if ($current_function eq $query_function){            if ($current_function eq $query_function){
# Line 2183  Line 2338 
2338            $function_cell = {'data'=>$current_function,'highlight' => "#dddddd"};            $function_cell = {'data'=>$current_function,'highlight' => "#dddddd"};
2339          }          }
2340    
2341          push (@$single_domain, $box_cell, $fig_col, {'data'=> $thing->evalue, 'highlight'=>"#ffffff"},          if ($id eq $query_fid){
2342                push (@$single_domain, $box_cell, {'data'=>qq~<i>Query Sequence: </i>~  . qq~<b>$id</b>~ , 'highlight'=>$white}, {'data'=> 'n/a', 'highlight'=>$white},
2343                      {'data'=>'n/a', 'highlight'=>$white}, {'data'=>'n/a', 'highlight'=>$white}, {'data'=>'n/a', 'highlight'=>$white},
2344                      {'data' =>  $organism, 'highlight'=> $white}, {'data'=>$current_function, 'highlight'=>$white});  # permanent columns
2345            }
2346            else{
2347                push (@$single_domain, $box_cell, $fig_col, {'data'=> $evalue, 'highlight'=>"#ffffff"},
2348                 {'data'=>"$iden\%", 'highlight'=>"#ffffff"}, $reg1, $reg2, $org_cell, $function_cell);   # permanent columns                 {'data'=>"$iden\%", 'highlight'=>"#ffffff"}, $reg1, $reg2, $org_cell, $function_cell);   # permanent columns
2349            }
2350    
2351            if ( ( $application->session->user) ){
2352                my $user = $application->session->user;
2353                if ($user && $user->has_right(undef, 'annotate', 'genome', $fig->genome_of($id))) {
2354                    push (@$single_domain,$radio_cell);
2355                }
2356            }
2357    
2358          my ($ff) = $figfams->families_containing_peg($id);          my ($ff) = $figfams->families_containing_peg($id);
2359    
2360          foreach my $col (sort keys %$scroll_list){          foreach my $col (@$scroll_list){
2361              if ($col =~ /associated_subsystem/)          {push(@$single_domain,{'data'=>$subsystems_column{$id},'highlight'=>"#ffffff"});}              if ($id eq $query_fid) { $highlight_color = "#999966"; }
2362              elsif ($col =~ /evidence/)                   {push(@$single_domain,{'data'=>$evidence_column{$id},'highlight'=>"#ffffff"});}              else { $highlight_color = "#ffffff"; }
2363              elsif ($col =~ /pfam_domains/)               {push(@$single_domain,{'data'=>$pfam_column{$id},'highlight'=>"#ffffff"});}  
2364              elsif ($col =~ /ncbi_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"NCBI"},'highlight'=>"#ffffff"});}              if ($col =~ /subsystem/)                     {push(@$single_domain,{'data'=>$subsystems_column->{$id},'highlight'=>$highlight_color});}
2365              elsif ($col =~ /refseq_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"RefSeq"},'highlight'=>"#ffffff"});}              elsif ($col =~ /evidence/)                   {push(@$single_domain,{'data'=>$evidence_column->{$id},'highlight'=>$highlight_color});}
2366              elsif ($col =~ /swissprot_id/)               {push(@$single_domain,{'data'=>$alias_col->{$id}->{"SwissProt"},'highlight'=>"#ffffff"});}              elsif ($col =~ /pfam/)                       {push(@$single_domain,{'data'=>$pfam_column->{$id},'highlight'=>$highlight_color});}
2367              elsif ($col =~ /uniprot_id/)                 {push(@$single_domain,{'data'=>$alias_col->{$id}->{"UniProt"},'highlight'=>"#ffffff"});}              elsif ($col =~ /mw/)                         {push(@$single_domain,{'data'=>$mw_column->{$id},'highlight'=>$highlight_color});}
2368              elsif ($col =~ /tigr_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TIGR"},'highlight'=>"#ffffff"});}              elsif ($col =~ /habitat/)                    {push(@$single_domain,{'data'=>$habitat_column->{$id},'highlight'=>$highlight_color});}
2369              elsif ($col =~ /pir_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"PIR"},'highlight'=>"#ffffff"});}              elsif ($col =~ /temperature/)                {push(@$single_domain,{'data'=>$temperature_column->{$id},'highlight'=>$highlight_color});}
2370              elsif ($col =~ /kegg_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"KEGG"},'highlight'=>"#ffffff"});}              elsif ($col =~ /temp_range/)                 {push(@$single_domain,{'data'=>$temperature_range_column->{$id},'highlight'=>$highlight_color});}
2371              #elsif ($col =~ /trembl_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TrEMBL"},'highlight'=>"#ffffff"});}              elsif ($col =~ /oxygen/)                     {push(@$single_domain,{'data'=>$oxygen_req_column->{$id},'highlight'=>$highlight_color});}
2372              elsif ($col =~ /asap_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"ASAP"},'highlight'=>"#ffffff"});}              elsif ($col =~ /^pathogenic$/)               {push(@$single_domain,{'data'=>$pathogenic_column->{$id},'highlight'=>$highlight_color});}
2373              elsif ($col =~ /jgi_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"JGI"},'highlight'=>"#ffffff"});}              elsif ($col =~ /^pathogenic_in$/)            {push(@$single_domain,{'data'=>$pathogenic_in_column->{$id},'highlight'=>$highlight_color});}
2374              elsif ($col =~ /taxonomy/)                   {push(@$single_domain,{'data'=>$lineages->{$tax},'highlight'=>"#ffffff"});}              elsif ($col =~ /salinity/)                   {push(@$single_domain,{'data'=>$salinity_column->{$id},'highlight'=>$highlight_color});}
2375              #elsif ($col =~ /taxonomy/)                   {push(@$single_domain,$fig->taxonomy_of($taxid));}              elsif ($col =~ /motility/)                   {push(@$single_domain,{'data'=>$motility_column->{$id},'highlight'=>$highlight_color});}
2376              #elsif ($col =~ /figfam/)                     {push(@$single_domain,"<a href='?page=FigFamViewer&figfam=" . $ff_hash->{$id} . "' target='_new'>" . $ff_hash->{$id} . "</a>");}              elsif ($col =~ /gram_stain/)                 {push(@$single_domain,{'data'=>$gram_stain_column->{$id},'highlight'=>$highlight_color});}
2377              elsif ($col =~ /figfam/)                     {push(@$single_domain,{'data'=>"<a href='?page=FigFamViewer&figfam=" . $ff . "' target='_new'>" . $ff . "</a>",'highlight'=>"#ffffff"});}              elsif ($col =~ /endospores/)                 {push(@$single_domain,{'data'=>$endospores_column->{$id},'highlight'=>$highlight_color});}
2378                elsif ($col =~ /shape/)                      {push(@$single_domain,{'data'=>$shape_column->{$id},'highlight'=>$highlight_color});}
2379                elsif ($col =~ /disease/)                    {push(@$single_domain,{'data'=>$disease_column->{$id},'highlight'=>$highlight_color});}
2380                elsif ($col =~ /gc_content/)                 {push(@$single_domain,{'data'=>$gc_content_column->{$id},'highlight'=>$highlight_color});}
2381                elsif ($col =~ /transmembrane/)              {push(@$single_domain,{'data'=>$transmembrane_column->{$id},'highlight'=>$highlight_color});}
2382                elsif ($col =~ /signal_peptide/)             {push(@$single_domain,{'data'=>$signal_peptide_column->{$id},'highlight'=>$highlight_color});}
2383                elsif ($col =~ /isoelectric/)                {push(@$single_domain,{'data'=>$isoelectric_column->{$id},'highlight'=>$highlight_color});}
2384                elsif ($col =~ /conerved_neighborhood/)     {push(@$single_domain,{'data'=>$cons_neigh_column->{$id},'highlight'=>$highlight_color});}
2385                elsif ($col =~ /cellular_location/)          {push(@$single_domain,{'data'=>$cell_location_column->{$id},'highlight'=>$highlight_color});}
2386                elsif ($col =~ /ncbi_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"NCBI"},'highlight'=>$highlight_color});}
2387                elsif ($col =~ /refseq_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"RefSeq"},'highlight'=>$highlight_color});}
2388                elsif ($col =~ /swissprot_id/)               {push(@$single_domain,{'data'=>$alias_col->{$id}->{"SwissProt"},'highlight'=>$highlight_color});}
2389                elsif ($col =~ /uniprot_id/)                 {push(@$single_domain,{'data'=>$alias_col->{$id}->{"UniProt"},'highlight'=>$highlight_color});}
2390                elsif ($col =~ /tigr_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TIGR"},'highlight'=>$highlight_color});}
2391                elsif ($col =~ /pir_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"PIR"},'highlight'=>$highlight_color});}
2392                elsif ($col =~ /kegg_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"KEGG"},'highlight'=>$highlight_color});}
2393                elsif ($col =~ /trembl_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"TrEMBL"},'highlight'=>$highlight_color});}
2394                elsif ($col =~ /asap_id/)                    {push(@$single_domain,{'data'=>$alias_col->{$id}->{"ASAP"},'highlight'=>$highlight_color});}
2395                elsif ($col =~ /jgi_id/)                     {push(@$single_domain,{'data'=>$alias_col->{$id}->{"JGI"},'highlight'=>$highlight_color});}
2396                elsif ($col =~ /lineage/)                   {push(@$single_domain,{'data'=>$lineages->{$tax},'highlight'=>$highlight_color});}
2397                elsif ($col =~ /figfam/)                     {push(@$single_domain,{'data'=>"<a href='?page=FigFamViewer&figfam=" . $ff . "' target='_new'>" . $ff . "</a>",'highlight'=>$highlight_color});}
2398          }          }
2399          push(@$data,$single_domain);          push(@$data,$single_domain);
2400      }      }
# Line 2215  Line 2404 
2404      else{      else{
2405          $content = "<p>This PEG does not have any similarities</p>";          $content = "<p>This PEG does not have any similarities</p>";
2406      }      }
2407        shift(@$dataset);
2408      return ($content);      return ($content);
2409  }  }
2410    
# Line 2230  Line 2420 
2420      return (%column);      return (%column);
2421  }  }
2422    
2423    sub get_figfam_column{
2424        my ($ids, $fig, $cgi) = @_;
2425        my $column;
2426    
2427        my $figfam_data = &FIG::get_figfams_data();
2428        my $figfams = new FFs($figfam_data);
2429    
2430        foreach my $id (@$ids){
2431            my ($ff) =  $figfams->families_containing_peg($id);
2432            if ($ff){
2433                push (@$column, "<a href='?page=FigFamViewer&figfam=" . $ff . "' target='_new'>" . $ff . "</a>");
2434            }
2435            else{
2436                push (@$column, " ");
2437            }
2438        }
2439    
2440        return $column;
2441    }
2442    
2443  sub get_subsystems_column{  sub get_subsystems_column{
2444      my ($ids,$fig) = @_;      my ($ids,$fig,$cgi,$returnType) = @_;
2445    
     #my $fig = new FIG;  
     my $cgi = new CGI;  
2446      my %in_subs  = $fig->subsystems_for_pegs($ids);      my %in_subs  = $fig->subsystems_for_pegs($ids);
2447      my %column;      my ($column, $ss);
2448      foreach my $id (@$ids){      foreach my $id (@$ids){
2449          my @in_sub = @{$in_subs{$id}} if (defined $in_subs{$id});          my @in_sub = @{$in_subs{$id}} if (defined $in_subs{$id});
2450          my @subsystems;          my @subsystems;
2451    
2452          if (@in_sub > 0) {          if (@in_sub > 0) {
2453              foreach my $array(@in_sub){              foreach my $array(@in_sub){
2454                  my $ss = $$array[0];                  my $ss = $array->[0];
2455                  $ss =~ s/_/ /ig;                  $ss =~ s/_/ /ig;
2456                  push (@subsystems, "-" . $ss);                  push (@subsystems, "-" . $ss);
2457              }              }
2458              my $in_sub_line = join ("<br>", @subsystems);              my $in_sub_line = join ("<br>", @subsystems);
2459              $column{$id} = $in_sub_line;              $ss->{$id} = $in_sub_line;
2460          } else {          } else {
2461              $column{$id} = "&nbsp;";              $ss->{$id} = "None added";
2462          }          }
2463            push (@$column, $ss->{$id});
2464      }      }
2465      return (%column);  
2466        if ($returnType eq 'hash') { return $ss; }
2467        elsif ($returnType eq 'array') { return $column; }
2468    }
2469    
2470    sub get_lineage_column{
2471        my ($ids, $fig, $cgi) = @_;
2472    
2473        my $lineages = $fig->taxonomy_list();
2474    
2475        foreach my $id (@$ids){
2476            my $genome = $fig->genome_of($id);
2477            if ($lineages->{$genome}){
2478    #           push (@$column, qq~<table style='border-style:hidden;'><tr><td style='background-color: #ffffff;'>~ . $lineages->{$genome} . qq~</td></tr</table>~);
2479                push (@$column, $lineages->{$genome});
2480            }
2481            else{
2482                push (@$column, " ");
2483            }
2484        }
2485        return $column;
2486  }  }
2487    
2488  sub match_color {  sub match_color {
# Line 2373  Line 2602 
2602    
2603    
2604  sub get_evidence_column{  sub get_evidence_column{
2605      my ($ids, $attributes,$fig) = @_;      my ($ids,$attributes,$fig,$cgi,$returnType) = @_;
2606      #my $fig = new FIG;      my ($column, $code_attributes);
2607      my $cgi = new CGI;  
2608      my (%column, %code_attributes);      if (! defined $attributes) {
2609            my @attributes_array = $fig->get_attributes($ids);
2610            $attributes = \@attributes_array;
2611        }
2612    
2613      my @codes = grep { $_->[1] =~ /^evidence_code/i } @$attributes;      my @codes = grep { $_->[1] =~ /^evidence_code/i } @$attributes;
2614      foreach my $key (@codes){      foreach my $key (@codes){
2615          push (@{$code_attributes{$$key[0]}}, $key);          push (@{$code_attributes->{$key->[0]}}, $key);
2616      }      }
2617    
2618      foreach my $id (@$ids){      foreach my $id (@$ids){
2619          # add evidence code with tool tip          # add evidence code with tool tip
2620          my $ev_codes=" &nbsp; ";          my $ev_codes=" &nbsp; ";
2621    
2622          my @codes = @{$code_attributes{$id}} if (defined @{$code_attributes{$id}});          my @codes = @{$code_attributes->{$id}} if (defined @{$code_attributes->{$id}});
2623          my @ev_codes = ();          my @ev_codes = ();
2624          foreach my $code (@codes) {          foreach my $code (@codes) {
2625              my $pretty_code = $code->[2];              my $pretty_code = $code->[2];
2626              if ($pretty_code =~ /;/) {              if ($pretty_code =~ /;/) {
2627                  my ($cd, $ss) = split(";", $code->[2]);                  my ($cd, $ss) = split(";", $code->[2]);
2628                    print STDERR "$id: $cd, $ss\n";
2629                    if ($cd =~ /ilit|dlit/){
2630                        my ($type,$pubmed_id) = ($cd) =~ /(.*?)\((.*)\)/;
2631                        my $publink = &HTML::alias_url($pubmed_id,'PMID');
2632                        $cd = $type . "(<a href='" . $publink . "'>" . $pubmed_id . "</a>)";
2633                    }
2634                  $ss =~ s/_/ /g;                  $ss =~ s/_/ /g;
2635                  $pretty_code = $cd;# . " in " . $ss;                  $pretty_code = $cd;# . " in " . $ss;
2636              }              }
# Line 2405  Line 2643 
2643                                  {                                  {
2644                                      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));
2645          }          }
2646          $column{$id}=$ev_codes;  
2647            if ($returnType eq 'hash') { $column->{$id}=$ev_codes; }
2648            elsif ($returnType eq 'array') { push (@$column, $ev_codes); }
2649      }      }
2650      return (%column);      return $column;
2651  }  }
2652    
2653  sub get_pfam_column{  sub get_attrb_column{
2654      my ($ids, $attributes,$fig) = @_;      my ($ids, $attributes, $fig, $cgi, $colName, $attrbName, $returnType) = @_;
2655      #my $fig = new FIG;  
2656      my $cgi = new CGI;      my ($column, %code_attributes, %attribute_locations);
     my (%column, %code_attributes, %attribute_locations);  
2657      my $dbmaster = DBMaster->new(-database =>'Ontology',      my $dbmaster = DBMaster->new(-database =>'Ontology',
2658                                  -host     => $WebConfig::DBHOST,                                  -host     => $WebConfig::DBHOST,
2659                                  -user     => $WebConfig::DBUSER,                                  -user     => $WebConfig::DBUSER,
2660                                  -password => $WebConfig::DBPWD);                                  -password => $WebConfig::DBPWD);
2661    
2662      my @codes = grep { $_->[1] =~ /^PFAM/i } @$attributes;      if ($colName eq "pfam"){
2663            if (! defined $attributes) {
2664                my @attributes_array = $fig->get_attributes($ids);
2665                $attributes = \@attributes_array;
2666            }
2667    
2668            my @codes = grep { $_->[1] =~ /^$attrbName/i } @$attributes;
2669      foreach my $key (@codes){      foreach my $key (@codes){
2670          my $name = $key->[1];          my $name = $key->[1];
2671          if ($name =~ /_/){          if ($name =~ /_/){
# Line 2431  Line 2676 
2676      }      }
2677    
2678      foreach my $id (@$ids){      foreach my $id (@$ids){
2679          # add evidence code              # add pfam code
2680          my $pfam_codes=" &nbsp; ";          my $pfam_codes=" &nbsp; ";
2681          my @pfam_codes = "";          my @pfam_codes = "";
2682          my %description_codes;          my %description_codes;
# Line 2466  Line 2711 
2711                  }                  }
2712                  else {                  else {
2713                      my $description = $dbmaster->pfam->get_objects( { 'id' => $parts[1] } );                      my $description = $dbmaster->pfam->get_objects( { 'id' => $parts[1] } );
2714                      $description_codes{$parts[1]} = ${$$description[0]}{term};                          $description_codes{$parts[1]} = $description->[0]->{term};
2715                      push(@pfam_codes, "$pfam_link ($locations)");                      push(@pfam_codes, "$pfam_link ($locations)");
2716                  }                  }
2717              }              }
2718    
2719                    if ($returnType eq 'hash') { $column->{$id} = join("<br><br>", @pfam_codes); }
2720                    elsif ($returnType eq 'array') { push (@$column, join("<br><br>", @pfam_codes)); }
2721                }
2722            }
2723        }
2724        elsif ($colName eq 'cellular_location'){
2725            if (! defined $attributes) {
2726                my @attributes_array = $fig->get_attributes($ids);
2727                $attributes = \@attributes_array;
2728          }          }
2729    
2730          $column{$id}=join("<br><br>", @pfam_codes);          my @codes = grep { $_->[1] =~ /^$attrbName/i } @$attributes;
2731            foreach my $key (@codes){
2732                my ($loc) = ($key->[1]) =~ /::(.*)/;
2733                my ($new_loc, @all);
2734                @all = split (//, $loc);
2735                my $count = 0;
2736                foreach my $i (@all){
2737                    if ( ($i eq uc($i)) && ($count > 0) ){
2738                        $new_loc .= " " . $i;
2739                    }
2740                    else{
2741                        $new_loc .= $i;
2742                    }
2743                    $count++;
2744                }
2745                push (@{$code_attributes{$key->[0]}}, [$new_loc, $key->[2]]);
2746      }      }
     return (%column);  
2747    
2748            foreach my $id (@$ids){
2749                my (@values, $entry);
2750                #@values = (" ");
2751                if (defined @{$code_attributes{$id}}){
2752                    my @ncodes = @{$code_attributes{$id}};
2753                    foreach my $code (@ncodes){
2754                        push (@values, $code->[0] . ", " . $code->[1]);
2755                    }
2756                }
2757                else{
2758                    @values = ("Not available");
2759  }  }
2760    
2761  sub get_aliases {              if ($returnType eq 'hash') { $column->{$id} = join ("<BR>", @values); }
2762      my ($ids,$fig) = @_;              elsif ($returnType eq 'array') { push (@$column, join ("<BR>", @values)); }
2763            }
2764        }
2765        elsif ( ($colName eq 'mw') || ($colName eq 'transmembrane') || ($colName eq 'similar_to_human') ||
2766                ($colName eq 'signal_peptide') || ($colName eq 'isoelectric') ){
2767            if (! defined $attributes) {
2768                my @attributes_array = $fig->get_attributes($ids);
2769                $attributes = \@attributes_array;
2770            }
2771    
2772            my @codes = grep { $_->[1] =~ /^$attrbName/i } @$attributes;
2773            foreach my $key (@codes){
2774                push (@{$code_attributes{$key->[0]}}, $key->[2]);
2775            }
2776    
2777            foreach my $id (@$ids){
2778                my (@values, $entry);
2779                #@values = (" ");
2780                if (defined @{$code_attributes{$id}}){
2781                    my @ncodes = @{$code_attributes{$id}};
2782                    foreach my $code (@ncodes){
2783                        push (@values, $code);
2784                    }
2785                }
2786                else{
2787                    @values = ("Not available");
2788                }
2789    
2790                if ($returnType eq 'hash') { $column->{$id} = join ("<BR>", @values); }
2791                elsif ($returnType eq 'array') { push (@$column, join ("<BR>", @values)); }
2792            }
2793        }
2794        elsif ( ($colName eq 'habitat') || ($colName eq 'temperature') || ($colName eq 'temp_range') ||
2795                ($colName eq 'oxygen') || ($colName eq 'pathogenic') || ($colName eq 'pathogenic_in') ||
2796                ($colName eq 'salinity') || ($colName eq 'motility') || ($colName eq 'gram_stain') ||
2797                ($colName eq 'endospores') || ($colName eq 'shape') || ($colName eq 'disease') ||
2798                ($colName eq 'gc_content') ) {
2799            if (! defined $attributes) {
2800                my @attributes_array = $fig->get_attributes(undef,$attrbName);
2801                $attributes = \@attributes_array;
2802            }
2803    
2804            my $genomes_with_phenotype;
2805            foreach my $attribute (@$attributes){
2806                my $genome = $attribute->[0];
2807                $genomes_with_phenotype->{$genome} = $attribute->[2];
2808            }
2809    
2810            foreach my $id (@$ids){
2811                my $genome = $fig->genome_of($id);
2812                my @values = (' ');
2813                if (defined $genomes_with_phenotype->{$genome}){
2814                    push (@values, $genomes_with_phenotype->{$genome});
2815                }
2816                if ($returnType eq 'hash') { $column->{$id} = join ("<BR>", @values); }
2817                elsif ($returnType eq 'array') { push (@$column, join ("<BR>", @values)); }
2818            }
2819        }
2820    
2821        return $column;
2822    }
2823    
2824    
2825    sub get_db_aliases {
2826        my ($ids,$fig,$db,$cgi,$returnType) = @_;
2827    
2828        my $db_array;
2829      my $all_aliases = $fig->feature_aliases_bulk($ids);      my $all_aliases = $fig->feature_aliases_bulk($ids);
2830      foreach my $id (@$ids){      foreach my $id (@$ids){
2831          foreach my $alias (@{$$all_aliases{$id}}){          foreach my $alias (@{$$all_aliases{$id}}){
2832              my $id_db = &Observation::get_database($alias);              my $id_db = &Observation::get_database($alias);
2833              next if ($aliases->{$id}->{$id_db});              next if ( ($id_db ne $db) && ($db ne 'all') );
2834                next if ($aliases->{$id}->{$db});
2835              $aliases->{$id}->{$id_db} = &HTML::set_prot_links($cgi,$alias);              $aliases->{$id}->{$id_db} = &HTML::set_prot_links($cgi,$alias);
2836          }          }
2837            if (!defined( $aliases->{$id}->{$db})){
2838                $aliases->{$id}->{$db} = " ";
2839      }      }
2840      return ($aliases);          #push (@$db_array, {'data'=>  $aliases->{$id}->{$db},'highlight'=>"#ffffff"});
2841            push (@$db_array, $aliases->{$id}->{$db});
2842        }
2843    
2844        if ($returnType eq 'hash') { return $aliases; }
2845        elsif ($returnType eq 'array') { return $db_array; }
2846  }  }
2847    
2848    
2849    
2850  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; $_ }
2851    
2852  sub color {  sub color {
# Line 2930  Line 3285 
3285      my $cgi = new CGI;      my $cgi = new CGI;
3286      my $count = 0;      my $count = 0;
3287      my $peg_array = [];      my $peg_array = [];
3288      my (%evidence_column, %subsystems_column,  %e_identical);      my ($evidence_column, $subsystems_column,  %e_identical);
3289    
3290      if (@$dataset != 1){      if (@$dataset != 1){
3291          foreach my $thing (@$dataset){          foreach my $thing (@$dataset){
# Line 2939  Line 3294 
3294              }              }
3295          }          }
3296          # get the column for the evidence codes          # get the column for the evidence codes
3297          %evidence_column = &Observation::Sims::get_evidence_column($peg_array);          $evidence_column = &Observation::Sims::get_evidence_column($peg_array, undef, $fig, $cgi, 'hash');
3298    
3299          # get the column for the subsystems          # get the column for the subsystems
3300          %subsystems_column = &Observation::Sims::get_subsystems_column($peg_array,$fig);          $subsystems_column = &Observation::Sims::get_subsystems_column($peg_array,$fig, $cgi, 'array');
3301    
3302          # get essentially identical seqs          # get essentially identical seqs
3303          %e_identical = &Observation::Sims::get_essentially_identical($mypeg,$dataset,$fig);          %e_identical = &Observation::Sims::get_essentially_identical($mypeg,$dataset,$fig);
# Line 2956  Line 3311 
3311          last if ($count > 10);          last if ($count > 10);
3312          my $row_data = [];          my $row_data = [];
3313          my ($set, $org, $ss, $ev, $function, $function_cell, $id_cell);          my ($set, $org, $ss, $ev, $function, $function_cell, $id_cell);
3314            if ($fig->org_of($id)){
3315          $org = $fig->org_of($id);          $org = $fig->org_of($id);
3316            }
3317            else{
3318                $org = "Data not available";
3319            }
3320          $function = $fig->function_of($id);          $function = $fig->function_of($id);
3321          if ($mypeg ne $id){          if ($mypeg ne $id){
3322              $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 2971  Line 3331 
3331    
3332          push(@$row_data,$id_cell);          push(@$row_data,$id_cell);
3333          push(@$row_data,$org);          push(@$row_data,$org);
3334          push(@$row_data, $subsystems_column{$id}) if ($mypeg ne $id);          push(@$row_data, $subsystems_column->{$id}) if ($mypeg ne $id);
3335          push(@$row_data, $evidence_column{$id}) if ($mypeg ne $id);          push(@$row_data, $evidence_column->{$id}) if ($mypeg ne $id);
3336          push(@$row_data, $fig->translation_length($id));          push(@$row_data, $fig->translation_length($id));
3337          push(@$row_data,$function_cell);          push(@$row_data,$function_cell);
3338          push(@$all_rows,$row_data);          push(@$all_rows,$row_data);

Legend:
Removed from v.1.59  
changed lines
  Added in v.1.68

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3