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

Annotation of /FigKernelScripts/load_coupling.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.7 #
2 :     # Copyright (c) 2003-2006 University of Chicago and Fellowship
3 :     # for Interpretations of Genomes. All Rights Reserved.
4 :     #
5 :     # This file is part of the SEED Toolkit.
6 :     #
7 :     # The SEED Toolkit is free software. You can redistribute
8 :     # it and/or modify it under the terms of the SEED Toolkit
9 :     # Public License.
10 :     #
11 :     # You should have received a copy of the SEED Toolkit Public License
12 :     # along with this program; if not write to the University of Chicago
13 :     # at info@ci.uchicago.edu or the Fellowship for Interpretation of
14 :     # Genomes at veronika@thefig.info or download a copy from
15 :     # http://www.theseed.org/LICENSE.TXT.
16 :     #
17 :    
18 : overbeek 1.1
19 :     # -*- perl -*-
20 :    
21 :     use FIG;
22 : parrello 1.5 use Tracer;
23 : overbeek 1.8 use strict;
24 : parrello 1.5
25 : overbeek 1.1 my $fig = new FIG;
26 :    
27 : overbeek 1.8 # usage: load_coupling [G1 G2 ...]
28 : overbeek 1.1
29 : overbeek 1.8 my $pchD = "$FIG_Config::data/CouplingData/PCHs";
30 :     my $scores = "$FIG_Config::data/CouplingData/scores";
31 : overbeek 1.1
32 :     use DBrtns;
33 :    
34 : overbeek 1.8 my @genomes;
35 :     if (@ARGV > 0)
36 :     {
37 :     for my $g (@ARGV)
38 :     {
39 :     if ($g =~ /^\d+\.\d+$/)
40 :     {
41 :     push(@genomes, $g);
42 :     }
43 :     else
44 :     {
45 :     die "Invalid genome '$g' in argument list\n";
46 :     }
47 :     }
48 :     }
49 :    
50 : parrello 1.5 if (!(-d $pchD)) {
51 :     Trace("Coupling directory $pchD not found.") if T(1);
52 :     exit;
53 :     } elsif (!(-s $scores)) {
54 :     Trace("Coupling data file $scores not found.") if T(1);
55 :     exit;
56 :     }
57 : overbeek 1.8
58 : parrello 1.5 my $dbf = $fig->db_handle;
59 : olson 1.6
60 : overbeek 1.8 Trace("Re-creating coupling table.") if T(2);
61 : olson 1.6
62 : overbeek 1.8 my %genomes = map { $_ => 1 } @genomes;
63 : olson 1.6
64 : overbeek 1.8 if (@genomes)
65 :     {
66 :     my $tmp = "$FIG_Config::temp/lc_tmp.$$";
67 :     open(TMP, ">$tmp") or die "Cannot open $tmp for writing: $!\n";
68 :    
69 :     #
70 :     # Extract the scores for our genomes to $tmp.
71 :     #
72 :    
73 :     open(S, "<$scores") or die "Cannot open $scores: $!\n";
74 :     while (<S>)
75 :     {
76 :     if (/^fig\|(\d+\.\d+)\.peg/ and $genomes{$1})
77 :     {
78 :     print TMP $_;
79 :     }
80 :     }
81 :     close(TMP);
82 :     close(S);
83 :    
84 :     #
85 :     # Need to drop any entries with our genome.
86 :     #
87 :    
88 :     my $cond = join(" or ", map { "peg1 like 'fig|$_.peg%'" } @genomes);
89 :     my $where = "($cond)";
90 :     my $res = $dbf->SQL("delete from fc_pegs where $where");
91 :    
92 :     #
93 :     # Now insert.
94 :     #
95 : olson 1.6
96 : overbeek 1.8 $dbf->load_table(tbl => 'fc_pegs', file => $tmp);
97 :     }
98 :     else
99 :     {
100 :     die;
101 :     $dbf->reload_table('all', 'fc_pegs',
102 :     "peg1 varchar(32), peg2 varchar(32), score integer",
103 :     { fc_pegs_ix => "peg1, peg2" },
104 :     $scores
105 :     );
106 :     }
107 : olson 1.6
108 : overbeek 1.8 #
109 :     # Now load the PCHs files.
110 :     #
111 :    
112 :     if (@genomes == 0)
113 :     {
114 :     #
115 :     # Reload all PCHs.
116 :     #
117 :    
118 :     Trace("Estimating size of PCH table.") if T(2);
119 :    
120 :     my @files = grep { (-s $_) } map { "$pchD/$_" } OpenDir($pchD, 1);
121 :    
122 :     my($row_size, $max_rows) = $dbf->estimate_table_size(\@files);
123 :    
124 :     Trace("Re-creating PCH table with row_size=$row_size max_rows=$max_rows.") if T(2);
125 :    
126 :     $dbf->reload_table('all', "pchs",
127 :     "peg1 varchar(32), peg2 varchar(32), peg3 varchar(32), peg4 varchar(32),
128 : parrello 1.5 inden13 varchar(6), inden24 varchar(6), para3 integer, para4 integer, rep char(1)",
129 : overbeek 1.8 { pchs_ix => "peg1, peg2" }, undef, undef, undef, [$row_size, $max_rows]
130 :     );
131 :    
132 :     Trace("Reading PCH directory.") if T(2);
133 :    
134 :     foreach my $file (@files) {
135 :     Trace("Loading PCH data from $file.") if T(3);
136 :     $dbf->load_table( tbl => "pchs",
137 :     file => $file );
138 :     }
139 :     Trace("Finishing PCH load.") if T(2);
140 :     $dbf->finish_load('all', 'pchs');
141 :     }
142 :     else
143 :     {
144 :     #
145 :     # Reload a subset.
146 :     #
147 :    
148 :     die;
149 :    
150 :     for my $g (@genomes)
151 :     {
152 :     my $pch_file = "$pchD/$g";
153 :     if (! -f $pch_file)
154 :     {
155 :     die "Cannot open PCH file $pch_file\n";
156 :     }
157 : olson 1.6
158 : overbeek 1.8 $dbf->load_table(tbl => 'pchs', file => $pch_file);
159 :     }
160 : overbeek 1.1 }
161 :    
162 : parrello 1.5 Trace("Couplings loaded.") if T(2);
163 : overbeek 1.8
164 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3