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

Annotation of /FigKernelScripts/align_with_clustal.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : efrank 1.1 # -*- perl -*-
2 : olson 1.8 #
3 :     # Copyright (c) 2003-2006 University of Chicago and Fellowship
4 :     # for Interpretations of Genomes. All Rights Reserved.
5 :     #
6 :     # This file is part of the SEED Toolkit.
7 :     #
8 :     # The SEED Toolkit is free software. You can redistribute
9 :     # it and/or modify it under the terms of the SEED Toolkit
10 :     # Public License.
11 :     #
12 :     # You should have received a copy of the SEED Toolkit Public License
13 :     # along with this program; if not write to the University of Chicago
14 :     # at info@ci.uchicago.edu or the Fellowship for Interpretation of
15 :     # Genomes at veronika@thefig.info or download a copy from
16 :     # http://www.theseed.org/LICENSE.TXT.
17 :     #
18 :    
19 : efrank 1.1
20 :     use Carp;
21 :     use Data::Dumper;
22 :     use tree_utilities;
23 :     use FIG;
24 :    
25 :     my $fig = new FIG;
26 :    
27 :     $| = 1;
28 :    
29 : overbeek 1.6 $usage = "align_with_clustal [-org] [-func[=user]] [-tree] [-UniProt] [-save=Dir] Id1 Id2 ... ";
30 : efrank 1.1
31 : gdpusch 1.3 (@ARGV > 1) || die "usage: $usage";
32 : efrank 1.1
33 :     my $temp_dir = $FIG_Config::temp;
34 :     my $file = "$temp_dir/tmp$$";
35 :     my $relabel = {};
36 : overbeek 1.4 my $save = "";
37 : overbeek 1.6 my $uni_prot = "";
38 : efrank 1.1
39 : gdpusch 1.3 while ($ARGV[0] =~ m/^-/)
40 : efrank 1.1 {
41 : gdpusch 1.3 if ($ARGV[0] =~ /-org/)
42 :     {
43 :     $add_org = shift @ARGV;
44 :     }
45 : overbeek 1.4 elsif ($ARGV[0] =~ /-save=(\S+)/)
46 :     {
47 :     $save = $1;
48 : overbeek 1.5 shift @ARGV;
49 : overbeek 1.4 }
50 : gdpusch 1.3 elsif ($ARGV[0] =~ /-func/)
51 :     {
52 :     $add_func = shift @ARGV;
53 :     if ($add_func =~ m/=(\S+)/) { $user = $1; }
54 :     }
55 :     elsif ($ARGV[0] =~ /-tree/)
56 :     {
57 :     $tree = shift @ARGV;
58 :     }
59 : overbeek 1.6 elsif ($ARGV[0] =~ /-UniProt/i)
60 :     {
61 :     $uni_prot = 1;
62 :     shift @ARGV;
63 :     }
64 : gdpusch 1.3 else
65 :     {
66 :     $trouble = 1;
67 :     print STDERR "Invalid flag $ARGV[0]\n";
68 :     shift @ARGV;
69 :     }
70 : efrank 1.1 }
71 : gdpusch 1.3 die "\nusage: $usage\n\n" if $trouble;
72 : efrank 1.1
73 :     open(TMP,">$file.fasta") || die "could not open $file";
74 :     foreach $id (@ARGV)
75 :     {
76 : overbeek 1.2 next if ($seen{$id});
77 : gdpusch 1.3 $seen{$id} = 1;
78 :    
79 : efrank 1.1 if ($seq = $fig->get_translation($id))
80 :     {
81 :     print TMP ">$id\n$seq\n";
82 : gdpusch 1.3 $func = $fig->function_of($id, $user);
83 :     $org = $fig->org_of($id);
84 : efrank 1.1 }
85 :     else
86 :     {
87 :     print STDERR "could not find translation for $id\n";
88 :     }
89 : gdpusch 1.3
90 :     $label = $id;
91 : overbeek 1.6 if ($uni_prot && ($_ = $fig->to_alias($id,"uni"))) { $label .= " [$_]" }
92 : gdpusch 1.3 if ($add_org && $org) { $label .= " [$org]"; }
93 :     if ($add_func && $func) { $label .= " $func"; }
94 :    
95 :     $relabel->{$id} = $label;
96 : efrank 1.1 }
97 :     close(TMP);
98 : gdpusch 1.3 # print STDERR "$0;\n", Dumper($relabel);
99 : efrank 1.1
100 :     system "$FIG_Config::ext_bin/clustalw -infile=$file.fasta -align -outorder=aligned > /dev/null";
101 :     print `cat $file.aln`;
102 :     if ($tree)
103 :     {
104 :     print "=======================================================================\n\n\n";
105 :     $tree = "";
106 :    
107 :     if (-s "$file.dnd")
108 :     {
109 :     @treefile = `cat $file.dnd`;
110 :     if (@treefile && ($tree = &parse_newick_tree(join("",@treefile))))
111 :     {
112 :     $tree = &display_tree($tree,$relabel);
113 :     }
114 :     }
115 :     print "$tree\n";
116 :     }
117 : overbeek 1.5
118 : overbeek 1.4 if ($save)
119 :     {
120 :     system "cp $file.fasta \"$save/seqs\"";
121 :     system "cp $file.aln \"$save/aln\"";
122 :     system "cp $file.dnd \"$save/tree\"";
123 :     }
124 : efrank 1.1 unlink("$file.fasta","$file.aln","$file.dnd");

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3