[Bio] / FortyEight / find-genomes-not-in-seed.pl Repository:
ViewVC logotype

Annotation of /FortyEight/find-genomes-not-in-seed.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1 #
2 :     # Find any genomes currently in the 48-hour queue that are finished and appear to
3 :     # not exist in the SEED.
4 :     #
5 :    
6 :     use strict;
7 :     use Data::Dumper;
8 :     use FIG;
9 :     use Job48;
10 :    
11 :     my $fig = new FIG();
12 :    
13 :     my @genomes = $fig->genomes();
14 :    
15 :     my %by_tax;
16 :     my %genome_to_name;
17 :     my %name_to_genome;
18 :     my %contig_to_genome;
19 : olson 1.2 my %normalized_name_to_genome;
20 :     my %normalized_gs_to_genome;
21 :    
22 : olson 1.1 for my $g (@genomes)
23 :     {
24 :     my($tax, $vers) = split(/\./, $g);
25 :     push @{$by_tax{$tax}}, $g;
26 :     my $gs = $fig->genus_species($g);
27 :     $name_to_genome{$gs} = $g;
28 :     $genome_to_name{$g} = $gs;
29 : olson 1.2
30 :     #
31 :     # normalized names
32 :     #
33 :     my $ngs = lc($gs);
34 :     $ngs =~ s/\s//g;
35 :     $normalized_name_to_genome{$ngs} = $g;
36 :     if ($gs =~ /^\s*(\S+)\s+(\S+)/)
37 :     {
38 :     $normalized_gs_to_genome{lc("$1$2")} = $g;
39 :     }
40 : olson 1.1 }
41 :    
42 : olson 1.2 #warn Dumper(\%normalized_name_to_genome);
43 :     #warn Dumper(\%normalized_gs_to_genome);
44 :    
45 :    
46 : olson 1.1 #
47 :     # Poke the db to read all contig ids.
48 :     #
49 : olson 1.2 warn "Reading contigs\n";
50 : olson 1.1 my $res = $fig->db_handle->SQL(qq(SELECT genome, contig from contig_lengths));
51 :     for my $ent (@$res)
52 :     {
53 :     my($genome, $contig) = @$ent;
54 :    
55 :     push @{$contig_to_genome{$contig}}, $genome;
56 :     }
57 : olson 1.2 warn "done reading contigs\n";
58 : olson 1.1
59 :     my @jobs = Job48::all_jobs();
60 :     @jobs = grep { $_->active() } @jobs;
61 :    
62 :     for my $job (@jobs)
63 :     {
64 :     # print "Job " . $job->id . " " . $job->genome_id . " " . $job->genome_name . "\n";
65 :     check($job);
66 :     }
67 :    
68 :     sub check
69 :     {
70 :     my($job) = @_;
71 :    
72 :     my $id = $job->id;
73 :     my $g = $job->genome_id();
74 :     my $gs = $job->genome_name();
75 :     my @inseed;
76 :     my $status = "UNKNOWN";
77 :    
78 : olson 1.2 #
79 :     # find normalized names
80 :     #
81 :     my $ngs = lc($gs);
82 :     my $gsonly;
83 :     $ngs =~ s/\s//g;
84 :    
85 :     if ($gs =~ /^\s*(\S+)\s+(\S+)/)
86 :     {
87 :     $gsonly = lc("$1$2");
88 :     }
89 :    
90 :     # warn "$g $gs $ngs $gsonly\n";
91 :    
92 : olson 1.1 if (!$job->finished())
93 :     {
94 :     $status = "INCOMPLETE";
95 :     }
96 :     elsif (my $sname = $name_to_genome{$gs})
97 :     {
98 :     $status = "NAME_IN_SEED";
99 : olson 1.2 @inseed = ($sname, $genome_to_name{$sname});
100 : olson 1.3 $job->meta->set_metadata("seed.genome_id", $sname);
101 :     $job->meta->set_metadata("seed.genome_name", $genome_to_name{$sname});
102 : olson 1.1 }
103 :     else
104 :     {
105 :     (my $tax = $g) =~ s/\..*$//;
106 :     my @bytax = @{$by_tax{$tax}} if $by_tax{$tax};
107 :     if (@bytax)
108 :     {
109 :     $status = "TAX_IN_SEED";
110 :    
111 :     for my $seedg (@bytax)
112 :     {
113 :     my $seedname = $genome_to_name{$seedg};
114 :     push(@inseed, $seedg, $seedname);
115 : olson 1.3 $job->meta->set_metadata("seed.genome_id", $seedg);
116 :     $job->meta->set_metadata("seed.genome_name", $seedname);
117 : olson 1.1 }
118 :     }
119 :     else
120 :     {
121 : olson 1.2 if (my $sname = $normalized_name_to_genome{$ngs})
122 :     {
123 :     $status = "NORMALIZED_NAME_IN_SEED";
124 :     @inseed = ($sname, $genome_to_name{$sname});
125 : olson 1.3 $job->meta->set_metadata("seed.genome_id", $sname);
126 :     $job->meta->set_metadata("seed.genome_name", $genome_to_name{$sname});
127 : olson 1.2 }
128 :     elsif (my $sname = $normalized_gs_to_genome{$gsonly})
129 :     {
130 :     $status = "NORMALIZED_GS_IN_SEED";
131 :     @inseed = ($sname, $genome_to_name{$sname});
132 : olson 1.3 $job->meta->set_metadata("seed.genome_id", $sname);
133 :     $job->meta->set_metadata("seed.genome_name", $genome_to_name{$sname});
134 : olson 1.2 }
135 : olson 1.3
136 : olson 1.1 #
137 :     # Search for contig names that map.
138 :     #
139 :    
140 : olson 1.3 my @clist;
141 : olson 1.1 for my $contig ($job->contigs())
142 :     {
143 :     my $glist = $contig_to_genome{$contig};
144 :     if ($glist)
145 :     {
146 :     $status = "MATCHING_CONTIG_ID";
147 :     for my $sg (@$glist)
148 :     {
149 :     push(@inseed, $sg, $genome_to_name{$sg});
150 : olson 1.3 push(@clist, [$sg, $genome_to_name{$sg}]);
151 : olson 1.1 }
152 :     last;
153 :     }
154 :     }
155 : olson 1.3 $job->meta->set_metadata("seed.matching_contigs", \@clist) if @clist;
156 : olson 1.1
157 :     if ($status eq 'UNKNOWN')
158 :     {
159 :     $status = "NEW";
160 :     }
161 :     }
162 :     }
163 : olson 1.3 $job->meta->set_metadata("seed.status", $status);
164 :    
165 : olson 1.1 print join("\t", $status, $job->id, $job->user, $g, $gs, @inseed), "\n";
166 :    
167 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3