my ( $self, $ref_arg ) = @_;
my $source_id = $ref_arg->{source_id};
my $species_id = $ref_arg->{species_id};
my $files = $ref_arg->{files};
my $verbose = $ref_arg->{verbose}
my $dbi = $ref_arg->{dbi}
if ( ( !defined $source_id )
or ( !defined $species_id )
or ( !defined $files ) )
{
confess 'Need to pass source_id, species_id and files as pairs';
}
my $file = @{$files}[0];
my $file_io = $self->get_filehandle($file);
if ( !defined $file_io ) {
confess "Could not open $file\n";
}
#synonyms; move this to SynonymAdaptor?!
my $syn_hash = $self->get_ext_synonyms( 'MGI', $dbi );
#Init input file
my $input_file = Text::CSV->new(
{
sep_char => "\t",
empty_is_undef => 1,
strict => 1,
allow_loose_quotes => 1,
}
) or confess "Cannot use file $file: " . Text::CSV->error_diag();
my $count = 0;
my $syn_count = 0;
while ( my $data = $input_file->getline($file_io) ) {
my $acc = $data->[0];
my $ensid = $data->[5];
my $xref_id = $self->add_xref(
{
acc => $acc,
version => 0,
label => $data->[1],
desc => $data->[2],
source_id => $source_id,
species_id => $species_id,
info_type => 'DIRECT',
dbi => $dbi,
}
);
$self->add_direct_xref( $xref_id, $ensid, 'Gene', undef, $dbi );
if ( exists $syn_hash->{$acc} ) {
foreach my $syn ( @{ $syn_hash->{$acc} } ) {
$self->add_to_syn( $acc, $source_id, $syn, $species_id, $dbi );
$syn_count += 1;
}
}
$count += 1;
}
$input_file->eof
|| confess "Error parsing file $file: " . $input_file->error_diag();
$file_io->close();
if ($verbose) {
print "$count direct MGI xrefs added\n";
print $syn_count. " synonyms added\n";
}
return 0;
}