[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.7, Tue Jun 19 21:55:39 2007 UTC revision 1.10, Wed Jun 20 20:55:36 2007 UTC
# Line 5  Line 5 
5    
6  use strict;  use strict;
7  use warnings;  use warnings;
8  use Table;  use HTML;
9    
10  1;  1;
11    
# Line 24  Line 24 
24    
25  Example:  Example:
26    
27    
28  use FIG;  use FIG;
29  use Observation;  use Observation;
30    
# Line 101  Line 102 
102    
103  =over 9  =over 9
104    
105    =item IDENTICAL (seq)
106    
107  =item SIM (seq)  =item SIM (seq)
108    
109  =item BBH (seq)  =item BBH (seq)
# Line 336  Line 339 
339      else{      else{
340          #IPR,CDD,CELLO,PFAM,SIGNALP - attribute based          #IPR,CDD,CELLO,PFAM,SIGNALP - attribute based
341          my %domain_classes;          my %domain_classes;
342            my $identical_flag=0;
343            my $pch_flag=0;
344            my $sims_flag=0;
345          foreach my $class (@$classes){          foreach my $class (@$classes){
346              if($class =~/(IPR|CDD|PFAM)/){              if($class =~/(IPR|CDD|PFAM)/){
347                  $domain_classes{$class} = 1;                  $domain_classes{$class} = 1;
   
348              }              }
349                elsif ($class eq "IDENTICAL")
350                {
351                    $identical_flag = 1;
352                }
353                elsif ($class eq "PCH")
354                {
355                    $pch_flag = 1;
356                }
357                elsif ($class eq "SIM")
358                {
359                    $sims_flag = 1;
360                }
361            }
362    
363            if ($identical_flag ==1)
364            {
365                get_identical_proteins($fid,\@matched_datasets);
366          }          }
367            if ( (defined($domain_classes{IPR})) || (defined($domain_classes{CDD})) || (defined($domain_classes{PFAM})) ) {
368          get_attribute_based_domain_observations($fid,\%domain_classes,\@matched_datasets);          get_attribute_based_domain_observations($fid,\%domain_classes,\@matched_datasets);
369            }
370            if ($pch_flag == 1)
371            {
372                get_functional_coupling($fid,\@matched_datasets);
373            }
374            if ($sims_flag == 1)
375            {
376                get_sims_observations($fid,\@matched_datasets);
377            }
378    
379          #add CELLO and SignalP later          #add CELLO and SignalP later
380      }      }
# Line 352  Line 384 
384          if($dataset->{'type'} eq "dom"){          if($dataset->{'type'} eq "dom"){
385              $object = Observation::Domain->new($dataset);              $object = Observation::Domain->new($dataset);
386          }          }
387            if($dataset->{'class'} eq "PCH"){
388                $object = Observation::FC->new($dataset);
389            }
390            if ($dataset->{'class'} eq "IDENTICAL"){
391                $object = Observation::Identical->new($dataset);
392            }
393            if ($dataset->{'class'} eq "SIM"){
394                $object = Observation::Sims->new($dataset);
395            }
396          push (@$objects, $object);          push (@$objects, $object);
397      }      }
398    
# Line 442  Line 483 
483    
484          if($domain_classes->{$parts[0]}){          if($domain_classes->{$parts[0]}){
485              my $val = @$attr_ref[2];              my $val = @$attr_ref[2];
486              if($val =~/^(\d+\.\d+);(\d+)-(\d+)/){              if($val =~/^(\d+\.\d+|0\.0);(\d+)-(\d+)/){
487                  my $raw_evalue = $1;                  my $raw_evalue = $1;
488                    my $from = $2;
489                    my $to = $3;
490                  my $evalue;                  my $evalue;
491                  if($raw_evalue =~/(\d+)\.(\d+)/){                  if($raw_evalue =~/(\d+)\.(\d+)/){
492                      my $part2 = 1000 - $1;                      my $part2 = 1000 - $1;
# Line 451  Line 494 
494                      $evalue = $part1."e-".$part2;                      $evalue = $part1."e-".$part2;
495                  }                  }
496                  else{                  else{
497                      $evalue = "0";                      $evalue = "0.0";
498                  }                  }
499    
                 my $from = $2;  
                 my $to = $3;  
500                  my $dataset = {'class' => $class,                  my $dataset = {'class' => $class,
501                                 'acc' => $key,                                 'acc' => $key,
502                                 'type' => "dom" ,                                 'type' => "dom" ,
# Line 559  Line 600 
600          my $evalue = $sim->[10];          my $evalue = $sim->[10];
601          my $from = $sim->[8];          my $from = $sim->[8];
602          my $to = $sim->[9];          my $to = $sim->[9];
603          $dataset = [ { name => 'class', value => "SIM" },          $dataset = {'class' => 'SIM',
604                          { name => 'acc' , value => $hit},                      'acc' => $hit,
605                          { name => 'type', value => "seq"} ,                      'type' => 'seq',
606                          { name => 'evalue', value => $evalue },                      'evalue' => $evalue,
607                          { name => 'start', value => $from},                      'start' => $from,
608                          { name => 'stop' , value => $to}                      'stop' => $to
609                          ];                      };
610    
611      push (@{$datasets_ref} ,$dataset);      push (@{$datasets_ref} ,$dataset);
612      }      }
613  }  }
# Line 608  Line 650 
650          my $organism = $fig->org_of($fid);          my $organism = $fig->org_of($fid);
651          my $who = $row->[1];          my $who = $row->[1];
652          my $assignment = $row->[2];          my $assignment = $row->[2];
653          $dataset = [ { name => 'class', value => "IDENTICAL" },  
654                       { name => 'id' , value => $id},          my $dataset = {'class' => 'IDENTICAL',
655                       { name => 'organism', value => "$organism"} ,                         'id' => $id,
656                       { name => 'database', value => $who },                         'organism' => $organism,
657                       { name => 'description' , value => $assignment}                         'type' => 'seq',
658                       ];                         'database' => $who,
659                           'function' => $assignment
660                           };
661    
662          push (@{$datasets_ref} ,$dataset);          push (@{$datasets_ref} ,$dataset);
663      }      }
664    
# Line 650  Line 695 
695          my $id = $row->[1];          my $id = $row->[1];
696          my $score = $row->[0];          my $score = $row->[0];
697          my $description = $row->[2];          my $description = $row->[2];
698          $dataset = [ { name => 'class', value => "FC" },          my $dataset = {'class' => 'PCH',
699                       { name => 'score' , value => $score},                         'score' => $score,
700                       { name => 'id', value => "$id"} ,                         'id' => $id,
701                       { name => 'description' , value => $description}                         'type' => 'fc',
702                       ];                         'function' => $description
703                           };
704    
705          push (@{$datasets_ref} ,$dataset);          push (@{$datasets_ref} ,$dataset);
706      }      }
707  }  }
# Line 775  Line 822 
822      return $self->{organism};      return $self->{organism};
823  }  }
824    
825    =head3 function (internal)
826    
827    Returns the function of the identical sequence
828    
829    =cut
830    
831    sub function {
832        my ($self) = @_;
833    
834        return $self->{function};
835    }
836    
837  =head3 database (internal)  =head3 database (internal)
838    
839  Returns the database of the identical sequence  Returns the database of the identical sequence
# Line 787  Line 846 
846      return $self->{database};      return $self->{database};
847  }  }
848    
 #package Observation::Identical;  
 #1;  
 #  
 #our @ISA = qw(Observation);  # inherits all the methods from Observation  
