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

Annotation of /FigKernelScripts/ensure_genome_registration.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1 use strict;
2 :     use FIG;
3 :     use Data::Dumper;
4 :     use FIG_Config;
5 :     use File::Basename;
6 :    
7 :     #
8 :     # Ensure that the genomes in this SEED have been registered with the clearinghouse.
9 :     #
10 :     # This version utilizes a tab-separated dump of genome and feature registration information
11 :     # taken directly from the clearinghouse database.
12 :     #
13 :     # It generates a tab-delimited file suitable for feeding to register_features_batch.pl.
14 :     #
15 :    
16 :     my $fig = new FIG;
17 :    
18 :     my $usage = "ensure_genome_registration genome-dump feature-dump [G1 G2 ...]\n";
19 :    
20 :     @ARGV >= 2 or die $usage;
21 :    
22 :     my $gdump = shift;
23 :     my $fdump = shift;
24 :    
25 :     my @genomes;
26 :     if (@ARGV)
27 :     {
28 :     @genomes = @ARGV;
29 :     }
30 :     else
31 :     {
32 :     @genomes = $fig->genomes();
33 :     }
34 :    
35 :     open(G, "<$gdump") or die "Cannot open genome dump $gdump: $!\n";
36 :     open(F, "<$fdump") or die "Cannot open featur dump $fdump: $!\n";
37 :    
38 :     my %next_genome;
39 :    
40 :     while (<G>)
41 :     {
42 :     chomp;
43 :     my($genome, $next_id) = split(/\t/);
44 :     $next_genome{$genome} = $next_id;
45 :     }
46 :    
47 :     close(G);
48 :    
49 :     my %next_feature;
50 :     while (<F>)
51 :     {
52 :     chomp;
53 :     my($genome, $type, $next_id) = split(/\t/);
54 :     $next_feature{$genome}->{$type} = $next_id;
55 :     }
56 :     close(F);
57 :    
58 :    
59 :     for my $genome(@genomes)
60 :     {
61 :     my $dir = "$FIG_Config::organisms/$genome";
62 :     -d $dir or die "$dir does not exist\n";
63 :    
64 :     if ($genome =~ /^(\d+)\.(\d+)/)
65 :     {
66 :     my($tax, $num) = ($1, $2);
67 :     if ($next_genome{$tax} < $num)
68 :     {
69 :     warn "UNREGISTERED GENOME $genome (next_genome($num) = $next_genome{$tax})\n";
70 :     }
71 :     }
72 :    
73 :     for my $tdir (<$dir/Features/*>)
74 :     {
75 :     my $ftype = basename($tdir);
76 :     my $max_feat = max_feature_in_tbl("$tdir/tbl");
77 :     # print "$genome $ftype $max_feat\n";
78 :    
79 :     my $regnext = $next_feature{$genome}->{$ftype};
80 :     if ($max_feat >= $regnext)
81 :     {
82 :     # print "UNREGISTERED FEATURE $genome ($ftype '$regnext')\n";
83 :     print join("\t", $genome, $ftype, $max_feat), "\n";
84 :     }
85 :     }
86 :     }
87 :    
88 :     sub max_feature_in_tbl
89 :     {
90 :     my($tbl_file) = @_;
91 :    
92 :     open(F, "<$tbl_file") or die "cannot open $tbl_file: $!\n";
93 :    
94 :     my $max = -1;
95 :     while (<F>)
96 :     {
97 :     chomp;
98 :     my($fid) = split(/\t/);
99 :     if ($fid =~ /^fig\|\d+\.\d+\.[^.]+\.(\d+)/)
100 :     {
101 :     $max = $1 > $max ? $1 : $max;
102 :     }
103 :     }
104 :     close(F);
105 :     return $max;
106 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3