diff --git a/modules/Bio/EnsEMBL/IdMapping/InternalIdMapper.pm b/modules/Bio/EnsEMBL/IdMapping/InternalIdMapper.pm index 1ff9a12aeb02272fbab01db1af506aaf837c62ee..11dfaa587f6c69768af2c7913b7c5fc74f0ad3d1 100644 --- a/modules/Bio/EnsEMBL/IdMapping/InternalIdMapper.pm +++ b/modules/Bio/EnsEMBL/IdMapping/InternalIdMapper.pm @@ -98,9 +98,9 @@ sub map_genes { # determine which plugin methods to run my @default_plugins = (qw( Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblGeneGeneric::init_basic - Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblGeneGeneric::synteny Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblGeneGeneric::best_transcript Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblGeneGeneric::biotype + Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblGeneGeneric::synteny Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblGeneGeneric::internal_id )); @@ -198,10 +198,10 @@ sub map_transcripts { my @default_plugins = (qw( Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblTranscriptGeneric::init_basic Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblTranscriptGeneric::non_exact_translation - Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblTranscriptGeneric::mapped_gene Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblTranscriptGeneric::biotype - Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblTranscriptGeneric::internal_id + Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblTranscriptGeneric::mapped_gene Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblTranscriptGeneric::single_gene + Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblTranscriptGeneric::internal_id )); my @plugins = $self->conf->param('plugin_internal_id_mappers_transcript'); @@ -299,6 +299,7 @@ sub map_exons { my @default_plugins = (qw( Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblExonGeneric::init_basic Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblExonGeneric::mapped_transcript + Bio::EnsEMBL::IdMapping::InternalIdMapper::EnsemblExonGeneric::internal_id )); my @plugins = $self->conf->param('plugin_internal_id_mappers_exon'); diff --git a/modules/Bio/EnsEMBL/IdMapping/InternalIdMapper/EnsemblExonGeneric.pm b/modules/Bio/EnsEMBL/IdMapping/InternalIdMapper/EnsemblExonGeneric.pm index 81729deb0d632c29e0ba1727f505632bfc0ebf84..e4597e34d3fc636ec9a47c52eda2260813ad5df6 100644 --- a/modules/Bio/EnsEMBL/IdMapping/InternalIdMapper/EnsemblExonGeneric.pm +++ b/modules/Bio/EnsEMBL/IdMapping/InternalIdMapper/EnsemblExonGeneric.pm @@ -88,5 +88,34 @@ sub mapped_transcript { } +# +# selectively rescore by penalising scores between exons with +# different internalIDs +# +sub internal_id { + my $self = shift; + my $num = shift; + my $esb = shift; + my $mappings = shift; + my $exon_scores = shift; + + $self->logger->info( "Retry with internalID disambiguation...\n", + 0, 'stamped' ); + + if ( !$exon_scores->loaded() ) { + $esb->internal_id_rescore($exon_scores); + $exon_scores->write_to_file(); + } + + $mappings = $self->basic_mapping( $exon_scores, "exon_mappings$num" ); + $num++; + my $new_scores = + $esb->create_shrinked_matrix( $exon_scores, $mappings, + "exon_matrix$num" ); + + return ( $new_scores, $mappings ); +} + + 1;