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

Annotation of /FigKernelScripts/load_features.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : efrank 1.1 # -*- perl -*-
2 :    
3 :     use strict;
4 :     use FIG;
5 :     my $fig = new FIG;
6 :    
7 :     use DBrtns;
8 :    
9 :    
10 :     my $temp_dir = "$FIG_Config::temp";
11 :     my($organisms_dir) = "$FIG_Config::organisms";
12 :    
13 :     my($genome,@types,$type,$id,$loc,@aliases,$aliases,$contig);
14 :    
15 :     # usage: load_features [G1 G2 G3 ... ]
16 :    
17 :     open(REL,">$temp_dir/tmpfeat$$") || die "could not open $temp_dir/tmpfeat$$";
18 :    
19 :     my $dbf = $fig->{_dbf};
20 :    
21 :    
22 :    
23 :     my @genomes;
24 :     if (@ARGV == 0)
25 :     {
26 :     $dbf->drop_table( tbl => "features" );
27 :     if ($FIG_Config::dbms eq "Pg")
28 :     {
29 :     $dbf->create_table( tbl => "features",
30 :     flds => "id varchar(32) UNIQUE NOT NULL, type varchar(16),genome varchar(16)," .
31 :     "location varchar(5000)," .
32 :     "contig varchar(96), minloc INTEGER, maxloc INTEGER," .
33 : overbeek 1.6 "aliases TEXT"
34 : efrank 1.1 );
35 :     }
36 :     elsif ($FIG_Config::dbms eq "mysql")
37 :     {
38 :     $dbf->create_table( tbl => "features",
39 :     flds => "id varchar(32) UNIQUE NOT NULL, type varchar(16),genome varchar(16)," .
40 :     "location TEXT," .
41 :     "contig varchar(96), minloc INTEGER, maxloc INTEGER," .
42 : overbeek 1.6 "aliases TEXT"
43 : efrank 1.1 );
44 :     }
45 :    
46 :     @genomes = $fig->genomes;
47 :     }
48 :     else
49 :     {
50 :     @genomes = @ARGV;
51 : overbeek 1.2 foreach $genome (@genomes)
52 :     {
53 :     $dbf->SQL("DELETE FROM features WHERE ( genome = \'$genome\' )");
54 :     }
55 : efrank 1.1 }
56 :    
57 :     foreach $genome (@genomes)
58 :     {
59 :     opendir(FEAT,"$organisms_dir/$genome/Features")
60 :     || die "could not open $genome/Features";
61 :     @types = grep { $_ =~ /^[a-zA-Z]+$/ } readdir(FEAT);
62 :     closedir(FEAT);
63 :    
64 :     foreach $type (@types)
65 :     {
66 :     if ((-s "$organisms_dir/$genome/Features/$type/tbl") &&
67 :     open(TBL,"<$organisms_dir/$genome/Features/$type/tbl"))
68 :     {
69 :     # print STDERR "loading $genome/Features/$type/tbl\n";
70 :     while (defined($_ = <TBL>))
71 :     {
72 :     chop;
73 :     ($id,$loc,@aliases) = split(/\t/,$_);
74 :     if ($id)
75 :     {
76 :     my($minloc,$maxloc);
77 :     if ($loc)
78 :     {
79 :     $loc =~ s/\s+$//;
80 :     ($contig,$minloc,$maxloc) = &FIG::boundaries_of($loc);
81 :     if ($minloc && $maxloc)
82 :     {
83 :     ($minloc < $maxloc) || (($minloc,$maxloc) = ($maxloc,$minloc));
84 :     }
85 :     }
86 :    
87 :     if (! $contig)
88 :     {
89 :     $loc = $contig = $minloc = $maxloc = "";
90 :     }
91 :    
92 :     if (@aliases > 0)
93 :     {
94 :     $aliases = join(",",grep(/\S/,@aliases));
95 :     }
96 :     else
97 :     {
98 :     $aliases = "";
99 :     }
100 :     $minloc = (! $minloc) ? 0 : $minloc;
101 :     $maxloc = (! $maxloc) ? 0 : $maxloc;
102 : overbeek 1.3 if ((length($loc) < 5000) && (length($contig) < 96) && (length($id) < 32))
103 :     {
104 :     print REL "$id\t$type\t$genome\t$loc\t$contig\t$minloc\t$maxloc\t$aliases\n";
105 :     }
106 : efrank 1.1 }
107 :     }
108 :     close(TBL);
109 :     }
110 :     }
111 :     }
112 :     close(REL);
113 :    
114 :     $dbf->load_table( tbl => "features",
115 :     file => "$temp_dir/tmpfeat$$" );
116 :    
117 : overbeek 1.4 if (@ARGV == 0)
118 :     {
119 : overbeek 1.6 $dbf->create_index( idx => "features_id_ix",
120 :     tbl => "features",
121 :     type => "btree",
122 :     flds => "id" );
123 : overbeek 1.4 $dbf->create_index( idx => "features_org_ix",
124 :     tbl => "features",
125 :     type => "btree",
126 :     flds => "genome" );
127 :     $dbf->create_index( idx => "features_type_ix",
128 :     type => "btree",
129 :     tbl => "features",
130 :     flds => "type" );
131 :     $dbf->create_index( idx => "features_beg_ix",
132 :     type => "btree",
133 :     tbl => "features",
134 :     flds => "genome,contig,minloc" );
135 :    
136 : overbeek 1.5 $dbf->vacuum_it("features")
137 : overbeek 1.4 }
138 : efrank 1.1 unlink("$temp_dir/tmpfeat$$");

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3