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

Annotation of /FigKernelScripts/align_with_clustal_2.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : golsen 1.1 # -*- perl -*-
2 :    
3 :     use strict;
4 :     use Carp;
5 :     use Data::Dumper;
6 :     use gjonewicklib qw(
7 :     parse_newick_tree_str
8 :     reroot_newick_to_approx_midpoint
9 :     aesthetic_newick_tree
10 :     newick_relabel_tips
11 :     text_plot_newick
12 :     dump_tree
13 :     );
14 :     use FIG;
15 :    
16 :     my $fig = new FIG;
17 :    
18 :     $| = 1;
19 :    
20 :     my $usage = "align_with_clustal_2 [-org] [-func[=user]] [-tree] [-UniProt] [-save=Dir] Id1 Id2 ... ";
21 :    
22 :     (@ARGV > 1) || die "usage: $usage";
23 :    
24 :     my $temp_dir = $FIG_Config::temp;
25 :     my $file = "$temp_dir/tmp$$";
26 :     my $relabel = {};
27 :     my $add_org = "";
28 :     my $save = "";
29 :     my $add_func = "";
30 :     my $tree = "";
31 :     my $uni_prot = "";
32 :     my $trouble = 0;
33 :     my $user = undef;
34 :    
35 :     while ($ARGV[0] =~ m/^-/)
36 :     {
37 :     if ($ARGV[0] =~ /-org/)
38 :     {
39 :     $add_org = shift @ARGV;
40 :     }
41 :     elsif ($ARGV[0] =~ /-save=(\S+)/)
42 :     {
43 :     $save = $1;
44 :     shift @ARGV;
45 :     }
46 :     elsif ($ARGV[0] =~ /-func/)
47 :     {
48 :     $add_func = shift @ARGV;
49 :     if ($add_func =~ m/=(\S+)/) { $user = $1; }
50 :     }
51 :     elsif ($ARGV[0] =~ /-tree/)
52 :     {
53 :     $tree = shift @ARGV;
54 :     }
55 :     elsif ($ARGV[0] =~ /-UniProt/i)
56 :     {
57 :     $uni_prot = 1;
58 :     shift @ARGV;
59 :     }
60 :     else
61 :     {
62 :     $trouble = 1;
63 :     print STDERR "Invalid flag $ARGV[0]\n";
64 :     shift @ARGV;
65 :     }
66 :     }
67 :     die "\nusage: $usage\n\n" if $trouble;
68 :    
69 :     my %seen;
70 :     open(TMP,">$file.fasta") || die "could not open $file";
71 :     foreach my $id (@ARGV)
72 :     {
73 :     next if ($seen{$id});
74 :     $seen{$id} = 1;
75 :    
76 :     if (my $seq = $fig->get_translation($id))
77 :     {
78 :     print TMP ">$id\n$seq\n";
79 :     }
80 :     else
81 :     {
82 :     print STDERR "could not find translation for $id\n";
83 :     }
84 :    
85 :     my $label = $id;
86 :     if ($uni_prot && ($_ = $fig->to_alias($id,"uni")) ) { $label .= " [$_]" }
87 :     if ($add_org && ($_ = $fig->org_of($id)) ) { $label .= " [$_]"; }
88 :     if ($add_func && ($_ = $fig->function_of($id, $user)) ) { $label .= " $_"; }
89 :    
90 :     $relabel->{$id} = $label;
91 :     }
92 :     close(TMP);
93 :     # print STDERR "$0;\n", Dumper($relabel);
94 :    
95 :     system "$FIG_Config::ext_bin/clustalw -infile=$file.fasta -align "
96 :     . ( $tree ? "-tree " : "" )
97 :     . "-outorder=aligned > /dev/null";
98 :     if ( -s "$file.aln" && open( ALIGN, "<$file.aln" ) )
99 :     {
100 :     print <ALIGN>;
101 :     close( ALIGN );
102 :     }
103 :    
104 :     if ( $tree )
105 :     {
106 :     my $treetext = "";
107 :     my $tree1;
108 :     if ( ( -s "$file.ph" && open( TREE, "<$file.ph" ) )
109 :     || ( -s "$file.dnd" && open( TREE, "<$file.dnd" ) ) )
110 :     {
111 :     if ( $tree1 = &parse_newick_tree_str( join( "", <TREE> ) ) )
112 :     {
113 :     # dump_tree( $tree1 );
114 :     my $tree1b = reroot_newick_to_approx_midpoint( $tree1 );
115 :     my $tree2 = aesthetic_newick_tree( $tree1b );
116 :     # my $tree2 = aesthetic_newick_tree( $tree1 );
117 :     my $tree3 = newick_relabel_tips( $tree2, $relabel );
118 :     # @textlines = text_plot_newick( $node, $width, $min_dx, $dy )
119 :     $treetext = join( "\n", text_plot_newick( $tree3, 80, 2, 2 ) );
120 :     }
121 :     close( TREE );
122 :     }
123 :     print "=======================================================================\n\n\n";
124 :     print "$treetext\n";
125 :     }
126 :    
127 :     if ($save)
128 :     {
129 :     system "cp $file.fasta \"$save/seqs\"";
130 :     system "cp $file.aln \"$save/aln\"";
131 :     system "cp $file.dnd \"$save/tree\"";
132 :     ( $tree && -s "$file.ph" ) and system "cp $file.ph \"$save/tree2\"";
133 :     }
134 :    
135 :     unlink("$file.fasta","$file.aln","$file.dnd");
136 :     -s "$file.ph" and unlink("$file.ph");
137 :    
138 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3