[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.60, Fri Jun 20 16:08:32 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 1794  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 2175  Line 2211 
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      unshift(@$dataset, $query_fid);      unshift(@$dataset, $query_fid);
2218      foreach my $thing ( @$dataset){      for (my $thing_count=0;$thing_count<scalar @$dataset;$thing_count++){
2219          my ($id, $taxid, $iden, $ln1,$ln2,$b1,$b2,$e1,$e2,$d1,$d2,$color1,$color2,$reg1,$reg2);  #    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){          if ($thing eq $query_fid){
2224              $id = $thing;              $id = $thing;
2225              $taxid   = $fig->genome_of($id);              $taxid   = $fig->genome_of($id);
# Line 2207  Line 2247 
2247              $reg1    = {'data'=> "$b1-$e1 (<b>$d1/$ln1</b>)", 'highlight' => $color1};              $reg1    = {'data'=> "$b1-$e1 (<b>$d1/$ln1</b>)", 'highlight' => $color1};
2248              $reg2    = {'data'=> "$b2-$e2 (<b>$d2/$ln2</b>)", 'highlight' => $color2};              $reg2    = {'data'=> "$b2-$e2 (<b>$d2/$ln2</b>)", 'highlight' => $color2};
2249              $current_function = $thing->function;              $current_function = $thing->function;
2250                $next_org = $next_thing->organism if (defined $next_thing);
2251          }          }
2252    
2253          my $single_domain = [];          my $single_domain = [];
# Line 2214  Line 2255 
2255    
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' =>  $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, $radio_cell);          my ($box_cell,$tax, $radio_cell);
# Line 2227  Line 2280 
2280          $white = '#999966' if ($id eq $query_fid);          $white = '#999966' if ($id eq $query_fid);
2281          $org_color = '#999966' if ($id eq $query_fid);          $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>~;
           my $radio = qq(<input type="radio" name="function_select" value="$id" id="$field_name" >);  
2287            $box_cell = { 'data'=>$box, 'highlight'=>$org_color};            $box_cell = { 'data'=>$box, 'highlight'=>$org_color};
           $radio_cell = { 'data'=>$radio, 'highlight'=>$white};  
2288            $tax = $fig->genome_of($id);            $tax = $fig->genome_of($id);
2289          }          }
2290          else{          else{
# Line 2239  Line 2292 
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'=>$white};                         'highlight'=>$white};
# Line 2292  Line 2349 
2349          }          }
2350    
2351          if ( ( $application->session->user) ){          if ( ( $application->session->user) ){
2352              if ( ($application->session->user->login) && ($application->session->user->login eq "arodri")){              my $user = $application->session->user;
2353                if ($user && $user->has_right(undef, 'annotate', 'genome', $fig->genome_of($id))) {
2354                  push (@$single_domain,$radio_cell);                  push (@$single_domain,$radio_cell);
2355              }              }
2356          }          }
# Line 2323  Line 2381 
2381              elsif ($col =~ /transmembrane/)              {push(@$single_domain,{'data'=>$transmembrane_column->{$id},'highlight'=>$highlight_color});}              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});}              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});}              elsif ($col =~ /isoelectric/)                {push(@$single_domain,{'data'=>$isoelectric_column->{$id},'highlight'=>$highlight_color});}
2384              elsif ($col =~ /conserved_neighborhood/)     {push(@$single_domain,{'data'=>$cons_neigh_column->{$id},'highlight'=>$highlight_color});}              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});}              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});}              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});}              elsif ($col =~ /refseq_id/)                  {push(@$single_domain,{'data'=>$alias_col->{$id}->{"RefSeq"},'highlight'=>$highlight_color});}
# Line 2567  Line 2625 
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 3247  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";

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3