849    
850  =head3 display_identical()  ############################################################
851    ############################################################
852    package Observation::Identical;
853    
854    use base qw(Observation);
855    
856    sub new {
857    
858        my ($class,$dataset) = @_;
859        my $self = $class->SUPER::new($dataset);
860        $self->{id} = $dataset->{'id'};
861        $self->{organism} = $dataset->{'organism'};
862        $self->{function} = $dataset->{'function'};
863        $self->{database} = $dataset->{'database'};
864    
865        bless($self,$class);
866        return $self;
867    }
868    
869    =head3 display()
870    
871  If available use the function specified here to display the "raw" observation.  If available use the function specified here to display the "raw" observation.
872  This code will display a table for the identical protein  This code will display a table for the identical protein
873    
874    
875  B<Please note> that URL linked to in display_method() is an external component and needs to added to the code for every class of evidence.  B<Please note> that URL linked to in display_method() is an external component and needs to added to the code for every class of evi
876    dence.
877    
878  =cut  =cut
879    
880  sub display_identical {  sub display{
881      my ($self, $fid, $cgi) = @_;      my ($self, $cgi, $dataset) = @_;
   
     my $content;  
     my $array=Observation->get_objects($fid);  
882    
883      my $all_domains = [];      my $all_domains = [];
884      my $count_identical = 0;      my $count_identical = 0;
885      foreach my $thing (@$array) {      my $content;
886        foreach my $thing (@$dataset) {
887          next if ($thing->class ne "IDENTICAL");          next if ($thing->class ne "IDENTICAL");
888          my $single_domain = [];          my $single_domain = [];
889          push(@$single_domain,$thing->class);          push(@$single_domain,$thing->database);
890          my $id = $thing->id;          my $id = $thing->id;
891          $count_identical++;          $count_identical++;
892          push(@$single_domain,&HTML::set_prot_links($cgi,$id));          push(@$single_domain,&HTML::set_prot_links($cgi,$id));
893          push(@$single_domain,$thing->organism);          push(@$single_domain,$thing->organism);
894          push(@$single_domain,$thing->database);          #push(@$single_domain,$thing->type);
895          push(@$single_domain,$thing->description);          push(@$single_domain,$thing->function);
896          push(@$all_domains,$single_domain);          push(@$all_domains,$single_domain);
897      }      }
898    
899      if ($count_identical >0){      if ($count_identical >0){
900          my $table_component = $self->application->component('DomainTable');          $content = $all_domains;
   
         $table_component->columns ([ { 'name' => 'Name', 'filter' => 1 },  
                                      { 'name' => 'ID' },  
                                      { 'name' => 'Organism' },  
                                      { 'name' => 'Database' },  
                                      { 'name' => 'Assignment' }  
                                      ]);  
         $table_component->data($all_domains);  
         $table_component->show_top_browse(1);  
         $table_component->show_bottom_browse(1);  
         $table_component->items_per_page(50);  
         $table_component->show_select_items_per_page(1);  
         $content .= $table_component->output();  
901      }      }
902      else{      else{
903          $content = "<p>This PEG does not have any essentially identical proteins</p>";          $content = "<p>This PEG does not have any essentially identical proteins</p>";
# Line 845  Line 905 
905      return ($content);      return ($content);
906  }  }
907    
908    1;
909    
910    
911    #########################################
912    #########################################
913    package Observation::FC;
914    1;
915    
916    use base qw(Observation);
917    
918    sub new {
919    
920        my ($class,$dataset) = @_;
921        my $self = $class->SUPER::new($dataset);
922        $self->{score} = $dataset->{'score'};
923        $self->{id} = $dataset->{'id'};
924        $self->{function} = $dataset->{'function'};
925    
926        bless($self,$class);
927        return $self;
928    }
929    
930    =head3 display()
931    
932    If available use the function specified here to display the "raw" observation.
933    This code will display a table for the identical protein
934    
935    
936    B<Please note> that URL linked to in display_method() is an external component and needs to added to the code for every class of evi
937    dence.
938    
939    =cut
940    
941    sub display {
942        my ($self,$cgi,$dataset, $fid) = @_;
943    
944        my $functional_data = [];
945        my $count = 0;
946        my $content;
947    
948        foreach my $thing (@$dataset) {
949            my $single_domain = [];
950            next if ($thing->class ne "PCH");
951            $count++;
952    
953            # construct the score link
954            my $score = $thing->score;
955            my $toid = $thing->id;
956            my $link = $cgi->url(-relative => 1) . "?user=master&request=show_coupling_evidence&prot=$fid&to=$toid&SPROUT=";
957            my $sc_link = "<a href=$link>$score</a>";
958    
959            push(@$single_domain,$sc_link);
960            push(@$single_domain,$thing->id);
961            push(@$single_domain,$thing->function);
962            push(@$functional_data,$single_domain);
963        }
964    
965        if ($count >0){
966            $content = $functional_data;
967        }
968        else
969        {
970            $content = "<p>This PEG does not have any functional coupling</p>";
971        }
972        return ($content);
973    }
974    
975    
976    #########################################
977    #########################################
978  package Observation::Domain;  package Observation::Domain;
979    
980  use base qw(Observation);  use base qw(Observation);
# Line 911  Line 1041 
1041    
1042  }  }
1043    
1044    #########################################
1045    #########################################
1046    package Observation::Sims;
1047    
1048    use base qw(Observation);
1049    
1050    sub new {
1051    
1052        my ($class,$dataset) = @_;
1053        my $self = $class->SUPER::new($dataset);
1054        $self->{acc} = $dataset->{'acc'};
1055        $self->{evalue} = $dataset->{'evalue'};
1056        $self->{start} = $dataset->{'start'};
1057        $self->{stop} = $dataset->{'stop'};
1058    
1059        bless($self,$class);
1060        return $self;
1061    }
1062    
1063    =head3 display()
1064    
1065    If available use the function specified here to display the "raw" observation.
1066    This code will display a table for the similarities protein
1067    
1068    B<Please note> that URL linked to in display_method() is an external component and needs to added to the code for every class of evidence.
1069    
1070    =cut
1071    
1072    sub display {
1073        my ($self,$cgi,$dataset) = @_;
1074    
1075        my $data = [];
1076        my $count = 0;
1077        my $content;
1078    
1079        foreach my $thing (@$dataset) {
1080            my $single_domain = [];
1081            next if ($thing->class ne "SIM");
1082            $count++;
1083    
1084            push(@$single_domain,&HTML::set_prot_links($cgi,$thing->acc));
1085            push(@$single_domain,$thing->start);
1086            push(@$single_domain,$thing->stop);
1087            push(@$single_domain,$thing->evalue);
1088            push(@$data,$single_domain);
1089        }
1090    
1091        if ($count >0){
1092            $content = $data;
1093        }
1094        else
1095        {
1096            $content = "<p>This PEG does not have any similarities</p>";
1097        }
1098        return ($content);
1099    }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.10

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3