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

Annotation of /FigKernelScripts/make_annotations_for_sprout.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : overbeek 1.1 # -*- perl -*-
2 :    
3 :     use FIG;
4 :     ($fig = new FIG) || die "FIG constructor failed";
5 :    
6 :     $usage = "make_FIG_annotations_for_sprout GenomeFile AnnotationsFile IsTargetOfFile MadeAnnotationFile";
7 :    
8 :     (@ARGV
9 :     && ($genomes_file = shift) && (-s $genomes_file)
10 :     && ($annotations_file = shift)
11 :     && ($istarget_file = shift)
12 :     && ($makeannot_file = shift)
13 : overbeek 1.2 ) || die "\n usage: $usage\n\n";
14 : overbeek 1.1
15 :     @genomes = grep { m/^(\S+)/; $_ = $1 } `cut -f1 $genomes_file`;
16 :    
17 : overbeek 1.4 open(ANNOT, "| sort -u > $annotations_file") || die "could not write-open $annotations_file";
18 :     open(TARGET, "| sort -u > $istarget_file") || die "could not write-open $istarget_file";
19 :     open(MAKEAN, "| sort -u > $makeannot_file") || die "could not write-open $makeannot_file";
20 : overbeek 1.1
21 :     $time = time();
22 : olson 1.3 %user_time = (KEGG => $time + 1,
23 :     NCBI => $time + 2,
24 :     SwissProt => $time + 3,
25 :     UniProt => $time + 4);
26 : overbeek 1.1 $tick = 0;
27 :     foreach $org (@genomes)
28 :     {
29 :     print STDERR "Processing $org " if $ENV{FIG_VERBOSE};
30 :    
31 : overbeek 1.4 @pegs = $fig->pegs_of($org);
32 : overbeek 1.1 warn "No pegs for $org" unless @pegs;
33 :    
34 :     foreach $peg (@pegs)
35 :     {
36 :     if ($ENV{FIG_VERBOSE} && ($tick >= 1000)) { print STDERR '.'; $tick = 0; } else {++$tick; }
37 :    
38 :     if ($func = $fig->function_of($peg))
39 :     {
40 :     if (!$fig->hypo($func))
41 :     {
42 :     print ANNOT "$peg:$time\t$time\tFIG\\nSet FIG function to\\n$func\n";
43 :     print TARGET "$peg\t$peg:$time\n";
44 :     print MAKEAN "FIG\t$peg:$time\n";
45 :     }
46 :    
47 : overbeek 1.2 foreach $x ($fig->feature_annotations($peg))
48 :     {
49 :     (undef, $timestamp, $user, $annot) = @$x;
50 :     $annot =~ s/\cM//gs;
51 :     $annot =~ s/\n/\\n/gs;
52 :     if ($annot !~ m/^Set .*function to/)
53 :     {
54 : overbeek 1.5 if ($timestamp =~ /^\d+$/)
55 :     {
56 :     print ANNOT "$peg:$timestamp\t$timestamp\t$user\\n$annot\n";
57 :     print TARGET "$peg\t$peg:$timestamp\n";
58 :     print MAKEAN "$user\t$peg:$timestamp\n";
59 :     }
60 :     else
61 :     {
62 :     print STDERR "$peg has nonnumeric timestamp in annotations\n";
63 :     }
64 : overbeek 1.2 }
65 :     }
66 :    
67 : overbeek 1.1 if (@aliases = $fig->mapped_prot_ids($peg))
68 :     {
69 :     foreach $alias_record (@aliases)
70 :     {
71 :     $alias = $alias_record->[0];
72 :     $func = $fig->function_of($alias);
73 :    
74 :     $user = $setname = "";
75 :     if ($alias =~ m/^fig\|/)
76 :     {
77 :     next;
78 :     }
79 :     elsif ($alias =~ m/^kegg\|/)
80 :     {
81 :     $user = $setname = 'KEGG';
82 :     }
83 :     elsif ($alias =~ m/^gi\|/)
84 :     {
85 :     $user = $setname = 'NCBI';
86 :     }
87 :     elsif ($alias =~ m/^(sp|tr|tn)\|/)
88 :     {
89 :     $user = $setname = 'SwissProt';
90 :     }
91 :     elsif ($alias =~ m/^uni\|/)
92 :     {
93 :     $user = $setname = 'UniProt';
94 :     }
95 :     else
96 :     {
97 :     warn "could not handle alias $alias";
98 :     next;
99 :     }
100 :    
101 :     if ($user && $setname && $func)
102 :     {
103 : olson 1.3 my $thistime = $user_time{$user};
104 :     die "No time found for user $user" unless defined($thistime);
105 :     print ANNOT "$alias:$thistime\t$thistime\t$user\\nSet $setname function to\\n$func\n";
106 :     print TARGET "$alias\t$alias:$thistime\n";
107 :     print MAKEAN "$user\t$alias:$thistime\n";
108 : overbeek 1.1 }
109 :     }
110 :     }
111 :     }
112 :     }
113 :    
114 :     print STDERR "\n" if $ENV{FIG_VERBOSE};
115 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3