[Bio] / FigKernelPackages / NRTools.pm Repository:
ViewVC logotype

Annotation of /FigKernelPackages/NRTools.pm

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1 #
2 :     # Tools for dealing with nonredundant databases - finding sources, building NR, etc.
3 :     #
4 :    
5 :     package NRTools;
6 :    
7 : olson 1.2 use strict;
8 :    
9 : olson 1.1 use base qw(Exporter);
10 :     use vars qw(@EXPORT);
11 :    
12 : olson 1.2 eval {
13 :     require Job48;
14 :     import Job48;
15 :     };
16 :    
17 :     @EXPORT = qw(scan_NR_dir scan_seed_dir scan_rast_jobs);
18 : olson 1.1
19 :    
20 :     =head3 scan_NR_dir()
21 :    
22 :     usage: scan_NR_dir(\%nr_hash, $dirname)
23 :    
24 :     Scan a directory containing SEED-formatted NR directories, and fill in
25 :     %nr_hash with entries of the form $nr_hash->{name} = { name => dirname, path => full path to NR dir, size => size of fasta file}
26 :    
27 :     =cut
28 :    
29 :     sub scan_NR_dir
30 :     {
31 : olson 1.2 my($nr_hash, $dir, $options) = @_;
32 : olson 1.1
33 :     my $dh = new DirHandle($dir);
34 :     while (defined($_ = $dh->read()))
35 :     {
36 :     next if /^\./;
37 : olson 1.2 next if $options->{skip} and /$options->{skip}/;
38 : olson 1.1 my $path = "$dir/$_";
39 :     my $fasta = "$path/fasta";
40 :     if (-f $fasta)
41 :     {
42 :     if (! -f "$path/assigned_functions")
43 :     {
44 :     warn "NR directory $path missing assigned_functions\n";
45 :     }
46 :     if (! -f "$path/org.table")
47 :     {
48 :     warn "NR directory $path missing org.table\n";
49 :     }
50 :     $nr_hash->{$_} = { type => "NR", name => $_, path => $path, fasta_path => $fasta, size => -s $fasta };
51 :     }
52 :     }
53 :     $dh->close();
54 :     }
55 :    
56 :     =head3 scan_seed_dir()
57 :    
58 :     usage: @fasta = scan_seed_dir(\%nr_hash, dirname)
59 :    
60 :     Scan a SEED organism directory, creating entries as in scan_NR_dir.
61 :    
62 :     =cut
63 :    
64 :     sub scan_seed_dir
65 :     {
66 :     my($nr_hash, $dir, $opts) = @_;
67 :    
68 :     my $dh = new DirHandle($dir);
69 :     my $n = 0;
70 :     while ($_ = $dh->read())
71 :     {
72 :     next if /^\./;
73 :     #next if /^9999999.\d+$/;
74 :    
75 :     #
76 :     # Strip environmental sequences.
77 :     #
78 :     # c.f. seed-tech mail thread of 2/8/2007 for discusson on the rationale of the following
79 :     # logic.
80 :     #
81 :     # next if $fig->is_environmental($_);
82 :     next if /^4{7}/ or /^9{7}/;
83 :    
84 :     my $path = "$dir/$_";
85 :    
86 :     next unless -d $path;
87 :     next if (-e "$path/DELETED");
88 :    
89 :     my $fasta = "$path/Features/peg/fasta";
90 :     if (-f $fasta)
91 :     {
92 :     $nr_hash->{$_} = { type => "seed_org", name => $_, path => $path,
93 :     fasta_path => $fasta, size => -s _ };
94 :     }
95 :     last if $opts->{limit} && $n++ > $opts->{limit};
96 :     }
97 :     $dh->close();
98 :     }
99 :    
100 : olson 1.2 =head3 scan_seed_dir()
101 :    
102 :     usage: @jobs = scan_rast_jobs($dir)
103 :    
104 :     Scan the given RAST job directory, finding all completed jobs that are marked
105 :     with submit.seed == 1.
106 :    
107 :     =cut
108 :    
109 :     sub scan_rast_jobs
110 :     {
111 :     my($jobs, $dir) = @_;
112 :    
113 :     my $dh = new DirHandle($dir);
114 :    
115 : olson 1.3 if (!$dh)
116 :     {
117 :     warn "Cannot open directory $dir: $!";
118 :     return;
119 :     }
120 :    
121 : olson 1.2 while (defined($_ = $dh->read()))
122 :     {
123 :     next unless /^\d+$/;
124 :    
125 :     my $job = Job48->new("$dir/$_");
126 :     next unless $job;
127 :     next unless $job->meta->get_metadata("status.final") eq "complete";
128 :     next unless $job->meta->get_metadata("submit.seed") == 1;
129 :    
130 :     push(@$jobs, $job);
131 :     }
132 :     }
133 :    
134 : olson 1.1 1;
135 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3