[Bio] / FortyEight / rp_auto_assign.pl Repository:
ViewVC logotype

Annotation of /FortyEight/rp_auto_assign.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1
2 :     #
3 :     # Perform auto-assignment on unassigned pegs.
4 :     #
5 :    
6 :     use strict;
7 :     use FIG;
8 :     use FIG_Config;
9 :     use File::Basename;
10 :     use GenomeMeta;
11 :    
12 :     @ARGV == 1 or die "Usage: $0 job-dir\n";
13 :    
14 :     my $jobdir = shift;
15 :    
16 :     -d $jobdir or die "$0: job dir $jobdir does not exist\n";
17 :    
18 :     my $genome = &FIG::file_head("$jobdir/GENOME_ID");
19 :     chomp $genome;
20 :     $genome =~ /^\d+\.\d+/ or die "$0: Cannnot find genome ID for jobdir $jobdir\n";
21 :    
22 :     my $meta = new GenomeMeta($genome, "$jobdir/meta.xml");
23 :    
24 :     my $tbl = "$jobdir/rp/$genome/Features/peg/tbl";
25 :     -f $tbl or die "$0: Cannot find tbl file $tbl\n";
26 :    
27 :     my $proposed = "$jobdir/rp/$genome/proposed_functions";
28 :    
29 :     my %done;
30 :    
31 :     if (!open(PROP, "<$proposed"))
32 :     {
33 :     warn "could not open proposed functions $proposed: $!";
34 :     $meta->add_log_entry($0, "could not open proposed fucntions $proposed");
35 :     }
36 :     else
37 :     {
38 :     while (<PROP>)
39 :     {
40 :     chomp;
41 :     my($peg, $assign) = split;
42 :     $done{$peg} = $assign;
43 :     }
44 :     close(PROP);
45 :     }
46 :    
47 :     my @sims = <$jobdir/sims.job/sims.proc/*>;
48 :     my $simtmp;
49 :     my $simfile;
50 :     if (@sims == 0)
51 :     {
52 :     &fatal("No sims found in $jobdir/sims.job/sims.proc\n");
53 :     }
54 :     elsif (@sims == 1)
55 :     {
56 :     $simfile = shift @sims;
57 :     }
58 :     elsif (@sims > 1)
59 :     {
60 :     my $d = "/scratch";
61 :     if (! -d $d)
62 :     {
63 :     $d = "/tmp";
64 :     }
65 :     $simtmp = "$d/simtmp.$$";
66 :     system("cat @sims > $simtmp");
67 :     $simfile = $simtmp;
68 :     }
69 :    
70 :     open(TBL, "<$tbl") or &fatal("Cannot open tbl file $tbl: $!");
71 :    
72 :     my $cmd = "$FIG_Config::bin/auto_assign sims=$simfile > $jobdir/rp/$genome/auto_assign.functions";
73 :     print "running $cmd\n";
74 :     open(AA, "| $cmd")
75 :     or &fatal("aa failed: $!");
76 :    
77 :     my $peg_count = 0;
78 :     while (<TBL>)
79 :     {
80 :     chomp;
81 :     my($peg, @rest) = split(/\t/);
82 :     if (!$done{$peg})
83 :     {
84 :     $peg_count++;
85 :     print AA "$peg\n";
86 :     }
87 :     }
88 :     close(TBL);
89 :    
90 :     $meta->add_log_entry($0, "computing auto_assign on $peg_count pegs");
91 :    
92 :     if (!close(AA))
93 :     {
94 :     &fatal("error on close \$?=$? \$!=$!");
95 :     }
96 :    
97 :     $meta->add_log_entry($0, "auto_assign completed\n");
98 :     $meta->set_metadata("status.auto_assign", "complete");
99 :    
100 :     sub fatal
101 :     {
102 :     my($msg) = @_;
103 :    
104 :     $meta->add_log_entry($0, ['fatal error', $msg]);
105 :     $meta->set_metadata("status.auto_assign", "error");
106 :    
107 :     croak "$0: $msg";
108 :     }
109 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3