diff --git a/modules/Bio/EnsEMBL/DBSQL/DensityFeatureAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/DensityFeatureAdaptor.pm index 31f80d70aaea82a86193ba823eee5ba2a6de82d2..31c5f8a0f22ec58986c7f807cb722ccb0f80b552 100644 --- a/modules/Bio/EnsEMBL/DBSQL/DensityFeatureAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/DensityFeatureAdaptor.pm @@ -404,8 +404,16 @@ sub _objs_from_sth { my $len = $seq_region_end - $seq_region_start + 1; - my @coords = - $mapper->map($sr_name, $seq_region_start, $seq_region_end,1, $sr_cs); + my @coords; + + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + + @coords = $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + 1, $sr_cs, 0, $dest_slice); + + } else { + @coords = $mapper->map($sr_name, $seq_region_start, $seq_region_end,1, $sr_cs); + } #filter out gaps @coords = grep {!$_->isa('Bio::EnsEMBL::Mapper::Gap')} @coords; diff --git a/modules/Bio/EnsEMBL/DBSQL/DnaAlignFeatureAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/DnaAlignFeatureAdaptor.pm index 0af606583e3daa199c0620a68c457645c7cc8669..ab725f2b3e0f7c2588f412023191fe93268d8135 100644 --- a/modules/Bio/EnsEMBL/DBSQL/DnaAlignFeatureAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/DnaAlignFeatureAdaptor.pm @@ -466,11 +466,22 @@ FEATURE: # Remap the feature coordinates to another coord system # if a mapper was provided. if ( defined($mapper) ) { - ( $seq_region_id, $seq_region_start, - $seq_region_end, $seq_region_strand ) - = - $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, + + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, $seq_region_strand, $sr_cs ); + } # Skip features that map to gaps or coord system boundaries. if ( !defined($seq_region_id) ) { next FEATURE } diff --git a/modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm index 5c1e447b6a14e7a04afed9ee7b7b2a44a12deeed..6748fadbbcf3bc3c53176e97f2faf13dd2c6f45e 100644 --- a/modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/ExonAdaptor.pm @@ -617,11 +617,22 @@ FEATURE: while ( $sth->fetch() ) { # was provided. # if ( defined($dest_mapper) ) { - ( $seq_region_id, $seq_region_start, - $seq_region_end, $seq_region_strand ) - = $dest_mapper->fastmap( $sr_name, $seq_region_start, + + if (defined $dest_slice && $dest_mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $dest_mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = $dest_mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, $seq_region_strand, $sr_cs ); + } # Skip features that map to gaps or coord system boundaries. if ( !defined($seq_region_id) ) { next FEATURE } diff --git a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm index e3250dfe85f446defae5f41cf23e176f6a122df2..81f0452d528de940fbd007bf7abac32c43dc2998 100644 --- a/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/GeneAdaptor.pm @@ -1681,9 +1681,21 @@ sub _objs_from_sth { # if($mapper) { - ($seq_region_id,$seq_region_start,$seq_region_end,$seq_region_strand) = - $mapper->fastmap($sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs); + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs ); + } #skip features that map to gaps or coord system boundaries next FEATURE if(!defined($seq_region_id)); diff --git a/modules/Bio/EnsEMBL/DBSQL/MiscFeatureAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/MiscFeatureAdaptor.pm index 3e9c9ee8f5d223cbd0fc30f1cce7868dec6cce87..851eeb8799647f271b26ada3b9e1e3a8167aba87 100644 --- a/modules/Bio/EnsEMBL/DBSQL/MiscFeatureAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/MiscFeatureAdaptor.pm @@ -437,9 +437,17 @@ sub _objs_from_sth { # if ($mapper) { - ($seq_region_id,$seq_region_start,$seq_region_end,$seq_region_strand) = - $mapper->fastmap($sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs); + + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start,$seq_region_end, $seq_region_strand ) = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start,$seq_region_end, $seq_region_strand ) = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end,$seq_region_strand, $sr_cs ); + } #skip features that map to gaps or coord system boundaries if(!defined($seq_region_id)) { diff --git a/modules/Bio/EnsEMBL/DBSQL/OperonAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/OperonAdaptor.pm index 95304ffff01cc1b22f87a41170d401e9736ab837..f9cad35fa006cfb48981ea1d23e67e8152de1438 100644 --- a/modules/Bio/EnsEMBL/DBSQL/OperonAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/OperonAdaptor.pm @@ -708,10 +708,22 @@ sub _objs_from_sth { # if ($mapper) { - ( $seq_region_id, $seq_region_start, - $seq_region_end, $seq_region_strand ) - = $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs ); + + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs ); + } #skip features that map to gaps or coord system boundaries next OPERON if ( !defined($seq_region_id) ); diff --git a/modules/Bio/EnsEMBL/DBSQL/OperonTranscriptAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/OperonTranscriptAdaptor.pm index 2770f3b278232b11bb121c89f4861f4012c197d1..4c061bb197f16b3cab146ce4bae823cda79939f1 100644 --- a/modules/Bio/EnsEMBL/DBSQL/OperonTranscriptAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/OperonTranscriptAdaptor.pm @@ -790,11 +790,23 @@ sub _objs_from_sth { # if ($mapper) { - ( $seq_region_id, $seq_region_start, - $seq_region_end, $seq_region_strand ) - = $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs ); - + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs ); + } + + #skip features that map to gaps or coord system boundaries next OPERON if ( !defined($seq_region_id) ); diff --git a/modules/Bio/EnsEMBL/DBSQL/PredictionExonAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/PredictionExonAdaptor.pm index 4a7530ad673edbd263408ebe621b14fe987ac077..8b26fa27ae8e29d40b84582637a8fe2976460ef2 100644 --- a/modules/Bio/EnsEMBL/DBSQL/PredictionExonAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/PredictionExonAdaptor.pm @@ -389,9 +389,21 @@ sub _objs_from_sth { # if($dest_mapper) { - ($seq_region_id,$seq_region_start,$seq_region_end,$seq_region_strand) = - $dest_mapper->fastmap($sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs); + if (defined $dest_slice && $dest_mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $dest_mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = $dest_mapper->fastmap( $sr_name, $seq_region_start, + $seq_region_end, $seq_region_strand, + $sr_cs ); + } #skip features that map to gaps or coord system boundaries next FEATURE if(!defined($seq_region_id)); diff --git a/modules/Bio/EnsEMBL/DBSQL/PredictionTranscriptAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/PredictionTranscriptAdaptor.pm index 349043376ac01e8573319edbb01c328f6c2f8f55..3602188b7e25a150e9eec3bc32a07b70d7896ff2 100644 --- a/modules/Bio/EnsEMBL/DBSQL/PredictionTranscriptAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/PredictionTranscriptAdaptor.pm @@ -351,9 +351,21 @@ sub _objs_from_sth { # if($mapper) { - ($seq_region_id,$seq_region_start,$seq_region_end,$seq_region_strand) = - $mapper->fastmap($sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs); + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs ); + } #skip features that map to gaps or coord system boundaries next FEATURE if(!defined($seq_region_id)); diff --git a/modules/Bio/EnsEMBL/DBSQL/ProteinAlignFeatureAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/ProteinAlignFeatureAdaptor.pm index 99c2ebca24dcfe7146fd0f9671aee6c4021a5ace..b1a3d10952414dc9c8f6dbf4285f458d139fa572 100644 --- a/modules/Bio/EnsEMBL/DBSQL/ProteinAlignFeatureAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/ProteinAlignFeatureAdaptor.pm @@ -255,9 +255,21 @@ sub _objs_from_sth { # if($mapper) { - ($seq_region_id,$seq_region_start,$seq_region_end,$seq_region_strand) = - $mapper->fastmap($sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs); + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs ); + } #skip features that map to gaps or coord system boundaries next FEATURE if(!defined($seq_region_id)); diff --git a/modules/Bio/EnsEMBL/DBSQL/RepeatFeatureAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/RepeatFeatureAdaptor.pm index 4e8363faf46ae676ab53d479ba9f7497fc5b96c2..d8d97ccd0e83f64050d601a76c190f9612396303 100644 --- a/modules/Bio/EnsEMBL/DBSQL/RepeatFeatureAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/RepeatFeatureAdaptor.pm @@ -273,9 +273,21 @@ sub _objs_from_sth { # if($mapper) { - ($seq_region_id,$seq_region_start,$seq_region_end,$seq_region_strand) = - $mapper->fastmap($sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs); + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs ); + } #skip features that map to gaps or coord system boundaries next FEATURE if(!defined($seq_region_id)); diff --git a/modules/Bio/EnsEMBL/DBSQL/SimpleFeatureAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/SimpleFeatureAdaptor.pm index d974a44852289bcd81ebb993d7e2470e07f1218c..82871dc92d5eac47a492f98da63fd1a58d72604b 100644 --- a/modules/Bio/EnsEMBL/DBSQL/SimpleFeatureAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/SimpleFeatureAdaptor.pm @@ -260,9 +260,21 @@ sub _objs_from_sth { # if($mapper) { - ($seq_region_id,$seq_region_start,$seq_region_end,$seq_region_strand) = - $mapper->fastmap($sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs); + if (defined $dest_slice && $mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs ); + } #skip features that map to gaps or coord system boundaries next FEATURE if(!defined($seq_region_id)); diff --git a/modules/Bio/EnsEMBL/DBSQL/SplicingEventAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/SplicingEventAdaptor.pm index 0e71118ed2dd9eafad539356b78da613755a694d..14a1e28f2425615621aeceab2e62fcec1ab90ad8 100644 --- a/modules/Bio/EnsEMBL/DBSQL/SplicingEventAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/SplicingEventAdaptor.pm @@ -459,11 +459,22 @@ FEATURE: # Remap the feature coordinates to another coord system if a mapper # was provided. if ( defined($dest_mapper) ) { - ( $seq_region_id, $seq_region_start, - $seq_region_end, $seq_region_strand ) - = $dest_mapper->fastmap( $sr_name, $seq_region_start, + + if (defined $dest_slice && $dest_mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $dest_mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = $dest_mapper->fastmap( $sr_name, $seq_region_start, $seq_region_end, $seq_region_strand, $sr_cs ); + } # Skip features that map to gaps or coord system boundaries. if ( !defined($seq_region_id) ) { next FEATURE } diff --git a/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm b/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm index 4427e7e5a6e7c30fc17338aa32e2833b7fd28f3b..3993b728ae3cdb5445a4a0e6e0c73f47dabd36e6 100644 --- a/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm +++ b/modules/Bio/EnsEMBL/DBSQL/TranscriptAdaptor.pm @@ -1539,9 +1539,21 @@ sub _objs_from_sth { # if($dest_mapper) { - ($seq_region_id,$seq_region_start,$seq_region_end,$seq_region_strand) = - $dest_mapper->fastmap($sr_name, $seq_region_start, $seq_region_end, - $seq_region_strand, $sr_cs); + if (defined $dest_slice && $dest_mapper->isa('Bio::EnsEMBL::ChainedAssemblyMapper') ) { + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = + $dest_mapper->map( $sr_name, $seq_region_start, $seq_region_end, + $seq_region_strand, $sr_cs, 1, $dest_slice); + + } else { + + ( $seq_region_id, $seq_region_start, + $seq_region_end, $seq_region_strand ) + = $dest_mapper->fastmap( $sr_name, $seq_region_start, + $seq_region_end, $seq_region_strand, + $sr_cs ); + } #skip features that map to gaps or coord system boundaries next FEATURE if(!defined($seq_region_id));