[Bio] / FigWebServices / comp_MR.cgi Repository:
ViewVC logotype

Diff of /FigWebServices/comp_MR.cgi

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

revision 1.1, Sun Mar 11 20:37:54 2007 UTC revision 1.3, Mon Mar 12 21:58:58 2007 UTC
# Line 60  Line 60 
60  use FIG;  use FIG;
61  use FIGV;  use FIGV;
62    
63  my($fig);  my($fig,$use_figV);
64  if ($genome1 =~ /^\d+\.\d+/)  if ($genome1 =~ /^\d+\.\d+/)
65  {  {
66      $fig = new FIG;      $fig = new FIG;
67        $use_figV = 0;
68  }  }
69  elsif (($genome1 =~ /\d+\.\d+$/) && (-d $genome1))  elsif (($genome1 =~ /\d+\.\d+$/) && (-d $genome1))
70  {  {
71      my $tmp = new FIG;      my $tmp = new FIG;
72      $fig    = new FIGV($genome1,$tmp);      $fig    = new FIGV($genome1,$tmp);
73        $use_figV = 1;
74  }  }
75    
76  my($common,$in1_not2,$in2_not1) = &CompareMR::compare_genomes_MR($genome1,$genome2);  my($common,$in1_not2,$in2_not1) = &CompareMR::compare_genomes_MR($genome1,$genome2);
# Line 77  Line 79 
79    
80  if ($request eq "common")  if ($request eq "common")
81  {  {
82      &process_common($fig,$cgi,$html,$common);      push @$html, "<h2>Showing common pegs between $genome1 and $genome2</h2>";
83        &process_data($fig,$cgi,$html,$common,$use_figV);
84    }
85    elsif ($request eq "in1_not2")
86    {
87        push @$html, "<h2>Showing pegs in $genome1, but not in $genome2</h2>";
88        &process_data($fig,$cgi,$html,$in1_not2,$use_figV);
89    }
90    elsif ($request eq "in2_not1")
91    {
92        push @$html, "<h2>Showing pegs in $genome2, but not in $genome1</h2>";
93        &process_data($fig,$cgi,$html,$in2_not1,0);
94    }
95    elsif ($request eq "find_similar_pegs") {
96        &find_similar_pegs($fig, $cgi, $html,$use_figV);
97  }  }
   
   
98  unshift @$html, "<TITLE>Compare Metabolic Reconstructions</TITLE>\n";  unshift @$html, "<TITLE>Compare Metabolic Reconstructions</TITLE>\n";
99    
100  &HTML::show_page($cgi,$html);  &HTML::show_page($cgi,$html);
101    
102  sub process_common {  sub process_data {
103      my($fig,$cgi,$html,$common) = @_;      my($fig,$cgi,$html,$data,$use_figV) = @_;
104      my($tuple,$sub,$role,$pegs1,$pegs2,$classification,$class1,$class2);      my($tuple,$sub,$role,$pegs1,$pegs2,$classification,$class1,$class2);
105      my($key,%subH,$subH1,$subH2,$subH3,@roles,$subL,$pegL,$peg);      my($key,%subH,$subH1,$subH2,$subH3,@roles,$subL,$pegL,$peg);
106    
107      foreach $tuple (@$common)      foreach $tuple (@$data)
108      {      {
109          ($sub,$role,$pegs1,$pegs2) = @$tuple;          ($sub,$role,$pegs1) = @$tuple;
110          $classification = $fig->subsystem_classification($sub);          $classification = $fig->subsystem_classification($sub);
111          $class1 = $classification->[0] || "Unclassified";          $class1 = $classification->[0] || "Unclassified";
112          $class2 = $classification->[1] || "Unclassified";          $class2 = $classification->[1] || "Unclassified";
# Line 109  Line 123 
123              push(@$html,"<h2>$class2</h2>\n");              push(@$html,"<h2>$class2</h2>\n");
124              foreach $sub (sort keys(%$subH2))              foreach $sub (sort keys(%$subH2))
125              {              {
126                    if ($use_figV)
127                    {
128                        $subL = &sub_P1K_link($cgi,$sub);
129                    }
130                    else
131                    {
132                  $subL  = &HTML::sub_link($cgi,$sub);                  $subL  = &HTML::sub_link($cgi,$sub);
133                    }
134                  $subH3 = $subH2->{$sub};                  $subH3 = $subH2->{$sub};
135                  push(@$html,"<h3>$subL</h3>\n");                  push(@$html,"<h3>$subL</h3>\n");
136                  push(@$html,"<ul>\n");                  push(@$html,"<ul>\n");
# Line 121  Line 142 
142    
143                      foreach $peg (sort { &FIG::by_fig_id($a,$b) } @$pegs1)                      foreach $peg (sort { &FIG::by_fig_id($a,$b) } @$pegs1)
144                      {                      {
145                          $pegL = &HTML::fid_link($cgi,$peg);                          $pegL = &peg_P1K_link($cgi,$fig,$peg, $use_figV);
146    
147                          push(@$html,"<li>$pegL\n");                          push(@$html,"<li>$pegL\n");
148    
149                            if ($cgi->param('request') eq 'in1_not2' or
150                                $cgi->param('request') eq 'in2_not1') {
151                                push(@$html, &peg_find_similar_link($cgi,$fig, $peg));
152                            }
153    
154                      }                      }
155                      push(@$html,"</ul>\n");                      push(@$html,"</ul>\n");
156                  }                  }
# Line 132  Line 160 
160      }      }
161  }  }
162    
163    sub peg_link {
164        my ($cgi, $fig, $use_figV, $peg) = @_;
165        if ($use_figV) {
166            return &peg_P1K_link($cgi,$fig,$peg);
167        }
168        else {
169            return &HTML::fid_link($cgi,$peg);
170        }
171    }
172    
173    sub peg_find_similar_link {
174        my($cgi,$fig,$peg) = @_;
175        return '&nbsp; <a target="find_similar_pegs" href="?genome1='.$cgi->param('genome1').
176            '&genome2='.$cgi->param('genome2').'&request=find_similar_pegs&peg='.
177            $peg.'">find similar pegs</a>';
178    }
179    
180    sub peg_P1K_link {
181        my($cgi,$fig,$peg) = @_;
182    
183        $fig->organism_directory =~ /(\d+)\/rp\/\d+\.\d+$/;
184        return "<a target='seedviewer' href='".$FIG_Config::seedviewer_url.
185            "?action=ShowAnnotation&prot=$peg&job=$1'>$peg</a>";
186    
187    }
188    
189    sub sub_P1K_link {
190        my($cgi,$sub) = @_;
191    
192        $fig->organism_directory =~ /(\d+)\/rp\/\d+\.\d+$/;
193        return "<a target='seedviewer' href='".$FIG_Config::seedviewer_url.
194            "?action=ShowSubsystem&subsystem_name=$sub&job=$1'>$sub</a>";
195    
196        return $sub;
197    }
198    
199    
200    sub find_similar_pegs {
201        my ($fig, $cgi, $html, $use_figV) = @_;
202    
203        my $peg = $cgi->param('peg');
204        my @sims = $fig->sims($peg, 50, 1.0e-20, 'fig');
205    
206        $cgi->param('genome1') =~ /(\d+\.\d+)/;
207        my $genome1 = $1;
208        $cgi->param('genome2') =~ /(\d+\.\d+)/;
209        my $genome2 = $1;
210    
211        $peg =~ /fig\|(\d+\.\d+)\./;
212        my $source = $1;
213        my $target = ($genome1 eq $source) ? $genome2 : $genome1;
214    
215        push(@$html, "<h2>Showing similar pegs from $target for $peg</h2>");
216        my @table;
217        foreach (@sims) {
218            $_->[1] =~ /fig\|(\d+\.\d+)\./;
219            if ($1 eq $target) {
220    
221                unless (@table) {
222                    push @table, [ &peg_link($cgi, $fig, $use_figV, $peg),
223                                   $fig->function_of($peg), '100.00', 'n/a', 'n/a' ];
224                }
225                push @table, [ &peg_link($cgi, $fig, $use_figV, $_->[1]),
226                               $fig->function_of($_->[1]), $_->[2], $_->[10], $_->[11] ];
227                last if (scalar(@table) == 3);
228            }
229        }
230        if (scalar(@table)) {
231            push @$html, &HTML::make_table( ['Id', 'Function', '% Identity', 'E-value', 'Bitscore' ], \@table );
232        }
233        else {
234            push @$html, '<p>No similar pegs found.</p>';
235        }
236    }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3