Skip to content
Snippets Groups Projects
Commit 29c4a475 authored by Andreas Kusalananda Kähäri's avatar Andreas Kusalananda Kähäri
Browse files

Modify store() so that it also stores the alternative translations

associated with the transcript.
parent a729a87b
No related branches found
No related tags found
No related merge requests found
......@@ -745,9 +745,9 @@ sub store {
}
my $original_translation = $transcript->translation();
my $original = $transcript;
my $original = $transcript;
my $seq_region_id;
($transcript, $seq_region_id) = $self->_pre_store($transcript);
( $transcript, $seq_region_id ) = $self->_pre_store($transcript);
# first store the transcript w/o a display xref
# the display xref needs to be set after xrefs are stored which needs to
......@@ -855,6 +855,53 @@ sub store {
$original_translation->adaptor( $translation->adaptor() );
} ## end if ( defined($translation...))
# Do the eqivalent of the above for all alternative translations, if
# there are any.
my $alt_translations =
$transcript->get_all_alternative_translations();
if ( defined($alt_translations)
&& scalar( @{$alt_translations} ) > 0 )
{
foreach my $alt_translation ( @{$alt_translations} ) {
my $start_exon = $alt_translation->start_Exon();
my $end_exon = $alt_translation->end_Exon();
if ( !defined($start_exon) ) {
throw("Translation does not define a start exon.");
} elsif ( !defined($end_exon) ) {
throw("Translation does not defined an end exon.");
}
if ( !defined( $start_exon->dbID() ) ) {
my $key = $start_exon->hashkey();
($start_exon) = grep { $_->hashkey() eq $key } @{$exons};
if ( defined($start_exon) ) {
$alt_translation->start_Exon($start_exon);
} else {
throw(
"Translation's start_Exon does not appear to be one of the "
. "exons in its associated Transcript" );
}
} elsif ( !defined( $end_exon->dbID() ) ) {
my $key = $end_exon->hashkey();
($end_exon) = grep { $_->hashkey() eq $key } @$exons;
if ( defined($end_exon) ) {
$translation->end_Exon($end_exon);
} else {
throw(
"Translation's end_Exon does not appear to be one of the "
. "exons in its associated Transcript." );
}
}
$db->get_TranslationAdaptor()
->store( $alt_translation, $transc_dbID );
} ## end foreach my $alt_translation...
} ## end if ( defined($alt_translations...))
#
# store the xrefs/object xref mapping
#
......
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