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

Diff of /FigKernelScripts/sphinx_index_genome.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3, Mon Jun 7 18:35:58 2010 UTC revision 1.7, Mon Feb 14 22:47:40 2011 UTC
# Line 1  Line 1 
1    use Data::Dumper;
2    
3  use strict;  use strict;
4  use Encode;  use Encode;
# Line 10  Line 11 
11  <sphinx:schema>  <sphinx:schema>
12  <sphinx:field name="fid"/>  <sphinx:field name="fid"/>
13  <sphinx:field name="annotation"/>  <sphinx:field name="annotation"/>
14  <sphinx:field name="content"/>  <sphinx:field name="genome"/>
15    <sphinx:field name="alias"/>
16    <sphinx:field name="subsystem"/>
17  </sphinx:schema>  </sphinx:schema>
18  END  END
19    
20  my %tmap = (peg => 1, rna => 2);  my %tmap = (peg => 1, rna => 2);
21    
22  for my $genome ($fig->genomes(1))  my @genomes;
23    if (my $glist = $ENV{SPHINX_INDEX_ONLY})
24    {
25        @genomes = split(/,/, $glist);
26    }
27    else
28    {
29        @genomes = $fig->genomes(1);
30    }
31    
32    #
33    # Ingest the subsystem index.
34    #
35    
36    for my $genome (@genomes)
37  {  {
38      print STDERR "$genome\n";      print STDERR "$genome\n";
39    
40        my %ss_info;
41    
42        my $sth = $fig->db_handle->{_dbh}->prepare(qq(SELECT i.protein, i.subsystem
43                                                      FROM subsystem_index i LEFT JOIN aux_roles a ON i.role = a.role
44                                                      WHERE i.protein LIKE 'fig|$genome.peg.%' AND a.subsystem IS NULL),
45                                               { mysql_use_result => 1});
46        $sth->execute();
47        while (my $ent = $sth->fetchrow_arrayref())
48        {
49            my($prot, $ss) = @$ent;
50            $ss_info{$prot}->{$ss} = 1;
51        }
52    
53      my $gs = $fig->genus_species($genome);      my $gs = $fig->genus_species($genome);
54      for my $feature (@{$fig->all_features_detailed_fast($genome)})      $gs =~ s/&/&amp;/g;
55        $gs =~ s/</&lt;/g;
56        $gs =~ s/>/&gt;/g;
57    
58        my $all_data = $fig->all_features_detailed_fast($genome);
59    
60        my $ext_aliases_l = $fig->db_handle->SQL(qq(SELECT id, alias
61                                                    FROM ext_alias
62                                                    WHERE id like 'fig|${genome}.%'));
63        my %ext_aliases;
64        map { $ext_aliases{$_->[0]}->{$_->[1]}++ } @$ext_aliases_l;
65    
66        for my $feature (@$all_data)
67      {      {
68          my($fid, $loc, $aliases, $type, $b, $e, $func, $who) = @$feature;          my($fid, $loc, $aliases, $type, $b, $e, $func, $who) = @$feature;
69    
70          my @ss = $fig->peg_to_subsystems($fid, 1, 1);          # my @ss = $fig->peg_to_subsystems($fid, 1, 1);
71            my @ss = keys %{$ss_info{$fid}};
72          @ss = map { defined($_) ? encode_utf8($_) : () } @ss;          @ss = map { defined($_) ? encode_utf8($_) : () } @ss;
73          my $ss = join("\n", map { s/_/ /g; $_ } @ss);          my $ss = join("\n", map { s/_/ /g; $_ } @ss);
74            $ss =~ s/&/&amp;/g;
75            $ss =~ s/</&lt;/g;
76            $ss =~ s/>/&gt;/g;
77    
78          $func = defined($func) ? encode_utf8($func) : "";          $func = defined($func) ? encode_utf8($func) : "";
79          $func =~ s/&/&amp;/g;          $func =~ s/&/&amp;/g;
80          $func =~ s/</&lt;/g;          $func =~ s/</&lt;/g;
81          $func =~ s/>/&gt;/g;          $func =~ s/>/&gt;/g;
82          $aliases =~ s/&/&amp;/g;  
83          $aliases =~ s/</&lt;/g;          my %aliases = map { $_ => 1 } split(",", $aliases);
84          $aliases =~ s/>/&gt;/g;          map { $aliases{$_} = 1 } keys %{$ext_aliases{$fid}};
85          $genome =~ s/&/&amp;/g;          my @aliases = keys %aliases;
86          $genome =~ s/</&lt;/g;          my $alias_txt = "";
87          $genome =~ s/>/&gt;/g;          if (@aliases)
88          $aliases =~ s/,/ /g;          {
89                $alias_txt = join("\n",
90                                  map { s/&/&amp;/g;
91                                        s/</&lt;/g;
92                                        s/>/&gt;/g;
93                                        $_ } @aliases);
94            }
95          if ($fid =~ /^fig\|(\d+)\.(\d+)\.([^.]+)\.(\d+)$/)          if ($fid =~ /^fig\|(\d+)\.(\d+)\.([^.]+)\.(\d+)$/)
96          {          {
97              my ($g, $ext, $type, $num) = ($1, $2, $3, $4);              my ($g, $ext, $type, $num) = ($1, $2, $3, $4);
# Line 48  Line 101 
101  <sphinx:document id="$enc">  <sphinx:document id="$enc">
102  <fid>$fid</fid>  <fid>$fid</fid>
103  <annotation>$func</annotation>  <annotation>$func</annotation>
104  <content>$genome $gs  <genome>$genome $gs</genome>
105  $aliases  <alias>$alias_txt</alias>
106  $ss</content>  <subsystem>$ss</subsystem>
107  </sphinx:document>  </sphinx:document>
108  END  END
109          }          }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.7

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3