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

Annotation of /FigKernelScripts/load_features.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (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 :     "aliases TEXT, PRIMARY KEY ( id )"
34 :     );
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 :     "aliases TEXT, PRIMARY KEY ( id )"
43 :     );
44 :     }
45 :    
46 :     $dbf->create_index( idx => "features_org_ix",
47 :     tbl => "features",
48 :     type => "btree",
49 :     flds => "genome" );
50 :     $dbf->create_index( idx => "features_type_ix",
51 :     type => "btree",
52 :     tbl => "features",
53 :     flds => "type" );
54 :     $dbf->create_index( idx => "features_beg_ix",
55 :     type => "btree",
56 :     tbl => "features",
57 :     flds => "genome,contig,minloc" );
58 :    
59 :     @genomes = $fig->genomes;
60 :     }
61 :     else
62 :     {
63 :     @genomes = @ARGV;
64 :     }
65 :    
66 :     foreach $genome (@genomes)
67 :     {
68 :     opendir(FEAT,"$organisms_dir/$genome/Features")
69 :     || die "could not open $genome/Features";
70 :     @types = grep { $_ =~ /^[a-zA-Z]+$/ } readdir(FEAT);
71 :     closedir(FEAT);
72 :    
73 :     foreach $type (@types)
74 :     {
75 :     if ((-s "$organisms_dir/$genome/Features/$type/tbl") &&
76 :     open(TBL,"<$organisms_dir/$genome/Features/$type/tbl"))
77 :     {
78 :     # print STDERR "loading $genome/Features/$type/tbl\n";
79 :     while (defined($_ = <TBL>))
80 :     {
81 :     chop;
82 :     ($id,$loc,@aliases) = split(/\t/,$_);
83 :     if ($id)
84 :     {
85 :     my($minloc,$maxloc);
86 :     if ($loc)
87 :     {
88 :     $loc =~ s/\s+$//;
89 :     ($contig,$minloc,$maxloc) = &FIG::boundaries_of($loc);
90 :     if ($minloc && $maxloc)
91 :     {
92 :     ($minloc < $maxloc) || (($minloc,$maxloc) = ($maxloc,$minloc));
93 :     }
94 :     }
95 :    
96 :     if (! $contig)
97 :     {
98 :     $loc = $contig = $minloc = $maxloc = "";
99 :     }
100 :    
101 :     if (@aliases > 0)
102 :     {
103 :     $aliases = join(",",grep(/\S/,@aliases));
104 :     }
105 :     else
106 :     {
107 :     $aliases = "";
108 :     }
109 :     $minloc = (! $minloc) ? 0 : $minloc;
110 :     $maxloc = (! $maxloc) ? 0 : $maxloc;
111 :     print REL "$id\t$type\t$genome\t$loc\t$contig\t$minloc\t$maxloc\t$aliases\n";
112 :     }
113 :     }
114 :     close(TBL);
115 :     }
116 :     }
117 :     }
118 :     close(REL);
119 :    
120 :     $dbf->load_table( tbl => "features",
121 :     file => "$temp_dir/tmpfeat$$" );
122 :    
123 :     if (@ARGV == 0) { $dbf->vacuum_it("features") }
124 :     unlink("$temp_dir/tmpfeat$$");

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3