/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;
|