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

Annotation of /FigKernelPackages/SeedSearch.pm

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1 package SeedSearch;
2 :    
3 :     use FIG_Config;
4 :     use Carp;
5 :     use strict;
6 :    
7 :     our @doctypes = qw(peg
8 :     rna
9 :     atn
10 :     att
11 :     bs
12 :     opr
13 :     pbs
14 :     pi
15 :     pp
16 :     prm
17 :     pseudo
18 :     rsw
19 :     sRNA
20 :     trm
21 :     );
22 :    
23 :     our %tmap;
24 :     for my $i (0..$#doctypes)
25 :     {
26 :     $tmap{$doctypes[$i]} = $i;
27 :     $tmap{$i} = $doctypes[$i];
28 :     }
29 :    
30 :     =head1 SeedSearch
31 :    
32 :     This package uses a Sphinx indexing engine to do fast lookups into
33 :     a SEED sphinx index.
34 :    
35 :     =cut
36 :    
37 :     sub new
38 :     {
39 :     my($class, $params) = @_;
40 :    
41 :     if (!defined($params))
42 :     {
43 :     if (@FIG_Config::search_params)
44 :     {
45 :     $params = \@FIG_Config::search_params;
46 :     }
47 :     else
48 :     {
49 :     confess "SeedSearch requires a Sphinx configuration in @FIG_Config::search_params";
50 :     }
51 :     }
52 :    
53 :     my $sphinx = Sphinx::Search->new();
54 :    
55 :     $sphinx->SetServer($params);
56 :    
57 :     my $self = {
58 :     params => $params,
59 :     sphinx => $sphinx,
60 :     };
61 :     return bless $self, $class;
62 :     }
63 :    
64 :     =head2 search
65 :    
66 :     my @results = $sphinx->search($search_terms,
67 :     -pagenum => i,
68 :     -pagesize => N)
69 :    
70 :    
71 :     =cut
72 :     sub start_search
73 :     {
74 :    
75 :     }
76 :    
77 :     sub fid_to_docid
78 :     {
79 :     my($fid) = @_;
80 :    
81 :     if ($fid =~ /^fig\|(\d+)\.(\d+)\.([^.]+)\.(\d+)$/)
82 :     {
83 :     my ($g, $ext, $type, $num) = ($1, $2, $3, $4);
84 :     my $tnum = $tmap{$type};
85 :    
86 :     #
87 :     # right to left: (cumulative)
88 :     # 17 bits for feature number (0)
89 :     # 4 bits for type (17)
90 :     # 8 bits for ext (21)
91 :     # Rest for genome (29)
92 : olson 1.2 #
93 :     # New encoding; we ran out of bits in ext
94 :     # 17 bits for feature number (0)
95 :     # 4 bits for type (17)
96 :     # 15 bits for ext (21)
97 :     # Rest for genome (36)
98 :    
99 :     my $enc;
100 :    
101 : olson 1.3 $enc = $g << 36| $ext << 21 | $tnum << 17 | $num;
102 : olson 1.2
103 : olson 1.1 return $enc;
104 :     }
105 :    
106 :     return undef;
107 :     }
108 :    
109 :     sub docid_to_fid
110 :     {
111 :     my($doc) = @_;
112 :    
113 : olson 1.2 my($g, $e, $t, $n);
114 : olson 1.3
115 :     $g = $doc >> 36;
116 :     $e = ($doc >> 21) & 0x7fff;
117 :     $t = ($doc >> 17) & 0xf;
118 :     $n = $doc & 0x1ffff;
119 : olson 1.1
120 :     my $type = $tmap{$t};
121 :     my $genome = "$g.$e";
122 :     my $fid = "fig|$genome.$type.$n";
123 :    
124 :     return $fid;
125 :     }
126 :    
127 :    
128 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3