[Bio] / FigKernelPackages / AliTree.pm Repository:
ViewVC logotype

Diff of /FigKernelPackages/AliTree.pm

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

revision 1.1, Thu Jul 12 17:52:56 2007 UTC revision 1.5, Sat Sep 15 22:33:31 2007 UTC
# Line 64  Line 64 
64      if (! defined("$dir/full.ali"))   { return undef }      if (! defined("$dir/full.ali"))   { return undef }
65    
66      my($ali,$core_ali);      my($ali,$core_ali);
67      (open(ALI,"<$dir/full.ali") && ($ali = &gjoseqlib::read_fasta(\*ALI)))      open(ALI,"<$dir/full.ali") || die "could not open $dir/full.ali";
68          || return undef;      ($ali = &gjoseqlib::read_fasta(\*ALI)) || die "$dir/full.ali is not well-formatted fasta";
69      close(ALI);      close(ALI);
70    
71      if (open(ALI,"<$dir/core.ali") && ($core_ali = &gjoseqlib::read_fasta(\*ALI)))      if (open(ALI,"<$dir/core.ali") && ($core_ali = &gjoseqlib::read_fasta(\*ALI)))
# Line 85  Line 85 
85          $ali      = [grep { ! $deleted{$_->[0]} } @$ali];          $ali      = [grep { ! $deleted{$_->[0]} } @$ali];
86          $core_ali = $core_ali ? [grep { ! $deleted{$_->[0]} } @$core_ali] : undef;          $core_ali = $core_ali ? [grep { ! $deleted{$_->[0]} } @$core_ali] : undef;
87      }      }
88    
89      if (@$ali < 2)         { return undef }      if (@$ali < 2)         { return undef }
90    
91      my @coords = ();      my @coords = ();
# Line 143  Line 144 
144          &gjoseqlib::print_alignment_as_fasta(\*ALI,$ali);          &gjoseqlib::print_alignment_as_fasta(\*ALI,$ali);
145          close(ALI);          close(ALI);
146    
147          if (open(ALI,">$dir/core.ali"))          if ($core_ali && (@$core_ali > 1) && open(ALI,">$dir/core.ali"))
148          {          {
149              &gjoseqlib::print_alignment_as_fasta(\*ALI,$core_ali);              &gjoseqlib::print_alignment_as_fasta(\*ALI,$core_ali);
150              close(ALI);              close(ALI);
# Line 194  Line 195 
195      {      {
196          my $id     = $self->{id};          my $id     = $self->{id};
197          my $data   = $self->{data};          my $data   = $self->{data};
198          my $dir    = "$data/$id";          my $dir    = $self->{dir};
199          my $ali    = $self->{ali};          my $ali    = $self->{ali};
200          if ((! -s "$dir/tree.newick") && (@$ali > 3))          if ((! -s "$dir/tree.newick") && (@$ali > 3))
201          {          {
# Line 223  Line 224 
224      return $self->{coords};      return $self->{coords};
225  }  }
226    
227    sub functions_in {
228        my($self) = @_;
229        my $fig    = $self->{fig};
230    
231        my($pegH,$peg,%funcs);
232        $pegH = $self->{coords};
233        foreach $peg (keys(%$pegH))
234        {
235            my $func = $fig->function_of($peg);
236            $funcs{$func}++;
237        }
238        return map { [$funcs{$_},$_] } sort { $funcs{$b} <=> $funcs{$a} } keys(%funcs);
239    }
240    
241  sub display {  sub display {
242      my($self) = @_;      my($self) = @_;
243    
# Line 322  Line 337 
337      return (-s "$dir/full.html") ? join("",`cat $dir/full.html`) : undef;      return (-s "$dir/full.html") ? join("",`cat $dir/full.html`) : undef;
338  }  }
339    
340    sub phob_dir {
341        my($self) = @_;
342    
343        my $dir    = $self->{dir};
344        if (! -d "$dir/PHOB")
345        {
346            if ($self->make_phob_dir("$dir/PHOB"))
347            {
348                return "$dir/PHOB";
349            }
350            else
351            {
352                return "";
353            }
354        }
355        else
356        {
357            return "$dir/PHOB";
358        }
359    }
360    
361    sub make_phob_dir {
362        my($self,$dir) = @_;
363    
364        if (-d $dir)
365        {
366            print STDERR "Attempt to make $dir failed: it already exists\n";
367            return 0;
368        }
369        &FIG::verify_dir($dir);
370    
371        my($ali,$tree);
372        if (($ali = $self->ali) && ($tree = $self->tree))
373        {
374            my($n,$to,$id,$seq,$idN,$tuple);
375            open(IDS,">$dir/ids")       || die "could not open $dir/ids";
376            open(ALI,">$dir/aln.fasta") || die "could not open $dir/aln.fasta";
377            open(TREE,">$dir/tree.dnd") || die "could not open $dir/tree.dnd";
378            $n = 1;
379            $to = {};
380            foreach $tuple (@$ali)
381            {
382                ($id,undef,$seq) = @$tuple;
383                $idN = "id$n";
384                $n++;
385                print IDS "$idN\t$id\n";
386                $to->{$id} = $idN;
387                $seq =~ s/\s//gs;
388                $seq =~ s/[uU]/x/g;
389                &FIG::display_id_and_seq($idN,\$seq,\*ALI);
390            }
391            &tree_utilities::relabel_nodes($tree,$to);
392            print TREE &tree_utilities::to_newick($tree),"\n";
393            close(IDS);
394            close(ALI);
395            close(TREE);
396            return 1;
397        }
398        else
399        {
400            return 0;
401        }
402    }
403    
404  1;  1;

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

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3