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

Diff of /FigWebServices/diffsF.cgi

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

revision 1.3, Wed Oct 18 02:43:53 2006 UTC revision 1.4, Wed Oct 18 07:24:04 2006 UTC
# Line 21  Line 21 
21  use FIG;  use FIG;
22  my $fig = new FIG;  my $fig = new FIG;
23    
24    use FigFam;
25    my $default_dir = "$FIG_Config::data/FigfamsData";
26    
27  use HTML;  use HTML;
28    
29  use CGI;  use CGI;
# Line 70  Line 73 
73  $org1 = $cgi->param('org1');  $org1 = $cgi->param('org1');
74  $org2 = $cgi->param('org2');  $org2 = $cgi->param('org2');
75  $gene = $cgi->param('gene');  $gene = $cgi->param('gene');
76    $align1 = $cgi->param('align1');
77    $align2 = $cgi->param('align2');
78    
79  if (!((-d $org1) || (-d $org2)))  if (!((-d $org1) || (-d $org2)))
80  {  {
81      push(@$html,$cgi->h1("bad parms: gene=$gene org1=$org1 org2=$org2"));      push(@$html,$cgi->h1("bad parms: gene=$gene align1=$align1 align2=$align2 org1=$org1 org2=$org2"));
82  }  }
83  elsif ($gene = $cgi->param('gene'))  elsif ($gene = $cgi->param('gene'))
84  {  {
85      &show_region($fig,$cgi,$html,$org1,$gene);      &show_region($fig,$cgi,$html,$org1,$gene);
86  }  }
87    elsif (($gene1 = $cgi->param('align1')) && ($gene2 = $cgi->param('align2')))
88    {
89        &show_alignment($fig, $cgi, $html, $gene1, $gene2, $org1, $org2);
90    }
91  else  else
92  {  {
93      &list_diffs($fig,$cgi,$html,$org1,$org2);      &list_diffs($fig,$cgi,$html,$org1,$org2);
# Line 107  Line 116 
116              $max = &FIG::max($max,$beg);              $max = &FIG::max($max,$beg);
117              $max = &FIG::max($max,$end);              $max = &FIG::max($max,$end);
118              $fid = $f->[FID];              $fid = $f->[FID];
119              $fid =~ /\.([a-z]+\.\d+)$/;  #           $fid =~ /\.([a-z]+\.\d+)$/;
120              $info = $1;  #           $info = $1;
121              push(@$genes,[ &FIG::min($beg,$end),              push(@$genes,[ &FIG::min($beg,$end),
122                             &FIG::max($beg,$end),                             &FIG::max($beg,$end),
123                             ($beg < $end) ? "rightArrow" : "leftArrow",                             ($beg < $end) ? "rightArrow" : "leftArrow",
# Line 169  Line 178 
178                      $changed = qq(shortened);                      $changed = qq(shortened);
179                  }                  }
180    
181                  push @both, [ $changed, $link1, $len1, $link2, $len2 ];                  push @both, [ $changed, $link1, $len1, $link2, $len2, ($len2 - $len1) ];
182              }              }
183          }          }
184          else          else
185          {          {
186              $fid1 = $org1T->{$key}->[FID];              $fid1 = $org1T->{$key}->[FID];
187              $link1 = &link($org1,$fid1);              $link1 = &link($org1,$fid1);
188              push @just2, [ $link1, $org1T->{$key}->[LEN] ];              push @just1, [ $link1, $org1T->{$key}->[LEN] ];
189          }          }
190      }      }
191    
# Line 193  Line 202 
202          }          }
203      }      }
204    
205      push @$html, map { $cgi->h2("$_->[0]:, $_->[1] ($_->[2] bp) => $_->[3] ($_->[4] bp)")      push @$html, map {
206            $align = qq(<A HREF="diffsF.cgi?align1=$_->[1]&align2=$_->[3]&org1=$org1&org2=$org2">align</A>);
207            $cgi->h2("$align $_->[0]: $_->[1] ($_->[2] bp) => $_->[3] ($_->[4] bp), diff=$_->[5]")
208                   }                   }
209                   sort { abs($b->[4] - $b->[2]) <=> abs($a->[4] - $a->[2])      sort {
210            abs($b->[5]) <=> abs($a->[5])
211                   } @both;                   } @both;
212    
213      push @$html, map { $cgi->h2("just2: $_->[0] ($_->[1] bp)")  
214        push @$html, map {
215            $cgi->h2("just2: $_->[0] ($_->[1] bp)")
216                   }                   }
217                   sort { $b->[1] <=> $a->[1]      sort {
218            $b->[1] <=> $a->[1]
219                   } @just2;                   } @just2;
220    
221      push @$html, map { $cgi->h2("just1: $_->[0] ($_->[1] bp)")  
222        push @$html, map {
223            $cgi->h2("just1: $_->[0] ($_->[1] bp)")
224                   }                   }
225                   sort { $b->[1] <=> $a->[1]      sort {
226            $b->[1] <=> $a->[1]
227                   } @just1;                   } @just1;
228  }  }
229    
230    sub show_alignment {
231        my ($fig, $cgi, $html, $gene1, $gene2, $org1, $org2) = @_;
232    
233        my %neighbors = map { m/^(\d+\.\d+)/o ? ($1 => 1) : () } `cat $org2/neighbors`;
234    
235        my (@tmp, $tmp);
236        if (@tmp = grep { m/^(\S+)/o && ($1 eq $gene2) } `cat $org2/found`) {
237            if ($tmp[0] =~ m/^\S+\t(FIG\d{6})/o) {
238                $figfam = new FigFam($fig, $1, $default_dir);
239                my @members = grep { $neighbors{$fig->genome_of($_)} } $figfam->list_members();
240    
241                my $tmp_seqs = "$FIG_Config::temp/tmp.$$";
242                open(TMP, ">$tmp_seqs")
243                    || ((push @$html, $cgi->h2("Could not write-open $tmp_seqs")) && return);
244    
245                foreach my $id (@members) {
246                    my $seq = $fig->get_translation($id);
247                    &FIG::display_id_and_seq($id, \$seq, \*TMP);
248                }
249                close(TMP)
250                    || ((push @$html, $cgi->h2("Could not close $tmp_seqs")) && return);
251    
252                $tmp = $gene1;
253                $tmp =~ s{\|}{\\\|}o;
254                system("echo $tmp1 | pull_fasta_entries $org1/Features/peg/fasta >> $tmp_seqs")
255                    && ((push @$html, $cgi->h2("Could not append seq of $gene1 to $tmp_seqs")) && return);
256    
257                $tmp = $gene2;
258                $tmp =~ s{\|}{\\\|}o;
259                system("echo $tmp1 | pull_fasta_entries $org2/Features/peg/fasta >> $tmp_seqs")
260                    && ((push @$html, $cgi->h2("Could not append seq of $gene2 to $tmp_seqs")) && return);
261    
262                system("clustalw -infile=$tmp_seqs -align -outorder=aligned > /dev/null")
263                    && ((push @$html, $cgi->h2("clustalw failed on file $tmp_seqs")) && return);
264    
265                push @$html, qq(<pre>\n);
266                push @$html, `cat $tmp_seqs.aln`;
267                push @$html, qq(</pre>\n);
268            }
269            else {
270                $tmp[0] =~ s/\t/ /go;
271                push @$html, $cgi->h2("Could not parse family from entry: $tmp[0]");
272            }
273        }
274        else {
275            push @$html, $cgi->h2("No family found for gene2=$gene2");
276        }
277    }
278    
279  sub load_tbl1  sub load_tbl1
280  {  {
281      my ($dir) = @_;      my ($dir) = @_;

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3