This file is indexed.

/usr/share/perl5/GO/Parsers/refgenomes_parser.pm is in libgo-perl 0.15-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# $Id: refgenomes_parser.pm,v 1.1 2007/01/24 01:16:20 cmungall Exp $
#
#
# see also - http://www.geneontology.org
#          - http://www.godatabase.org/dev
#
# You may distribute this module under the same terms as perl itself

package GO::Parsers::refgenomes_parser;

=head1 NAME

  GO::Parsers::refgenomes_parser     - syntax parsing of GO .def flat files

=head1 SYNOPSIS

  do not use this class directly; use GO::Parser

=cut

=head1 DESCRIPTION


=head1 GO DEFINITION FILES

=head1 AUTHOR

=cut

use Exporter;
use base qw(GO::Parsers::base_parser);
use GO::Parsers::ParserEventNames;  # declare XML constants

use Carp;
use FileHandle;
use strict qw(subs vars refs);

sub dtd {
    'refgenomes-parser-events.dtd';
}

sub _class { 'generic' }
sub _id_column {}
sub _map_property_type { shift;@_ }

our %DB_LOOKUP =
  (dictybase=>'DDB',
   flybase=>'FB',
   wormbase=>'WB',
   goa=>'UniProt',
   chicken=>'UniProt',
   zfin=>'ZFIN',
   pombase=>'GeneDB_Spombe',
   );

sub parse_fh {
    my ($self, $fh) = @_;
    my $file = $self->file;

    my $LAST_COL = 'completion target';
    my @hdr = ();
    $self->start_event('refgenomeset');

    my $lnum = 0;
    my $in_record=0;
    my $class = $self->_class;
    my $id_column = $self->_id_column;
    while (my $line = <$fh>) {
        chomp $line;
	++$lnum;
        next if $line =~ /^\!/;
        $line =~ s/^\s+$//;
        if (!$line) {
	    $self->pop_stack_to_depth(1);
            $in_record = 0;
            next;
        }
        my @vals = split(/\t/,$line);
        if (!@hdr) {
            @hdr = @vals;
            next;
	}

        $self->start_event('homologset');

        my %valh = ();
        for (my $i=0; $i<@hdr; $i++) {
            my $col = $hdr[$i];
            $col =~ s/\s/_/g;
            $col =~ s/\W//g;
            $valh{$col} = $vals[$i];
        }
        my $id = $valh{OMIM_ID};
        $id =~ s/\W//g;
        $self->event('@'=>[[id=>"MIM:$id"]]);
        
        my $in_genes = 0;
        my $i=-1;
        while ($i<@vals) {
            $i++;
            my $col = $hdr[$i];
            my $val = $vals[$i];
            if ($in_genes) {
                my ($sp, @extra) = split(' ',$col);
                if (!@extra) {
                    # ignore anything with annoying chatty text
                    next if $val =~ / /i;
                    next unless $val;
                    next if $val =~ /\"/;
                    my $sp2 = $DB_LOOKUP{lc($sp)};
                    $sp = $sp2 if ($sp2);
                    my $fid = "$sp:$val";
                    $self->event('member',[['@'=>[[ref=>$fid]]]]);
                }
            }
            else {
                if ($col eq $LAST_COL) {
                    $in_genes = 1;
                }
                $col =~ s/\s/_/g;
                $col =~ s/\W//g;
                $self->event(tagval=>[['@'=>[[type=>$col]]],['.'=>$val]]) if $val;
            }
        }
        $self->end_event('homologset');
        
    }
    $self->pop_stack_to_depth(0);  # end event obo
}


1;