my ($self, $ref_arg) = @_;
my $source_id = $ref_arg->{source_id};
my $species_id = $ref_arg->{species_id};
my $files = $ref_arg->{files};
if((!defined $source_id) or (!defined $species_id) or (!defined $files)){
croak "Need to pass source_id, species_id and files as pairs";
}
my $file = @{$files}[0];
my @fields = qw/wormbase_gene wormbase_gseqname wormbase_locus wormbase_transcript wormbase_cds wormpep_id protein_id/;
my %src_ids;
my $sth = $self->dbi()->prepare("SELECT xref_id FROM xref WHERE accession=? AND source_id=? AND species_id=$species_id");
for my $field (@fields){
$src_ids{$field} = $self->get_source_id_for_source_name($field);
}
my $data = $self->get_data(@$files);
for my $gene_id (keys %$data){
$self->add_xref_and_direct_xref(
$sth, $species_id, "gene", $src_ids{wormbase_gene},
$gene_id, $gene_id
);
$self->add_xref_and_direct_xref(
$sth, $species_id, "gene", $src_ids{wormbase_gseqname},
$gene_id, $data->{$gene_id}->{wormbase_gseqname}
);
$self->add_xref_and_direct_xref(
$sth, $species_id, "gene", $src_ids{wormbase_locus},
$gene_id, $data->{$gene_id}->{wormbase_locus}
);
for my $transcript (@{$data->{$gene_id}->{transcripts}}){
$self->add_xref_and_direct_xref(
$sth, $species_id, "transcript", $src_ids{wormbase_transcript},
$transcript->{transcript_id}, $transcript->{transcript_id}
);
$self->add_xref_and_direct_xref(
$sth, $species_id, "transcript", $src_ids{wormbase_cds},
$transcript->{wormbase_cds}, $transcript->{wormbase_cds}, $transcript->{transcript_id}
);
$self->add_xref_and_direct_xref(
$sth, $species_id, "translation", $src_ids{wormpep_id},
$transcript->{wormpep_id}, $transcript->{wormpep_id}, $transcript->{transcript_id}
);
$self->add_xref_and_direct_xref(
$sth, $species_id, "translation", $src_ids{protein_id},
$transcript->{protein_id}, $transcript->{protein_id}, $transcript->{transcript_id}
);
}
}
}