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

Annotation of /FigKernelScripts/figfam.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : overbeek 1.1 ########################################################################
2 :     # -*- perl -*-
3 :     #
4 :     # Copyright (c) 2003-2006 University of Chicago and Fellowship
5 :     # for Interpretations of Genomes. All Rights Reserved.
6 :     #
7 :     # This file is part of the SEED Toolkit.
8 :     #
9 :     # The SEED Toolkit is free software. You can redistribute
10 :     # it and/or modify it under the terms of the SEED Toolkit
11 :     # Public License.
12 :     #
13 :     # You should have received a copy of the SEED Toolkit Public License
14 :     # along with this program; if not write to the University of Chicago
15 :     # at info@ci.uchicago.edu or the Fellowship for Interpretation of
16 :     # Genomes at veronika@thefig.info or download a copy from
17 :     # http://www.theseed.org/LICENSE.TXT.
18 :     #
19 :    
20 :     use Carp;
21 :     use Data::Dumper;
22 : overbeek 1.12 use gjoseqlib;
23 : overbeek 1.1
24 : overbeek 1.18 use DB_File;
25 :    
26 : overbeek 1.1 use FIG;
27 :     my $fig = new FIG;
28 : overbeek 1.3
29 : overbeek 1.1 use FigFam;
30 :    
31 : overbeek 1.22 # usage: figfam [FAMdir]
32 : overbeek 1.3
33 :     my $default_dir;
34 :     if (@ARGV > 0)
35 :     {
36 :     $default_dir = $ARGV[0];
37 :     }
38 :     else
39 :     {
40 : olson 1.21 $default_dir = &FIG::get_figfams_data();
41 : overbeek 1.3 }
42 :    
43 :    
44 :     use FigFams;
45 :     my $figfams = new FigFams($fig,$default_dir);
46 : overbeek 1.1
47 :     my $figfam;
48 : overbeek 1.4 my($fam_id,$dir);
49 : overbeek 1.1 while ($req = &get_req)
50 :     {
51 : disz 1.23 if ($req =~ /^\s*set\s+(FIG\d+)(\s+\S.*\S)?\s*$/)
52 : overbeek 1.1 {
53 : overbeek 1.4 $fam_id = $1;
54 :     $dir = $2 ? $2 : $default_dir;
55 :    
56 :     $figfam = new FigFam($fig,$fam_id,$dir);
57 :    
58 :     $figfam
59 : overbeek 1.11 || warn "could not handle $fam_id in $dir\n";
60 : overbeek 1.4 }
61 : disz 1.23 elsif ($req =~ /^\s*display(\s+(FIG\d+))?\s*$/)
62 : overbeek 1.7 {
63 :     if ($2)
64 :     {
65 :     $fam_id = $2;
66 :     $figfam = new FigFam($fig,$fam_id,$default_dir);
67 :     }
68 :     print $figfam->display;
69 :     }
70 : disz 1.23 elsif ($req =~ /^\s*alignment(\s+(FIG\d+))?\s*$/)
71 : overbeek 1.12 {
72 :     if ($2)
73 :     {
74 :     $fam_id = $2;
75 :     $figfam = new FigFam($fig,$fam_id,$default_dir);
76 :     }
77 : overbeek 1.13 my $ali;
78 : overbeek 1.14 if ($figfam && ($ali = $figfam->alignment))
79 : overbeek 1.12 {
80 :     print "---------\n";
81 :     foreach $_ (@$ali)
82 :     {
83 :     print join("\t",($_->[0],$_->[2])),"\n";
84 :     }
85 :     print "---------\n";
86 :     }
87 :     else
88 :     {
89 :     print "alignment is undefined\n";
90 :     }
91 :     }
92 : overbeek 1.20 elsif ($req =~ /^\s*reset_function(\s+(\S.*\S))?\s*$/)
93 : overbeek 1.10 {
94 : overbeek 1.20 $debug = 0;
95 : overbeek 1.10 if ($2)
96 :     {
97 : overbeek 1.20 my $args = $2;
98 : disz 1.23 if ($args =~ /(FIG\d+)/) { $fam_id = $1 }
99 : overbeek 1.20 if ($args =~ /debug/i) { $debug = 1 }
100 : overbeek 1.10 $figfam = new FigFam($fig,$fam_id,$default_dir);
101 :     }
102 : overbeek 1.20 print "reset to ",$figfam->reset_function($debug),"\n";
103 : overbeek 1.10 }
104 : overbeek 1.4 elsif ($req =~ /^\s*family_function(\s+(\S+))?\s*/)
105 :     {
106 :     if ($2)
107 :     {
108 :     my $fam_id = $2;
109 :     $figfam = new FigFam($fig,$fam_id,$default_dir);
110 :     }
111 :    
112 :     if (defined($figfam))
113 : overbeek 1.1 {
114 : overbeek 1.4 print $figfam->family_function,"\n";
115 : overbeek 1.1 }
116 :     else
117 :     {
118 : overbeek 1.4 print STDERR "you need to set the family first or give a family id\n";
119 :     }
120 :     }
121 :     elsif ($req =~ /^\s*should_be_member\s+(\S+)(\s+(\S+))?\s*/)
122 :     {
123 :     $seq = $1;
124 :     if ($3)
125 :     {
126 :     my $fam_id = $3;
127 :     $figfam = new FigFam($fig,$fam_id,$default_dir);
128 : overbeek 1.1 }
129 :    
130 : overbeek 1.4 if (defined($figfam))
131 :     {
132 :     print &Dumper($figfam->should_be_member($seq));
133 :     }
134 :     else
135 :     {
136 :     print STDERR "you need to set the family first or give a family id\n";
137 :     }
138 : overbeek 1.1 }
139 :     elsif ($req =~ /^\s*load\s+(\S+)(\s+\S.*\S)?/)
140 :     {
141 :     my $file = $1;
142 :    
143 : overbeek 1.3 my $dir = $2;
144 :     my @args;
145 :     if ($dir)
146 : overbeek 1.1 {
147 : overbeek 1.3 $dir =~ s/^\s+//;
148 :     @args = ("$dir/FIGFAMS","$dir/families.2c");
149 : overbeek 1.1 }
150 :     else
151 :     {
152 : overbeek 1.7 @args = ($default_dir,"$default_dir/families.2c");
153 : overbeek 1.1 }
154 : overbeek 1.3
155 : overbeek 1.1 foreach $line (`cat $file`)
156 :     {
157 : disz 1.23 if ($line =~ /^\s*(FIG\d+)/)
158 : overbeek 1.1 {
159 :     $fam_id = $1;
160 : overbeek 1.3 $figfam = new FigFam($fig,$fam_id,@args);
161 : overbeek 1.1
162 :     $figfam
163 : overbeek 1.3 || warn "could not handle $dir\n";
164 : overbeek 1.1 print STDERR "loaded $fam_id\n";
165 :     }
166 :     }
167 :     }
168 : overbeek 1.4 elsif ($req =~ /^\s*families_in_genome\s+(\d+\.\d+)\s*$/)
169 :     {
170 :     my $genome = $1;
171 :     my @fams = $figfams->families_in_genome($genome);
172 :     foreach $_ (@fams)
173 :     {
174 :     print "$_\n";
175 :     }
176 :     print "\n";
177 :     }
178 : overbeek 1.16 elsif ($req =~ /^\s*place_in_family\s+(\S+)\s*$/)
179 :     {
180 :     ($famO,undef) = $figfams->place_in_family($1);
181 :     if ($famO)
182 :     {
183 :     print join("\t",$famO->family_id,$famO->family_function),"\n";
184 :     }
185 :     else
186 :     {
187 :     print "could not place it\n";
188 :     }
189 :     }
190 :     elsif ($req =~ /^\s*families_with_function\s+(\S.*\S)\s*$/)
191 :     {
192 :     my $function = $1;
193 :     my @fams = $figfams->families_with_function($function);
194 :     foreach $_ (@fams)
195 :     {
196 :     print "$_\n";
197 :     }
198 :     print "\n";
199 :     }
200 :     elsif ($req =~ /^\s*families_with_functional_role\s+(\S.*\S)\s*$/)
201 :     {
202 :     my $functional_role = $1;
203 :     my @fams = $figfams->families_with_functional_role($functional_role);
204 :     foreach $_ (@fams)
205 :     {
206 :     print "$_\n";
207 :     }
208 :     print "\n";
209 :     }
210 : overbeek 1.3 elsif ($req =~ /^\s*rebuild_dbs\s*$/)
211 :     {
212 :     $figfams->rebuild_dbs;
213 :     }
214 : overbeek 1.5 elsif ($req =~ /^\s*check_fams\s*$/)
215 :     {
216 :     $figfams->check_fams;
217 :     }
218 : overbeek 1.6 elsif ($req =~ /^\s*rebuild_repdb\s*$/)
219 :     {
220 :     $figfams->rebuild_repdb;
221 :     print "rebuilt repdb\n";
222 :     }
223 :     elsif ($req =~ /^\s*rebuild_family_funcs\s*$/)
224 :     {
225 :     $figfams->rebuild_family_funcs;;
226 :     print "rebuilt family.functions\n";
227 :     }
228 : overbeek 1.17 elsif ($req =~ /^\s*families_containing_peg\s+(\S+)\s*$/)
229 :     {
230 :     $peg = $1;
231 :     my @families = $figfams->families_containing_peg($peg);
232 :     foreach $fam_id (@families)
233 :     {
234 :     $famO = new FigFam($fig,$fam_id);
235 :     $fam_func = $famO->family_function;
236 :     print "$fam_id\t$fam_func\n";
237 :     }
238 :     print "\n";
239 :     }
240 : overbeek 1.18 elsif ($req =~ /^\s*families_implementing_role\s+(\S.*\S)\s*$/)
241 :     {
242 :     my $role = $1;
243 :     my @fams = $figfams->families_implementing_role($role);
244 :     print join(",",@fams),"\n";
245 :     }
246 : overbeek 1.6 elsif ($req =~ /^\s*next_id\s*$/)
247 :     {
248 :     print $figfams->next_id,"\n\n";
249 :     }
250 : overbeek 1.9 elsif ($req =~ /^\s*reset_functions\s*$/)
251 :     {
252 :     $figfams->reset_functions;
253 :     }
254 : disz 1.23 elsif ($req =~ /^\s*clean_and_split\s+(FIG\d+)\s*$/)
255 : overbeek 1.6 {
256 :     $first_new = $figfams->next_id;
257 :     $figfams->clean_and_split($1);
258 :     $next = $figfams->next_id;
259 :     while ($first_new lt $next)
260 :     {
261 :     $figfam = new FigFam($fig,$first_new,$default_dir);
262 :     my $func = $figfam->family_function;
263 :     print "ADDED\t$first_new\t$func\n";
264 :     $first_new++;
265 :     }
266 :     }
267 : overbeek 1.1 elsif ($req =~ /^\s*h\s*$/ || $req =~ /^\s*help\s*$/)
268 :     {
269 :     &help;
270 :     }
271 :     else
272 :     {
273 :     print "invalid command\n";
274 :     }
275 :     print "\n";
276 :     }
277 :    
278 :     sub get_req {
279 :     my($x);
280 :    
281 :     print "?? ";
282 :     $x = <STDIN>;
283 :     while (defined($x) && ($x =~ /^h$/i) )
284 :     {
285 :     &help;
286 :     print "?? ";
287 :     $x = <STDIN>;
288 :     }
289 :    
290 :     if ((! defined($x)) || ($x =~ /^\s*[qQxX]/))
291 :     {
292 :     return "";
293 :     }
294 :     else
295 :     {
296 :     if ($echo)
297 :     {
298 :     print ">> $x\n";
299 :     }
300 :     return $x;
301 :     }
302 :     }
303 :    
304 :    
305 :     sub help {
306 :     print <<END;
307 :    
308 :     h
309 : overbeek 1.15 alignment FamID
310 : overbeek 1.5 check_fams
311 : overbeek 1.6 clean_and_split FamID
312 : overbeek 1.7 display [FamID]
313 : overbeek 1.17 families_containing_peg PEG
314 : overbeek 1.18 families_implementing_role Role
315 : overbeek 1.6 families_in_genome GENOME
316 : overbeek 1.16 families_with_function Function
317 :     families_with_functional_role FunctionalRole
318 : overbeek 1.6 family_function [FamID]
319 : overbeek 1.7 load FamIDfile [Dir]
320 : overbeek 1.6 next_id
321 : overbeek 1.3 rebuild_dbs
322 : overbeek 1.6 rebuild_family_funcs
323 :     rebuild_repdb
324 : overbeek 1.20 reset_function [famID] [debug]
325 : overbeek 1.9 reset_functions
326 : overbeek 1.7 set FamID [Dir]
327 : overbeek 1.6 should_be_member Seq [FamID]
328 : overbeek 1.4
329 : overbeek 1.1 END
330 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3