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

Annotation of /FigKernelScripts/add_prots_to_tree.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (view) (download) (as text)

1 : golsen 1.1 #! /usr/bin/perl
2 :    
3 :     use gjoseqlib;
4 :     use gjonewicklib;
5 :     use gjophylip;
6 :     use InsertIntoTree;
7 :     use strict;
8 :    
9 :     my $usage = <<"End_of_Usage";
10 :     usage: add_prots_to_tree AlignmentFile TreeFile > new_tree";
11 :    
12 :     Options for program:
13 :    
14 :     -d tmp place for tmpdir (D = /tmp)
15 :     -i ids_to_add list (D = all in alignment but not tree)
16 :     -l checkpoint_file (D = none)
17 :     -n neighborhood_size (D = add_seq_to_big_tree default)
18 :     -r rough_tree_file (D = compute protdist/neighbor-joining tree)
19 :     -t tmpdir (D = automaticly generated)
20 :    
21 :     Options for proml:
22 :    
23 :     -a alpha 0 - inf (D = none)
24 :     -b gamma_rate_bins 2 - 9 (D = proml default)
25 :     -c categories_file (D = all sites equal)
26 :     -f frac_sites_invar 0 - 1 (D = none)
27 :     -m model JTT, PAM or PMB model (D = JTT)
28 :     JTT = Jones / Taylor / Thornton
29 :     PAM = Dayhoff PAM matrix
30 :     PMB = Tillier and Henikoff
31 :     -w weights_file (D = all sites equal)
32 :    
33 :     End_of_Usage
34 :    
35 :     my $alpha = undef;
36 :     my $bins = undef;
37 :     my $categs = undef;
38 :     my $checkpoint = undef;
39 :     my $ids = undef;
40 :     my $invar = undef;
41 :     my $model = undef;
42 :     my $rough = undef;
43 :     my $size_rep = undef;
44 :     my $tmp = undef;
45 :     my $tmpdir = undef;
46 :     my $weights = undef;
47 :    
48 :     while ($ARGV[0] =~ /^-/)
49 :     {
50 :     $_ = shift @ARGV;
51 :     if ($_ =~ s/^-a//) { $alpha = ($_ || shift @ARGV) }
52 :     elsif ($_ =~ s/^-b//) { $bins = ($_ || shift @ARGV) }
53 :     elsif ($_ =~ s/^-c//) { $categs = ($_ || shift @ARGV) }
54 :     elsif ($_ =~ s/^-f//) { $invar = ($_ || shift @ARGV) }
55 :     elsif ($_ =~ s/^-i//) { $ids = ($_ || shift @ARGV) }
56 :     elsif ($_ =~ s/^-l//) { $checkpoint = ($_ || shift @ARGV) }
57 :     elsif ($_ =~ s/^-m//) { $model = ($_ || shift @ARGV) }
58 :     elsif ($_ =~ s/^-n//) { $size_rep = ($_ || shift @ARGV) }
59 :     elsif ($_ =~ s/^-r//) { $rough = ($_ || shift @ARGV) }
60 :     elsif ($_ =~ s/^-w//) { $weights = ($_ || shift @ARGV) }
61 :     else { die "Bad Flag: $_" }
62 :     }
63 :    
64 :     # Get the alignment:
65 :    
66 :     my ( $aliF, @align );
67 :     ( $aliF = shift @ARGV )
68 :     && ( -f $aliF )
69 :     && ( @align = gjoseqlib::read_fasta( $aliF ) )
70 :     && ( @align )
71 :     or print STDERR "Bad alignment\n"
72 :     and print STDERR $usage
73 :     and exit 1;
74 :    
75 :     # Get the tree:
76 :    
77 :     my ( $treeF, $tree0 );
78 :     ( $treeF = shift @ARGV )
79 :     && ( -f $treeF )
80 :     && ( $tree0 = gjonewicklib::read_newick_tree( $treeF ) )
81 :     or print STDERR "Bad tree\n"
82 :     and print STDERR $usage
83 :     and exit 1;
84 :    
85 :     $tree0 = gjonewicklib::newick_strip_comments( $tree0 );
86 :     if ( gjonewicklib::newick_is_rooted( $tree0 ) )
87 :     {
88 :     $tree0 = gjonewicklib::uproot_newick( $tree0 );
89 :     }
90 :    
91 :     # Set up the options hash for add_seq_to_big_tree:
92 :    
93 :     my %options = ( align => \@align,
94 :     tree => $tree0,
95 :     neighborhood => $size_rep
96 :     );
97 :    
98 :     # Deal with flags:
99 :    
100 :     $options{ alpha } = $alpha if $alpha;
101 :    
102 :    
103 :     $options{ gamma_bins } = $bins if $bins;
104 :    
105 :    
106 :     if ( $categs )
107 :     {
108 :     my $categ_data = gjophylip::categories( $categs )
109 :     or print STDERR "Failed to read categories data from $categs\n"
110 :     and exit 1;
111 :     $options{ categories } = $categ_data;
112 :     }
113 :    
114 :    
115 :     $options{ checkpoint } = $checkpoint if $checkpoint;
116 :    
117 :    
118 :     if ( $ids )
119 :     {
120 :     $options{ ids } = split /[, ]+/, $ids;
121 :     }
122 :    
123 :    
124 :     $options{ invar_frac } = $invar if $invar;
125 :    
126 :    
127 :     $options{ model } = $model if $model;
128 :    
129 :    
130 :     if ( $rough )
131 :     {
132 :     my $rough_tree;
133 :     ( -f $rough )
134 :     && ( $rough_tree = gjonewicklib::read_newick_tree( $rough ) )
135 :     or print STDERR "Bad rough tree\n"
136 :     and print STDERR $usage
137 :     and exit 1;
138 :    
139 :     $rough_tree = gjonewicklib::newick_strip_comments( $rough_tree );
140 :     if ( gjonewicklib::newick_is_rooted( $rough_tree ) )
141 :     {
142 :     $rough_tree = gjonewicklib::uproot_newick( $rough_tree );
143 :     }
144 :    
145 :     $options{ rough_tree } = $rough_tree;
146 :     }
147 :    
148 :    
149 :     $options{ tmp } = $tmp if $tmp;
150 :    
151 :     $options{ tmpdir } = $tmpdir if $tmpdir;
152 :    
153 :    
154 :     if ( $weights )
155 :     {
156 :     my $weights_data = gjophylip::categories( $weights )
157 :     or print STDERR "Failed to read categories data from $weights\n"
158 :     and exit 1;
159 :     $options{ weights } = $weights_data;
160 :     }
161 :    
162 :    
163 :     my $new_tree = InsertIntoTree::add_seq_to_big_tree( \%options );
164 :    
165 :     $new_tree
166 :     or print STDERR "Addition failed\n"
167 :     and exit 1;
168 :    
169 :     gjonewicklib::writeNewickTree( $new_tree );

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3