[Bio] / FigKernelScripts / add_prots_to_tree.pl Repository:
ViewVC logotype

View of /FigKernelScripts/add_prots_to_tree.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (download) (as text) (annotate)
Sun Feb 11 22:39:12 2007 UTC (13 years, 1 month ago) by golsen
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, myrast_rel40, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
New script for adding proteins to an existing tree.

#! /usr/bin/perl

use gjoseqlib;
use gjonewicklib;
use gjophylip;
use InsertIntoTree;
use strict;

my $usage = <<"End_of_Usage";
usage: add_prots_to_tree  AlignmentFile  TreeFile  > new_tree";

       Options for program:

        -d tmp               place for tmpdir (D = /tmp)
        -i ids_to_add        list (D = all in alignment but not tree)
        -l checkpoint_file   (D = none)
        -n neighborhood_size (D = add_seq_to_big_tree default)
        -r rough_tree_file   (D = compute protdist/neighbor-joining tree)
        -t tmpdir            (D = automaticly generated)

       Options for proml:

        -a alpha             0 - inf (D = none)
        -b gamma_rate_bins   2 - 9 (D = proml default)
        -c categories_file   (D = all sites equal)
        -f frac_sites_invar  0 - 1 (D = none)
        -m model             JTT, PAM or PMB model (D = JTT)
                                   JTT = Jones / Taylor / Thornton
                                   PAM = Dayhoff PAM matrix
                                   PMB = Tillier and Henikoff
        -w weights_file      (D = all sites equal)

End_of_Usage

my $alpha      = undef;
my $bins       = undef;
my $categs     = undef;
my $checkpoint = undef;
my $ids        = undef;
my $invar      = undef;
my $model      = undef;
my $rough      = undef;
my $size_rep   = undef;
my $tmp        = undef;
my $tmpdir     = undef;
my $weights    = undef;

while ($ARGV[0] =~ /^-/)
{
    $_ = shift @ARGV;
    if    ($_ =~ s/^-a//) { $alpha      = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-b//) { $bins       = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-c//) { $categs     = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-f//) { $invar      = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-i//) { $ids        = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-l//) { $checkpoint = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-m//) { $model      = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-n//) { $size_rep   = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-r//) { $rough      = ($_ || shift @ARGV) }
    elsif ($_ =~ s/^-w//) { $weights    = ($_ || shift @ARGV) }
    else                  { die "Bad Flag: $_" }
}

#  Get the alignment:

my ( $aliF, @align );
( $aliF = shift @ARGV )
    && ( -f $aliF )
    && ( @align = gjoseqlib::read_fasta( $aliF ) )
    && ( @align )
        or print STDERR "Bad alignment\n"
        and print STDERR $usage
        and exit 1;

#  Get the tree:

my ( $treeF, $tree0 );
( $treeF = shift @ARGV )
    && ( -f $treeF )
    && ( $tree0 = gjonewicklib::read_newick_tree( $treeF ) )
        or print STDERR "Bad tree\n"
        and print STDERR $usage
        and exit 1;

$tree0 = gjonewicklib::newick_strip_comments( $tree0 );
if ( gjonewicklib::newick_is_rooted( $tree0 ) )
{
    $tree0 = gjonewicklib::uproot_newick( $tree0 );
}

#  Set up the options hash for add_seq_to_big_tree:

my %options = ( align        => \@align,
                tree         =>  $tree0,
                neighborhood =>  $size_rep
              );

#  Deal with flags:

$options{ alpha } =  $alpha if $alpha;


$options{ gamma_bins } =  $bins if $bins;


if ( $categs )
{
    my $categ_data = gjophylip::categories( $categs )
        or print STDERR "Failed to read categories data from $categs\n"
        and exit 1;
    $options{ categories } = $categ_data;
}


$options{ checkpoint } =  $checkpoint if $checkpoint;


if ( $ids )
{
    $options{ ids } = split /[, ]+/, $ids;
}


$options{ invar_frac } =  $invar if $invar;


$options{ model } =  $model if $model;


if ( $rough )
{
    my $rough_tree;
    ( -f $rough )
        && ( $rough_tree = gjonewicklib::read_newick_tree( $rough ) )
        or print STDERR "Bad rough tree\n"
        and print STDERR $usage
        and exit 1;

    $rough_tree = gjonewicklib::newick_strip_comments( $rough_tree );
    if ( gjonewicklib::newick_is_rooted( $rough_tree ) )
    {
        $rough_tree = gjonewicklib::uproot_newick( $rough_tree );
    }

    $options{ rough_tree } = $rough_tree;
}


$options{ tmp    } = $tmp    if $tmp;

$options{ tmpdir } = $tmpdir if $tmpdir;


if ( $weights )
{
    my $weights_data = gjophylip::categories( $weights )
        or print STDERR "Failed to read categories data from $weights\n"
        and exit 1;
    $options{ weights } = $weights_data;
}


my $new_tree = InsertIntoTree::add_seq_to_big_tree( \%options );

$new_tree
    or print STDERR "Addition failed\n"
    and exit 1;

gjonewicklib::writeNewickTree( $new_tree );

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3