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};
my $dbi = $ref_arg->{dbi};
$dbi = $self->dbi unless defined $dbi;
if((!defined $source_id) or (!defined $species_id) or (!defined $files) ){
croak "Need to pass source_id, species_id and files as pairs";
}
$verbose |=0;
my @files = @{$files};
my $peptide_source_id =
$self->get_source_id_for_source_name('RefSeq_peptide', undef, $dbi);
my $mrna_source_id =
$self->get_source_id_for_source_name('RefSeq_mRNA', undef, $dbi);
my $ncrna_source_id =
$self->get_source_id_for_source_name('RefSeq_ncRNA', undef, $dbi);
my $pred_peptide_source_id =
$self->get_source_id_for_source_name('RefSeq_peptide_predicted', undef, $dbi);
my $pred_mrna_source_id =
$self->get_source_id_for_source_name('RefSeq_mRNA_predicted','refseq', $dbi);
my $pred_ncrna_source_id =
$self->get_source_id_for_source_name('RefSeq_ncRNA_predicted', undef, $dbi);
if($verbose){
print "RefSeq_peptide source ID = $peptide_source_id\n";
print "RefSeq_mRNA source ID = $mrna_source_id\n";
print "RefSeq_ncRNA source ID = $ncrna_source_id\n";
print "RefSeq_peptide_predicted source ID = $pred_peptide_source_id\n";
print "RefSeq_mRNA_predicted source ID = $pred_mrna_source_id\n" ;
print "RefSeq_ncRNA_predicted source ID = $pred_ncrna_source_id\n" ;
}
my @xrefs;
foreach my $file (@files) {
my $xrefs =
$self->create_xrefs( $peptide_source_id,
$pred_peptide_source_id,
$mrna_source_id, $ncrna_source_id,
$pred_mrna_source_id, $pred_ncrna_source_id,
$file,
$species_id, $dbi );
if ( !defined($xrefs) ) {
return 1; #error
}
print "Read " . scalar(@$xrefs) ." xrefs from $file\n" if($verbose);
push @xrefs, @{$xrefs};
}
if ( !defined( $self->upload_xref_object_graphs( \@xrefs, $dbi ) ) ) {
return 1; # error
}
if ( defined $release_file ) {
# Parse and set release info.
my $release_io = $self->get_filehandle($release_file);
local $/ = "\n*";
my $release = $release_io->getline();
$release_io->close();
$release =~ s/\s{2,}/ /g;
$release =~
s/.*(NCBI Reference Sequence.*) Distribution Release Notes.*/$1/s;
# Put a comma after the release number to make it more readable.
$release =~ s/Release (\d+)/Release $1,/;
print "RefSeq release: '$release'\n";
$self->set_release( $source_id, $release, $dbi );
$self->set_release( $peptide_source_id, $release, $dbi );
$self->set_release( $mrna_source_id, $release, $dbi );
$self->set_release( $ncrna_source_id, $release, $dbi );
$self->set_release( $pred_peptide_source_id, $release, $dbi );
$self->set_release( $pred_mrna_source_id, $release, $dbi );
$self->set_release( $pred_ncrna_source_id, $release, $dbi );
}
return 0; # successfull
}