diff --git a/modules/Bio/EnsEMBL/IdMapping/StableIdMapper.pm b/modules/Bio/EnsEMBL/IdMapping/StableIdMapper.pm index b294eae3456e745296de53b36959467d638920d0..c742a1060cc83ad18a9eb89ff15cdd1f12861bcd 100644 --- a/modules/Bio/EnsEMBL/IdMapping/StableIdMapper.pm +++ b/modules/Bio/EnsEMBL/IdMapping/StableIdMapper.pm @@ -691,13 +691,35 @@ sub generate_mapping_stats { my $novel_total = $stats->{'mapped_novel'} + $stats->{'lost_novel'}; # no split into known and novel for exons - unless ($type eq 'exon') { - $result .= sprintf($fmt2, 'known', $stats->{'mapped_known'}, - $stats->{'lost_known'}, $stats->{'mapped_known'}/$known_total*100); - $result .= sprintf($fmt2, 'novel', $stats->{'mapped_novel'}, - $stats->{'lost_novel'}, $stats->{'mapped_novel'}/$novel_total*100); - } - + unless ( $type eq 'exon' ) { + if ( $known_total > 0 ) { + $result .= sprintf( $fmt2, + 'known', + $stats->{'mapped_known'}, + $stats->{'lost_known'}, + $stats->{'mapped_known'}/$known_total*100 ); + } else { # Avoid division by zero + $result .= sprintf( $fmt2, + 'known', + $stats->{'mapped_known'}, + $stats->{'lost_known'}, 0 ); + } + + if ( $novel_total > 0 ) { + $result .= sprintf( $fmt2, + 'novel', + $stats->{'mapped_novel'}, + $stats->{'lost_novel'}, + $stats->{'mapped_novel'}/$novel_total*100 ); + } else { # Avoid division by zero + $result .= sprintf( $fmt2, + 'novel', + $stats->{'mapped_novel'}, + $stats->{'lost_novel'}, 0 ); + } + + } ## end unless ( $type eq 'exon' ) + $result .= sprintf($fmt2, 'total', $mapped_total, $lost_total, $mapped_total/($known_total + $novel_total)*100);