Skip to content
Snippets Groups Projects
Commit 6c618ed2 authored by Kevin Howe's avatar Kevin Howe
Browse files

Parses file of direct xrefs for Ig/TcR gene segments

parent d08b622c
No related branches found
No related tags found
No related merge requests found
package XrefParser::SegmentParser;
use strict;
use POSIX qw(strftime);
use File::Basename;
use XrefParser::BaseParser;
use vars qw(@ISA);
@ISA = qw(XrefParser::BaseParser);
# --------------------------------------------------------------------------------
# Parse command line and run if being run directly
if (!defined(caller())) {
if (scalar(@ARGV) != 1) {
print "\nUsage: SegmentParser.pm file <source_id> <species_id>\n\n";
exit(1);
}
run($ARGV[0]);
}
sub run {
my $self = shift if (defined(caller(1)));
my $file = shift;
my $source_id = shift;
my $species_id = shift;
if(!defined($source_id)){
$source_id = XrefParser::BaseParser->get_source_id_for_filename($file);
}
if(!defined($species_id)){
$species_id = XrefParser::BaseParser->get_species_id_for_filename($file);
}
my %name_2_source_id=();
my $added=0;
if(!open(FILE,"<". $file)){
print "ERROR: Could not open file $file\n";
return 1;
}
while(my $line = <FILE>){
chomp $line;
my ($gene_id,$transcript_id,$source_name,$acc,$display_label,$description, $status)
= split("\t",$line);
if(!defined($name_2_source_id{$source_name})){
my $tmp = $self->get_source_id_for_source_name($source_name);
if(!$tmp){
die("Could not get source_id for $source_name\n");
}
$name_2_source_id{$source_name} = $tmp;
}
my $xref_id = $self->get_xref($acc,$name_2_source_id{$source_name});
if(!defined($xref_id)){
$xref_id = $self->add_xref($acc,"",$display_label,$description,$name_2_source_id{$source_name}, $species_id);
$added++;
}
$self->add_direct_xref($xref_id, $transcript_id, "Transcript", "") if (defined($transcript_id));
#just add to the transcript ONLY as the check at the end will move all
#the those mapped to the transcript to the genes anyway due to the
#biomart check
}
close FILE;
print "Added $added Xrefs for Gene segments\n";
return 0;
}
sub new {
my $self = {};
bless $self, "XrefParser::SegmentParser";
return $self;
}
1;
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment