[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.1 - (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 :     for my $g (@genomes)
20 :     {
21 :     my($tax, $vers) = split(/\./, $g);
22 :     push @{$by_tax{$tax}}, $g;
23 :     my $gs = $fig->genus_species($g);
24 :     $name_to_genome{$gs} = $g;
25 :     $genome_to_name{$g} = $gs;
26 :     }
27 :    
28 :     #
29 :     # Poke the db to read all contig ids.
30 :     #
31 :     print "Reading contigs\n";
32 :     my $res = $fig->db_handle->SQL(qq(SELECT genome, contig from contig_lengths));
33 :     for my $ent (@$res)
34 :     {
35 :     my($genome, $contig) = @$ent;
36 :    
37 :     push @{$contig_to_genome{$contig}}, $genome;
38 :     }
39 :     print "done reading contigs\n";
40 :    
41 :     my @jobs = Job48::all_jobs();
42 :     @jobs = grep { $_->active() } @jobs;
43 :    
44 :     for my $job (@jobs)
45 :     {
46 :     # print "Job " . $job->id . " " . $job->genome_id . " " . $job->genome_name . "\n";
47 :     check($job);
48 :     }
49 :    
50 :     sub check
51 :     {
52 :     my($job) = @_;
53 :    
54 :     my $id = $job->id;
55 :     my $g = $job->genome_id();
56 :     my $gs = $job->genome_name();
57 :     my @inseed;
58 :     my $status = "UNKNOWN";
59 :    
60 :     if (!$job->finished())
61 :     {
62 :     $status = "INCOMPLETE";
63 :     }
64 :     elsif (my $sname = $name_to_genome{$gs})
65 :     {
66 :     $status = "NAME_IN_SEED";
67 :     @inseed = ($sname, $gs);
68 :     }
69 :     else
70 :     {
71 :     (my $tax = $g) =~ s/\..*$//;
72 :     my @bytax = @{$by_tax{$tax}} if $by_tax{$tax};
73 :     if (@bytax)
74 :     {
75 :     $status = "TAX_IN_SEED";
76 :    
77 :     for my $seedg (@bytax)
78 :     {
79 :     my $seedname = $genome_to_name{$seedg};
80 :     push(@inseed, $seedg, $seedname);
81 :     }
82 :     }
83 :     else
84 :     {
85 :     #
86 :     # Search for contig names that map.
87 :     #
88 :    
89 :     for my $contig ($job->contigs())
90 :     {
91 :     my $glist = $contig_to_genome{$contig};
92 :     if ($glist)
93 :     {
94 :     $status = "MATCHING_CONTIG_ID";
95 :     for my $sg (@$glist)
96 :     {
97 :     push(@inseed, $sg, $genome_to_name{$sg});
98 :     }
99 :     last;
100 :     }
101 :     }
102 :    
103 :     if ($status eq 'UNKNOWN')
104 :     {
105 :     $status = "NEW";
106 :     }
107 :     }
108 :     }
109 :     print join("\t", $status, $job->id, $job->user, $g, $gs, @inseed), "\n";
110 :    
111 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3