Skip to content
Snippets Groups Projects
ImmunoDBParser.pm 1.77 KiB
Newer Older
Karyn Megy's avatar
Karyn Megy committed
package XrefParser::ImmunoDBParser;

use strict;
use POSIX qw(strftime);
use File::Basename; 
use base qw( XrefParser::BaseParser );
Karyn Megy's avatar
Karyn Megy committed

sub run {
  my ($self, $ref_arg) = @_;
  my $source_id    = $ref_arg->{source_id};
  my $species_id   = $ref_arg->{species_id};
  my $files        = $ref_arg->{files};
  my $release_file = $ref_arg->{rel_file};
  my $verbose      = $ref_arg->{verbose};

  if((!defined $source_id) or (!defined $species_id) or (!defined $files)){
    croak "Need to pass source_id, species_id, files and rel_file as pairs";
  }
  $verbose |=0;
Karyn Megy's avatar
Karyn Megy committed

  my $file = @{$files}[0];

  print "source_id = $source_id, species = $species_id, file = $file\n" if($verbose);

  my $added = 0;
  my $count = 0;

  my $file_io = $self->get_filehandle($file);

  if ( !defined $file_io ) {
    print STDERR "ERROR: Could not open file $file\n";
    return 1;
  }

  while ( my $line = $file_io->getline() ) {
    chomp $line;

    my ($SPECIES, $gene_id, $acc, $family, $subfamily, $description) = split(",",$line);
Karyn Megy's avatar
Karyn Megy committed

    my $full_description = $description."($family)" ;
    if ($subfamily ne $family) { $full_description .= ", subfamily $subfamily" ;}
    #$subfamily ~= /1-3-beta-D/1,3-beta-D/ ;

    my $xref_id = $self->get_xref($acc, $source_id, $species_id);
Karyn Megy's avatar
Karyn Megy committed

    if(!defined($xref_id)){
      $xref_id = $self->add_xref({ acc        => $acc,
				   label      => $acc,
				   desc       => $full_description,
				   source_id  => $source_id,
				   species_id => $species_id,
				   info_type  => "DIRECT"} );
Karyn Megy's avatar
Karyn Megy committed
      $count++;
    }
    if(defined($gene_id) and $gene_id ne "-"){
      $self->add_direct_xref($xref_id, $gene_id, "Gene", "") ;
      $added++;
    }	
  }

  $file_io->close();

  print "Added $count xrefs and $added Direct xrefs to genes for ImmunoDB\n" if($verbose);
  return 0;
}
1;