From 0d9182e7183a3d1897346e227928115ad249240d Mon Sep 17 00:00:00 2001 From: Jacques Dainat Date: Thu, 12 Sep 2024 10:58:43 +0200 Subject: [PATCH] Stat (#489) * fix #307 by adding median and percentile * add percentile parameter to change default value 90 * update doc to reflect add of percentile parameter * add extra space between col1 and col2 to be sure to always separate these to column even if widht is set to low * increase width of col1 --- bin/agat_sp_statistics.pl | 7 + docs/tools/agat_sp_statistics.md | 4 + lib/AGAT/OmniscientStat.pm | 216 ++++++++- .../out/agat_sp_manage_introns_1.txt | 250 ++++++----- t/scripts_output/out/agat_sp_statistics_1.txt | 424 ++++++++++-------- 5 files changed, 591 insertions(+), 310 deletions(-) diff --git a/bin/agat_sp_statistics.pl b/bin/agat_sp_statistics.pl index 6ede4d16..16f937d5 100755 --- a/bin/agat_sp_statistics.pl +++ b/bin/agat_sp_statistics.pl @@ -14,6 +14,7 @@ my $gff = undef; my $opt_output = undef; my $opt_yaml = undef; +my $opt_percentile = 90; my $opt_genomeSize = undef; my $opt_plot = undef; my $opt_verbose = 0; @@ -23,6 +24,7 @@ 'c|config=s' => \$config, "h|help" => \$opt_help, 'o|output=s' => \$opt_output, + 'percentile=i' => \$opt_percentile, 'yaml!' => \$opt_yaml, 'd|p' => \$opt_plot, 'v|verbose' => \$opt_verbose, @@ -102,6 +104,7 @@ print "Compute statistics\n"; print_omniscient_statistics ({ input => $hash_omniscient, genome => $opt_genomeSize, + percentile => $opt_percentile, output => $out, yaml => $opt_yaml, distri => $opt_plot, @@ -157,6 +160,10 @@ =head1 OPTIONS File where will be written the result. If no output file is specified, the output will be written to STDOUT. +=item B<--percentile> + +Integer - Percentile to compute. Default is 90. + =item B<--yaml> Bolean - When this option is activated , a second output will be printed either in STDOUT if no output provided or in (a .yaml suffix is added to the --output value provided) diff --git a/docs/tools/agat_sp_statistics.md b/docs/tools/agat_sp_statistics.md index 7f09c311..6571f4b8 100644 --- a/docs/tools/agat_sp_statistics.md +++ b/docs/tools/agat_sp_statistics.md @@ -39,6 +39,10 @@ agat_sp_statistics.pl --help File where will be written the result. If no output file is specified, the output will be written to STDOUT. +- **--percentile** + + Integer - Percentile to compute. Default is 90. + - **--yaml** Bolean - When this option is activated , a second output will be printed either in STDOUT if no output provided or in (a .yaml suffix is added to the --output value provided) diff --git a/lib/AGAT/OmniscientStat.pm b/lib/AGAT/OmniscientStat.pm index 40bc3353..3907fb7d 100644 --- a/lib/AGAT/OmniscientStat.pm +++ b/lib/AGAT/OmniscientStat.pm @@ -3,6 +3,7 @@ package AGAT::OmniscientStat; use strict; +use POSIX; use warnings; use Bio::Tools::GFF; use Bio::SeqIO; @@ -44,6 +45,9 @@ This is the code to perform statisctis of data store in Omniscient. =cut +# define first column width +my $width = '%-60s'; + sub print_omniscient_statistics{ # --- HANDLE ARGUMENTS --- @@ -53,11 +57,15 @@ sub print_omniscient_statistics{ if(ref($args) ne 'HASH'){ print "Hash Arguments expected for print_omniscient_statistics. Please check the call.\n";exit; } # Declare all variables and fill them - my ($omniscient, $genome_size, $output, $yaml, $verbose, $distri, $isoform); + my ($omniscient, $genome_size, $output, $yaml, $verbose, $distri, $isoform, $percentile); # omniscient if( defined($args->{input})) {$omniscient = $args->{input};} else{ print "Input omniscient mandatory to use print_omniscient_statistics!"; exit;} + + # percentile + if( defined($args->{percentile})) {$percentile = $args->{percentile};} + else{ $percentile=90; } #genome size if( ! defined($args->{genome}) ) { @@ -77,7 +85,7 @@ sub print_omniscient_statistics{ $genome_size += length($string); } } - printf("%-45s%d%s", "Total sequence length (bp)", $genome_size,"\n"); + printf("$width%d%s", "Total sequence length (bp)", $genome_size,"\n"); } } @@ -100,7 +108,7 @@ sub print_omniscient_statistics{ if( ! defined($args->{isoform}) ) {$isoform = 0;} else{ $isoform = $args->{isoform}; } print "get_omniscient_statistics\n" if $verbose; - my $result_by_type = get_omniscient_statistics($omniscient, $genome_size, $verbose); + my $result_by_type = get_omniscient_statistics($omniscient, $genome_size, $percentile, $verbose); my $omniscientNew = undef ; #if isoform has to be removed my $result_by_type2 = undef; #if isoform will be a computed without isoforms @@ -131,7 +139,7 @@ sub print_omniscient_statistics{ # get nb of each feature in omniscient; my ($info_l2, $extra_l2) = get_omniscient_statistics_from_l2($omniscient, $by_type, $verbose); - my $stat2 = get_info_sentences($info_l2, $extra_l2, $genome_size); + my $stat2 = get_info_sentences($info_l2, $extra_l2, $genome_size, $percentile); # Check if we skip printing without iso because there is no iso my $skip_iso=undef; @@ -217,8 +225,10 @@ sub fill_yaml_hash{ my ($hash, $bytype, $isoinfo, $stat)=@_; foreach my $infoList (@$stat){ + foreach my $infos (@$infoList){ - my $increment="%d"; + + my $increment="%s"; if (defined($infos->[2])){ $increment="%.1f"; } @@ -249,12 +259,19 @@ sub recreate_sentence{ my ($infos)=@_; my $sentence=undef; - my $increment="%-45s%d%s"; + # ask for rounded value if (defined($infos->[2])){ - $increment=$infos->[2]; + $sentence = sprintf("$width%.1f%s", $infos->[0]." ", $infos->[1], "\n"); + + } # na value + elsif($infos->[1] eq "na"){ + $sentence = sprintf( "$width%s%s", $infos->[0]." ", $infos->[1], "\n"); + }else{ + my $float = $infos->[1]; + # With this calculation -1.4 is rounded to -1, and -1.6 to -2, and zero won't explode. + my $rounded = int($float + $float/abs($float*2 || 1)); + $sentence = sprintf( "$width%d%s", $infos->[0]." ", $rounded, "\n"); } - - $sentence = sprintf($increment, "$infos->[0]", "$infos->[1]", "\n"); return $sentence; } @@ -300,7 +317,7 @@ sub _print_distribution{ # (eg: Gene(l1),mRNA(l2),cds(l3),exon(l3), where the type of level1 and level3 feature are only those linked to mRNA.) sub get_omniscient_statistics { - my ($hash_omniscient, $genomeSize, $verbose) = @_ ; + my ($hash_omniscient, $genomeSize, $percentile, $verbose) = @_ ; my %result_by_type; @@ -315,7 +332,7 @@ sub get_omniscient_statistics { if ( exists_keys ($hash_omniscient, ('level1', $tag_l1) ) ){ print "get_omniscient_statistics_for_topfeature for $tag_l1\n" if $verbose; my ($info_l1, $extra_l1) = get_omniscient_statistics_for_topfeature($hash_omniscient, $tag_l1); - my $info_l1_sentence = get_info_sentences($info_l1, $extra_l1, $genomeSize); + my $info_l1_sentence = get_info_sentences($info_l1, $extra_l1, $genomeSize, $percentile); my $info_l1_distri = get_distributions($info_l1, $extra_l1); $result_by_type{1}{$tag_l1} = { info => $info_l1_sentence, distri => $info_l1_distri, iso => undef}; } @@ -327,7 +344,7 @@ sub get_omniscient_statistics { if ( exists_keys ($hash_omniscient, ('level1', $tag_l1) ) ){ print "get_omniscient_statistics_for_standalone\n" if $verbose; my ($info_l1, $extra_l1) = get_omniscient_statistics_for_topfeature($hash_omniscient, $tag_l1); #normal title is topfeature - my $info_l1_sentence = get_info_sentences($info_l1, $extra_l1, $genomeSize); + my $info_l1_sentence = get_info_sentences($info_l1, $extra_l1, $genomeSize, $percentile); my $info_l1_distri = get_distributions($info_l1, $extra_l1); $result_by_type{2}{$tag_l1} = { info => $info_l1_sentence, distri => $info_l1_distri, iso => undef}; } @@ -340,7 +357,7 @@ sub get_omniscient_statistics { print "tag_l2 $tag_l2\n" if $verbose; my ($info_l2, $extra_l2) = get_omniscient_statistics_from_l2($hash_omniscient, $tag_l2, $verbose); - my $info_l2_sentence = get_info_sentences($info_l2, $extra_l2, $genomeSize); + my $info_l2_sentence = get_info_sentences($info_l2, $extra_l2, $genomeSize, $percentile); my $info_l2_distri = get_distributions($info_l2, $extra_l2); @@ -378,6 +395,7 @@ sub get_omniscient_statistics_for_topfeature{ #compute feature size my $sizeFeature=($feature_l1->end-$feature_l1->start)+1; $all_info{$tag_l1}{'level1'}{$tag_l1}{'size_feat'} += $sizeFeature; + push @{$all_info{$tag_l1}{'level1'}{$tag_l1}{'size_list'}}, $sizeFeature; #create distribution list push @{$all_info{$tag_l1}{'level1'}{$tag_l1}{'distribution'}}, $sizeFeature; @@ -433,6 +451,7 @@ sub get_omniscient_statistics_from_l2{ #compute feature size my $sizeFeature=($feature_l1->end-$feature_l1->start)+1; $all_info{$tag_l2}{'level1'}{$tag_l1}{'size_feat'} += $sizeFeature; + push @{$all_info{$tag_l2}{'level1'}{$tag_l1}{'size_list'}}, $sizeFeature; #create distribution list push @{$all_info{$tag_l2}{'level1'}{$tag_l1}{'distribution'}}, $sizeFeature; @@ -460,6 +479,7 @@ sub get_omniscient_statistics_from_l2{ #compute feature size my $sizeFeature=($feature_l2->end-$feature_l2->start)+1; $all_info{$tag_l2}{'level2'}{$tag_l2}{'size_feat'} += $sizeFeature; + push @{$all_info{$tag_l2}{'level2'}{$tag_l2}{'size_list'}}, $sizeFeature; #create distribution list push @{$all_info{$tag_l2}{'level2'}{$tag_l2}{'distribution'}}, $sizeFeature; @@ -488,6 +508,7 @@ sub get_omniscient_statistics_from_l2{ #compute feature size $all_info{$tag_l2}{'level2'}{'intron'}{'size_feat'} += $intronSize; + push @{$all_info{$tag_l2}{'level2'}{'intron'}{'size_list'}}, $intronSize; #create distribution list push @{$all_info{$tag_l2}{'level2'}{'intron'}{'distribution'}}, $sizeFeature; @@ -534,6 +555,7 @@ sub get_omniscient_statistics_from_l2{ #compute feature size $all_info{$tag_l2}{'level3'}{$tag_l3}{'intron'}{'size_feat'} += $intronSize; + push @{$all_info{$tag_l2}{'level3'}{$tag_l3}{'intron'}{'size_list'}}, $intronSize; #create distribution list push @{$all_info{$tag_l2}{'level3'}{$tag_l3}{'intron'}{'distribution'}}, $sizeFeature; @@ -555,6 +577,7 @@ sub get_omniscient_statistics_from_l2{ #compute cumulative feature size my $sizeFeature=($feature_l3->end-$feature_l3->start)+1; $all_info{$tag_l2}{'level3'}{$tag_l3}{'size_feat'} += $sizeFeature; + push @{$all_info{$tag_l2}{'level3'}{$tag_l3}{'size_list'}}, $sizeFeature; #------------------------------------------------- # MANAGE SPREAD FEATURES (multi exon features) @@ -668,7 +691,7 @@ sub get_omniscient_statistics_from_l2{ } sub get_info_sentences{ - my ($all_info, $extra_info, $genomeSize) = @_; + my ($all_info, $extra_info, $genomeSize, $percentile) = @_; my @result_list; @@ -705,6 +728,12 @@ sub get_info_sentences{ my $info_mean_length = _info_mean_length($hashType); push @result, @$info_mean_length; + my $info_median_length = _info_median_length($hashType); + push @result, @$info_median_length; + + my $info_precentile_length = _info_precentile_length($hashType, $percentile); + push @result, @$info_precentile_length; + if($genomeSize){ my $info_coverage = _info_coverage($hashType, $genomeSize); push @result, @$info_coverage; @@ -927,21 +956,21 @@ sub _info_mean_per { foreach my $tag_l2 (sort keys %{$all_info->{'level2'}}){ foreach my $tag_l1 (sort keys %{$all_info->{'level1'}}){ my $mean= $all_info->{'level2'}{$tag_l2}{'nb_feat'}/$all_info->{'level1'}{$tag_l1}{'nb_feat'}; - push @resu, [ "mean $tag_l2"."s per $tag_l1", $mean, "%-45s%.1f%s"]; + push @resu, [ "mean $tag_l2"."s per $tag_l1", $mean, "round"]; } } #print level3 foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ foreach my $tag_l2 (sort keys %{$all_info->{'level2'}}){ my $mean= $all_info->{'level3'}{$tag_l3}{'nb_feat'}/$all_info->{'level2'}{$tag_l2}{'nb_feat'}; - push @resu, [ "mean $tag_l3"."s per $tag_l2", $mean, "%-45s%.1f%s"]; + push @resu, [ "mean $tag_l3"."s per $tag_l2", $mean, "round"]; } } #print level3 - spread feature cases foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ if( exists_keys ($all_info, ('level3', $tag_l3, 'exon') ) ) { my $mean= $all_info->{'level3'}{$tag_l3}{'exon'}{'nb_feat'}/$all_info->{'level3'}{$tag_l3}{'nb_feat'}; - push @resu, [ "mean exons per $tag_l3", $mean, "%-45s%.1f%s"]; + push @resu, [ "mean exons per $tag_l3", $mean, "round"]; } } #print introns @@ -949,7 +978,7 @@ sub _info_mean_per { foreach my $tag_l2 (sort keys %{$all_info->{'level2'}}){ if(exists_keys($all_info, ('level3',$tag_l3,'intron'))){ my $mean= $all_info->{'level3'}{$tag_l3}{'intron'}{'nb_feat'}/$all_info->{'level2'}{$tag_l2}{'nb_feat'}; - push @resu, [ "mean introns in $tag_l3"."s per $tag_l2", $mean, "%-45s%.1f%s"]; + push @resu, [ "mean introns in $tag_l3"."s per $tag_l2", $mean, "round" ]; } } } @@ -1042,6 +1071,114 @@ sub _info_mean_length { return \@resu; } +############# +# Give info about median lenght of features by type +sub _info_median_length { + my ($all_info) = @_ ; + my @resu; + + + #print level1 + foreach my $tag_l1 (sort keys %{$all_info->{'level1'}}){ + my $median = median( @{$all_info->{'level1'}{$tag_l1}{'size_list'}} ); + push @resu, ["median $tag_l1 length (bp)", $median]; + } + + #print level2 + foreach my $tag_l2 (sort keys %{$all_info->{'level2'}}){ + my $size_feat = $all_info->{'level2'}{$tag_l2}{'size_list'}; + + if( $size_feat !=0 ){ + my $median= median( @{$all_info->{'level2'}{$tag_l2}{'size_list'}} ); + push @resu, ["median $tag_l2 length (bp)", $median]; + } + else{ warn "Problem in the calcul of level2 - $tag_l2 - size_list"; } + } + + #print level3 + foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ + if( $all_info->{'level3'}{$tag_l3}{'size_list'} == 0) { + #print "No size_list for $tag_l3\n"; + } + else{ + my $median = median( @{$all_info->{'level3'}{$tag_l3}{'size_list'}} ); + push @resu, ["median $tag_l3 length (bp)", $median]; + } + } + + #print level3 - multifeature cases + foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ + if( exists_keys ($all_info, ('level3', $tag_l3, 'exon') ) ) { + my $median = median( @{$all_info->{'level3'}{$tag_l3}{'size_list'}} ); + push @resu, ["median $tag_l3 piece length (bp)", $median]; + } + } + + #print introns + foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ + if(exists_keys($all_info, ('level3',$tag_l3,'intron'))){ + my $median = median( @{$all_info->{'level3'}{$tag_l3}{'intron'}{'size_list'}} ); + push @resu, ["median intron in $tag_l3 length (bp)", $median]; + } + } + + return \@resu; +} + +############# +# Give info about percentile lenght of features by type +sub _info_precentile_length { + my ($all_info, $percentile_value) = @_ ; + if( ! defined($percentile_value) ) { $percentile_value = 90;} + my @resu; + + #print level1 + foreach my $tag_l1 (sort keys %{$all_info->{'level1'}}){ + my $percentile = percentile( \@{$all_info->{'level1'}{$tag_l1}{'size_list'}}, $percentile_value ); + push @resu, ["$percentile_value percentile $tag_l1 length (bp)", $percentile]; + } + + #print level2 + foreach my $tag_l2 (sort keys %{$all_info->{'level2'}}){ + my $size_feat = $all_info->{'level2'}{$tag_l2}{'size_list'}; + + if( $size_feat !=0 ){ + my $percentile = percentile( \@{$all_info->{'level2'}{$tag_l2}{'size_list'}}, $percentile_value ); + push @resu, ["$percentile_value percentile $tag_l2 length (bp)", $percentile]; + } + else{ warn "Problem in the calcul of level2 - $tag_l2 - size_list"; } + } + + #print level3 + foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ + if( $all_info->{'level3'}{$tag_l3}{'size_list'} == 0) { + #print "No size_list for $tag_l3\n"; + } + else{ + my $percentile = percentile( \@{$all_info->{'level3'}{$tag_l3}{'size_list'}}, $percentile_value ); + push @resu, ["$percentile_value percentile $tag_l3 length (bp)", $percentile]; + } + } + + #print level3 - multifeature cases + foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ + if( exists_keys ($all_info, ('level3', $tag_l3, 'exon') ) ) { + my $percentile = percentile( \@{$all_info->{'level3'}{$tag_l3}{'size_list'}}, $percentile_value ); + push @resu, ["$percentile_value percentile $tag_l3 piece length (bp)", $percentile]; + } + } + + #print introns + foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ + if(exists_keys($all_info, ('level3',$tag_l3,'intron'))){ + my $percentile = percentile( \@{$all_info->{'level3'}{$tag_l3}{'intron'}{'size_list'}}, $percentile_value ); + push @resu, ["$percentile_value percentile intron in $tag_l3 length (bp)", $percentile]; + } + } + + return \@resu; +} + ############# # Give info about the features' coverage (by types) within/among the genome sub _info_coverage { @@ -1051,26 +1188,26 @@ sub _info_coverage { #print level1 foreach my $tag_l1 (sort keys %{$all_info->{'level1'}}){ my $perc= ($all_info->{'level1'}{$tag_l1}{'size_feat'}*100)/$genomeSize; - push @resu, [ "% of genome covered by $tag_l1", $perc, "%-45s%.1f%s"]; + push @resu, [ "% of genome covered by $tag_l1", $perc, "round"]; } #print level2 foreach my $tag_l2 (sort keys %{$all_info->{'level2'}}){ my $perc= ($all_info->{'level2'}{$tag_l2}{'size_feat'}*100)/$genomeSize; - push @resu, [ "% of genome covered by $tag_l2", $perc, "%-45s%.1f%s"]; + push @resu, [ "% of genome covered by $tag_l2", $perc, "round"]; } #print level3 foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ my $perc= ($all_info->{'level3'}{$tag_l3}{'size_feat'}*100)/$genomeSize; - push @resu, [ "% of genome covered by $tag_l3", $perc, "%-45s%.1f%s"]; + push @resu, [ "% of genome covered by $tag_l3", $perc, "round"]; } #print level3 foreach my $tag_l3 (sort keys %{$all_info->{'level3'}}){ if(exists_keys($all_info, ('level3',$tag_l3,'intron'))){ my $perc= ($all_info->{'level3'}{$tag_l3}{'intron'}{'size_feat'}*100)/$genomeSize; - push @resu, [ "% of genome covered by intron from $tag_l3", $perc, "%-45s%.1f%s"]; + push @resu, [ "% of genome covered by intron from $tag_l3", $perc, "round"]; } } @@ -1136,4 +1273,39 @@ sub _detect_overlap_features{ return $resume_case; } +# compute percentile of a list +sub percentile { + my ($list_values, $percentile)=@_; + + if( ! defined($percentile) ) {warn "percentile value missing\n";} + + my $value_to_use = (100-$percentile)*0.01; + my $top_percent = int(@$list_values * $value_to_use); + + if ($top_percent >= 1) { + my @values = sort {$a <=> $b} @$list_values; + pop @values for (1 .. $top_percent); + my $result = pop @values; + return $result; + } + else { + return "na"; + } +} + +# compute median of a list +sub median +{ + my @vals = sort {$a <=> $b} @_; + my $len = @vals; + if($len%2) #odd? + { + return $vals[int($len/2)]; + } + else #even + { + return ($vals[int($len/2)-1] + $vals[int($len/2)])/2; + } +} + 1; diff --git a/t/scripts_output/out/agat_sp_manage_introns_1.txt b/t/scripts_output/out/agat_sp_manage_introns_1.txt index 83c2a9dd..40660068 100644 --- a/t/scripts_output/out/agat_sp_manage_introns_1.txt +++ b/t/scripts_output/out/agat_sp_manage_introns_1.txt @@ -1,120 +1,156 @@ -usage: bin/agat_sp_manage_introns.pl --gff t/scripts_output/in/1.gff -o tmp.gff +usage: bin/agat_sp_manage_introns.pl --gff t/scripts_output/in/1.gff -o resuTes -------------------------------------------------------------------------------- ---------------------------------- chromosome ---------------------------------- -Number of chromosome 1 -Number chromosome overlapping 0 -Total chromosome length (bp) 43270923 -mean chromosome length (bp) 43270923 -Longest chromosome (bp) 43270923 -Shortest chromosome (bp) 43270923 +Number of chromosome 1 +Number chromosome overlapping 0 +Total chromosome length (bp) 43270923 +mean chromosome length (bp) 43270923 +median chromosome length (bp) 43270923 +90 percentile chromosome length (bp) na +Longest chromosome (bp) 43270923 +Shortest chromosome (bp) 43270923 -------------------------------- repeat_region --------------------------------- -Number of repeat_region 2 -Number repeat_region overlapping 0 -Total repeat_region length (bp) 202 -mean repeat_region length (bp) 101 -Longest repeat_region (bp) 101 -Shortest repeat_region (bp) 101 +Number of repeat_region 2 +Number repeat_region overlapping 0 +Total repeat_region length (bp) 202 +mean repeat_region length (bp) 101 +median repeat_region length (bp) 101 +90 percentile repeat_region length (bp) na +Longest repeat_region (bp) 101 +Shortest repeat_region (bp) 101 ------------------------------------- mrna ------------------------------------- -Number of gene 52 -Number of mrna 65 -Number of mrnas with utr both sides 59 -Number of mrnas with at least one utr 62 -Number of cds 64 -Number of exon 319 -Number of five_prime_utr 60 -Number of three_prime_utr 61 -Number of exon in cds 290 -Number of exon in five_prime_utr 79 -Number of exon in three_prime_utr 70 -Number of intron in cds 226 -Number of intron in exon 254 -Number of intron in five_prime_utr 19 -Number of intron in three_prime_utr 9 -Number gene overlapping 9 -Number of single exon gene 8 -Number of single exon mrna 10 -mean mrnas per gene 1.2 -mean cdss per mrna 1.0 -mean exons per mrna 4.9 -mean five_prime_utrs per mrna 0.9 -mean three_prime_utrs per mrna 0.9 -mean exons per cds 4.5 -mean exons per five_prime_utr 1.3 -mean exons per three_prime_utr 1.1 -mean introns in cdss per mrna 3.5 -mean introns in exons per mrna 3.9 -mean introns in five_prime_utrs per mrna 0.3 -mean introns in three_prime_utrs per mrna 0.1 -Total gene length (bp) 158829 -Total mrna length (bp) 197986 -Total cds length (bp) 69687 -Total exon length (bp) 108170 -Total five_prime_utr length (bp) 11773 -Total three_prime_utr length (bp) 25596 -Total intron length per cds (bp) 77787 -Total intron length per exon (bp) 89816 -Total intron length per five_prime_utr (bp) 11235 -Total intron length per three_prime_utr (bp) 794 -mean gene length (bp) 3054 -mean mrna length (bp) 3045 -mean cds length (bp) 1088 -mean exon length (bp) 339 -mean five_prime_utr length (bp) 196 -mean three_prime_utr length (bp) 419 -mean cds piece length (bp) 240 -mean five_prime_utr piece length (bp) 149 -mean three_prime_utr piece length (bp) 365 -mean intron in cds length (bp) 344 -mean intron in exon length (bp) 353 -mean intron in five_prime_utr length (bp) 591 -mean intron in three_prime_utr length (bp) 88 -Longest gene (bp) 8045 -Longest mrna (bp) 8045 -Longest cds (bp) 2937 -Longest exon (bp) 2854 -Longest five_prime_utr (bp) 2197 -Longest three_prime_utr (bp) 2780 -Longest cds piece (bp) 2433 -Longest five_prime_utr piece (bp) 2027 -Longest three_prime_utr piece (bp) 2780 -Longest intron into cds part (bp) 3534 -Longest intron into exon part (bp) 4350 -Longest intron into five_prime_utr part (bp) 4350 -Longest intron into three_prime_utr part (bp)127 -Shortest gene (bp) 346 -Shortest mrna (bp) 346 -Shortest cds piece (bp) 2 -Shortest five_prime_utr piece (bp) 1 -Shortest three_prime_utr piece (bp) 16 -Shortest intron into cds part (bp) 69 -Shortest intron into exon part (bp) 39 -Shortest intron into five_prime_utr part (bp)76 -Shortest intron into three_prime_utr part (bp)39 +Number of gene 52 +Number of mrna 65 +Number of mrnas with utr both sides 59 +Number of mrnas with at least one utr 62 +Number of cds 64 +Number of exon 319 +Number of five_prime_utr 60 +Number of three_prime_utr 61 +Number of exon in cds 290 +Number of exon in five_prime_utr 79 +Number of exon in three_prime_utr 70 +Number of intron in cds 226 +Number of intron in exon 254 +Number of intron in five_prime_utr 19 +Number of intron in three_prime_utr 9 +Number gene overlapping 9 +Number of single exon gene 8 +Number of single exon mrna 10 +mean mrnas per gene 1.2 +mean cdss per mrna 1.0 +mean exons per mrna 4.9 +mean five_prime_utrs per mrna 0.9 +mean three_prime_utrs per mrna 0.9 +mean exons per cds 4.5 +mean exons per five_prime_utr 1.3 +mean exons per three_prime_utr 1.1 +mean introns in cdss per mrna 3.5 +mean introns in exons per mrna 3.9 +mean introns in five_prime_utrs per mrna 0.3 +mean introns in three_prime_utrs per mrna 0.1 +Total gene length (bp) 158829 +Total mrna length (bp) 197986 +Total cds length (bp) 69687 +Total exon length (bp) 108170 +Total five_prime_utr length (bp) 11773 +Total three_prime_utr length (bp) 25596 +Total intron length per cds (bp) 77787 +Total intron length per exon (bp) 89816 +Total intron length per five_prime_utr (bp) 11235 +Total intron length per three_prime_utr (bp) 794 +mean gene length (bp) 3054 +mean mrna length (bp) 3046 +mean cds length (bp) 1089 +mean exon length (bp) 339 +mean five_prime_utr length (bp) 196 +mean three_prime_utr length (bp) 420 +mean cds piece length (bp) 240 +mean five_prime_utr piece length (bp) 149 +mean three_prime_utr piece length (bp) 366 +mean intron in cds length (bp) 344 +mean intron in exon length (bp) 354 +mean intron in five_prime_utr length (bp) 591 +mean intron in three_prime_utr length (bp) 88 +median gene length (bp) 2540 +median mrna length (bp) 2484 +median cds length (bp) 128 +median exon length (bp) 165 +median five_prime_utr length (bp) 78 +median three_prime_utr length (bp) 245 +median cds piece length (bp) 128 +median five_prime_utr piece length (bp) 78 +median three_prime_utr piece length (bp) 245 +median intron in cds length (bp) 133 +median intron in exon length (bp) 129 +median intron in five_prime_utr length (bp) 123 +median intron in three_prime_utr length (bp) 79 +90 percentile gene length (bp) 5514 +90 percentile mrna length (bp) 5514 +90 percentile cds length (bp) 521 +90 percentile exon length (bp) 818 +90 percentile five_prime_utr length (bp) 379 +90 percentile three_prime_utr length (bp) 691 +90 percentile cds piece length (bp) 521 +90 percentile five_prime_utr piece length (bp) 379 +90 percentile three_prime_utr piece length (bp) 691 +90 percentile intron in cds length (bp) 791 +90 percentile intron in exon length (bp) 770 +90 percentile intron in five_prime_utr length (bp) 3593 +90 percentile intron in three_prime_utr length (bp) na +Longest gene (bp) 8045 +Longest mrna (bp) 8045 +Longest cds (bp) 2937 +Longest exon (bp) 2854 +Longest five_prime_utr (bp) 2197 +Longest three_prime_utr (bp) 2780 +Longest cds piece (bp) 2433 +Longest five_prime_utr piece (bp) 2027 +Longest three_prime_utr piece (bp) 2780 +Longest intron into cds part (bp) 3534 +Longest intron into exon part (bp) 4350 +Longest intron into five_prime_utr part (bp) 4350 +Longest intron into three_prime_utr part (bp) 127 +Shortest gene (bp) 346 +Shortest mrna (bp) 346 +Shortest cds piece (bp) 2 +Shortest five_prime_utr piece (bp) 1 +Shortest three_prime_utr piece (bp) 16 +Shortest intron into cds part (bp) 69 +Shortest intron into exon part (bp) 39 +Shortest intron into five_prime_utr part (bp) 76 +Shortest intron into three_prime_utr part (bp) 39 ------------------------------------- trna ------------------------------------- -Number of ncrna_gene 1 -Number of trna 1 -Number of exon 1 -Number ncrna_gene overlapping 0 -Number of single exon ncrna_gene 1 -Number of single exon trna 1 -mean trnas per ncrna_gene 1.0 -mean exons per trna 1.0 -Total ncrna_gene length (bp) 81 -Total trna length (bp) 81 -Total exon length (bp) 81 -mean ncrna_gene length (bp) 81 -mean trna length (bp) 81 -mean exon length (bp) 81 -Longest ncrna_gene (bp) 81 -Longest trna (bp) 81 -Longest exon (bp) 81 -Shortest ncrna_gene (bp) 81 -Shortest trna (bp) 81 +Number of ncrna_gene 1 +Number of trna 1 +Number of exon 1 +Number ncrna_gene overlapping 0 +Number of single exon ncrna_gene 1 +Number of single exon trna 1 +mean trnas per ncrna_gene 1.0 +mean exons per trna 1.0 +Total ncrna_gene length (bp) 81 +Total trna length (bp) 81 +Total exon length (bp) 81 +mean ncrna_gene length (bp) 81 +mean trna length (bp) 81 +mean exon length (bp) 81 +median ncrna_gene length (bp) 81 +median trna length (bp) 81 +median exon length (bp) 81 +90 percentile ncrna_gene length (bp) na +90 percentile trna length (bp) na +90 percentile exon length (bp) na +Longest ncrna_gene (bp) 81 +Longest trna (bp) 81 +Longest exon (bp) 81 +Shortest ncrna_gene (bp) 81 +Shortest trna (bp) 81 Introns in feature cds: Removing 1 percent of the highest values (2 values) gives you 3196 bp as the longest intron in cds. Introns in feature exon: Removing 1 percent of the highest values (2 values) gives you 3535 bp as the longest intron in exon. diff --git a/t/scripts_output/out/agat_sp_statistics_1.txt b/t/scripts_output/out/agat_sp_statistics_1.txt index acaf477f..432461a6 100644 --- a/t/scripts_output/out/agat_sp_statistics_1.txt +++ b/t/scripts_output/out/agat_sp_statistics_1.txt @@ -1,194 +1,256 @@ -------------------------------------------------------------------------------- ---------------------------------- chromosome ---------------------------------- -Number of chromosome 1 -Number chromosome overlapping 0 -Total chromosome length (bp) 43270923 -mean chromosome length (bp) 43270923 -Longest chromosome (bp) 43270923 -Shortest chromosome (bp) 43270923 +Number of chromosome 1 +Number chromosome overlapping 0 +Total chromosome length (bp) 43270923 +mean chromosome length (bp) 43270923 +median chromosome length (bp) 43270923 +90 percentile chromosome length (bp) na +Longest chromosome (bp) 43270923 +Shortest chromosome (bp) 43270923 -------------------------------- repeat_region --------------------------------- -Number of repeat_region 2 -Number repeat_region overlapping 0 -Total repeat_region length (bp) 202 -mean repeat_region length (bp) 101 -Longest repeat_region (bp) 101 -Shortest repeat_region (bp) 101 +Number of repeat_region 2 +Number repeat_region overlapping 0 +Total repeat_region length (bp) 202 +mean repeat_region length (bp) 101 +median repeat_region length (bp) 101 +90 percentile repeat_region length (bp) na +Longest repeat_region (bp) 101 +Shortest repeat_region (bp) 101 ------------------------------------- mrna ------------------------------------- -Number of gene 52 -Number of mrna 65 -Number of mrnas with utr both sides 59 -Number of mrnas with at least one utr 62 -Number of cds 64 -Number of exon 319 -Number of five_prime_utr 60 -Number of three_prime_utr 61 -Number of exon in cds 290 -Number of exon in five_prime_utr 79 -Number of exon in three_prime_utr 70 -Number of intron in cds 226 -Number of intron in exon 254 -Number of intron in five_prime_utr 19 -Number of intron in three_prime_utr 9 -Number gene overlapping 9 -Number of single exon gene 8 -Number of single exon mrna 10 -mean mrnas per gene 1.2 -mean cdss per mrna 1.0 -mean exons per mrna 4.9 -mean five_prime_utrs per mrna 0.9 -mean three_prime_utrs per mrna 0.9 -mean exons per cds 4.5 -mean exons per five_prime_utr 1.3 -mean exons per three_prime_utr 1.1 -mean introns in cdss per mrna 3.5 -mean introns in exons per mrna 3.9 -mean introns in five_prime_utrs per mrna 0.3 -mean introns in three_prime_utrs per mrna 0.1 -Total gene length (bp) 158829 -Total mrna length (bp) 197986 -Total cds length (bp) 69687 -Total exon length (bp) 108170 -Total five_prime_utr length (bp) 11773 -Total three_prime_utr length (bp) 25596 -Total intron length per cds (bp) 77787 -Total intron length per exon (bp) 89816 -Total intron length per five_prime_utr (bp) 11235 -Total intron length per three_prime_utr (bp) 794 -mean gene length (bp) 3054 -mean mrna length (bp) 3045 -mean cds length (bp) 1088 -mean exon length (bp) 339 -mean five_prime_utr length (bp) 196 -mean three_prime_utr length (bp) 419 -mean cds piece length (bp) 240 -mean five_prime_utr piece length (bp) 149 -mean three_prime_utr piece length (bp) 365 -mean intron in cds length (bp) 344 -mean intron in exon length (bp) 353 -mean intron in five_prime_utr length (bp) 591 -mean intron in three_prime_utr length (bp) 88 -Longest gene (bp) 8045 -Longest mrna (bp) 8045 -Longest cds (bp) 2937 -Longest exon (bp) 2854 -Longest five_prime_utr (bp) 2197 -Longest three_prime_utr (bp) 2780 -Longest cds piece (bp) 2433 -Longest five_prime_utr piece (bp) 2027 -Longest three_prime_utr piece (bp) 2780 -Longest intron into cds part (bp) 3534 -Longest intron into exon part (bp) 4350 -Longest intron into five_prime_utr part (bp) 4350 -Longest intron into three_prime_utr part (bp)127 -Shortest gene (bp) 346 -Shortest mrna (bp) 346 -Shortest cds piece (bp) 2 -Shortest five_prime_utr piece (bp) 1 -Shortest three_prime_utr piece (bp) 16 -Shortest intron into cds part (bp) 69 -Shortest intron into exon part (bp) 39 -Shortest intron into five_prime_utr part (bp)76 -Shortest intron into three_prime_utr part (bp)39 +Number of gene 52 +Number of mrna 65 +Number of mrnas with utr both sides 59 +Number of mrnas with at least one utr 62 +Number of cds 64 +Number of exon 319 +Number of five_prime_utr 60 +Number of three_prime_utr 61 +Number of exon in cds 290 +Number of exon in five_prime_utr 79 +Number of exon in three_prime_utr 70 +Number of intron in cds 226 +Number of intron in exon 254 +Number of intron in five_prime_utr 19 +Number of intron in three_prime_utr 9 +Number gene overlapping 9 +Number of single exon gene 8 +Number of single exon mrna 10 +mean mrnas per gene 1.2 +mean cdss per mrna 1.0 +mean exons per mrna 4.9 +mean five_prime_utrs per mrna 0.9 +mean three_prime_utrs per mrna 0.9 +mean exons per cds 4.5 +mean exons per five_prime_utr 1.3 +mean exons per three_prime_utr 1.1 +mean introns in cdss per mrna 3.5 +mean introns in exons per mrna 3.9 +mean introns in five_prime_utrs per mrna 0.3 +mean introns in three_prime_utrs per mrna 0.1 +Total gene length (bp) 158829 +Total mrna length (bp) 197986 +Total cds length (bp) 69687 +Total exon length (bp) 108170 +Total five_prime_utr length (bp) 11773 +Total three_prime_utr length (bp) 25596 +Total intron length per cds (bp) 77787 +Total intron length per exon (bp) 89816 +Total intron length per five_prime_utr (bp) 11235 +Total intron length per three_prime_utr (bp) 794 +mean gene length (bp) 3054 +mean mrna length (bp) 3046 +mean cds length (bp) 1089 +mean exon length (bp) 339 +mean five_prime_utr length (bp) 196 +mean three_prime_utr length (bp) 420 +mean cds piece length (bp) 240 +mean five_prime_utr piece length (bp) 149 +mean three_prime_utr piece length (bp) 366 +mean intron in cds length (bp) 344 +mean intron in exon length (bp) 354 +mean intron in five_prime_utr length (bp) 591 +mean intron in three_prime_utr length (bp) 88 +median gene length (bp) 2540 +median mrna length (bp) 2484 +median cds length (bp) 128 +median exon length (bp) 165 +median five_prime_utr length (bp) 78 +median three_prime_utr length (bp) 245 +median cds piece length (bp) 128 +median five_prime_utr piece length (bp) 78 +median three_prime_utr piece length (bp) 245 +median intron in cds length (bp) 133 +median intron in exon length (bp) 129 +median intron in five_prime_utr length (bp) 123 +median intron in three_prime_utr length (bp) 79 +90 percentile gene length (bp) 5514 +90 percentile mrna length (bp) 5514 +90 percentile cds length (bp) 521 +90 percentile exon length (bp) 818 +90 percentile five_prime_utr length (bp) 379 +90 percentile three_prime_utr length (bp) 691 +90 percentile cds piece length (bp) 521 +90 percentile five_prime_utr piece length (bp) 379 +90 percentile three_prime_utr piece length (bp) 691 +90 percentile intron in cds length (bp) 791 +90 percentile intron in exon length (bp) 770 +90 percentile intron in five_prime_utr length (bp) 3593 +90 percentile intron in three_prime_utr length (bp) na +Longest gene (bp) 8045 +Longest mrna (bp) 8045 +Longest cds (bp) 2937 +Longest exon (bp) 2854 +Longest five_prime_utr (bp) 2197 +Longest three_prime_utr (bp) 2780 +Longest cds piece (bp) 2433 +Longest five_prime_utr piece (bp) 2027 +Longest three_prime_utr piece (bp) 2780 +Longest intron into cds part (bp) 3534 +Longest intron into exon part (bp) 4350 +Longest intron into five_prime_utr part (bp) 4350 +Longest intron into three_prime_utr part (bp) 127 +Shortest gene (bp) 346 +Shortest mrna (bp) 346 +Shortest cds piece (bp) 2 +Shortest five_prime_utr piece (bp) 1 +Shortest three_prime_utr piece (bp) 16 +Shortest intron into cds part (bp) 69 +Shortest intron into exon part (bp) 39 +Shortest intron into five_prime_utr part (bp) 76 +Shortest intron into three_prime_utr part (bp) 39 mrna have isoforms! Here are the statistics without isoforms shortest isoforms excluded): -Number of gene 52 -Number of mrna 52 -Number of mrnas with utr both sides 46 -Number of mrnas with at least one utr 49 -Number of cds 51 -Number of exon 260 -Number of five_prime_utr 47 -Number of three_prime_utr 48 -Number of exon in cds 232 -Number of exon in five_prime_utr 65 -Number of exon in three_prime_utr 57 -Number of intron in cds 181 -Number of intron in exon 208 -Number of intron in five_prime_utr 18 -Number of intron in three_prime_utr 9 -Number gene overlapping 8 -Number of single exon gene 8 -Number of single exon mrna 8 -mean mrnas per gene 1.0 -mean cdss per mrna 1.0 -mean exons per mrna 5.0 -mean five_prime_utrs per mrna 0.9 -mean three_prime_utrs per mrna 0.9 -mean exons per cds 4.5 -mean exons per five_prime_utr 1.4 -mean exons per three_prime_utr 1.2 -mean introns in cdss per mrna 3.5 -mean introns in exons per mrna 4.0 -mean introns in five_prime_utrs per mrna 0.3 -mean introns in three_prime_utrs per mrna 0.2 -Total gene length (bp) 158829 -Total mrna length (bp) 155823 -Total cds length (bp) 53754 -Total exon length (bp) 83174 -Total five_prime_utr length (bp) 10367 -Total three_prime_utr length (bp) 17939 -Total intron length per cds (bp) 60743 -Total intron length per exon (bp) 72649 -Total intron length per five_prime_utr (bp) 11112 -Total intron length per three_prime_utr (bp) 794 -mean gene length (bp) 3054 -mean mrna length (bp) 2996 -mean cds length (bp) 1054 -mean exon length (bp) 319 -mean five_prime_utr length (bp) 220 -mean three_prime_utr length (bp) 373 -mean cds piece length (bp) 231 -mean five_prime_utr piece length (bp) 159 -mean three_prime_utr piece length (bp) 314 -mean intron in cds length (bp) 335 -mean intron in exon length (bp) 349 -mean intron in five_prime_utr length (bp) 617 -mean intron in three_prime_utr length (bp) 88 -Longest gene (bp) 8045 -Longest mrna (bp) 7833 -Longest cds (bp) 2937 -Longest exon (bp) 2854 -Longest five_prime_utr (bp) 2197 -Longest three_prime_utr (bp) 2780 -Longest cds piece (bp) 2433 -Longest five_prime_utr piece (bp) 2027 -Longest three_prime_utr piece (bp) 2780 -Longest intron into cds part (bp) 3534 -Longest intron into exon part (bp) 4350 -Longest intron into five_prime_utr part (bp) 4350 -Longest intron into three_prime_utr part (bp)127 -Shortest gene (bp) 346 -Shortest mrna (bp) 346 -Shortest cds piece (bp) 2 -Shortest five_prime_utr piece (bp) 1 -Shortest three_prime_utr piece (bp) 16 -Shortest intron into cds part (bp) 69 -Shortest intron into exon part (bp) 39 -Shortest intron into five_prime_utr part (bp)76 -Shortest intron into three_prime_utr part (bp)39 +Number of gene 52 +Number of mrna 52 +Number of mrnas with utr both sides 46 +Number of mrnas with at least one utr 49 +Number of cds 51 +Number of exon 260 +Number of five_prime_utr 47 +Number of three_prime_utr 48 +Number of exon in cds 232 +Number of exon in five_prime_utr 65 +Number of exon in three_prime_utr 57 +Number of intron in cds 181 +Number of intron in exon 208 +Number of intron in five_prime_utr 18 +Number of intron in three_prime_utr 9 +Number gene overlapping 8 +Number of single exon gene 8 +Number of single exon mrna 8 +mean mrnas per gene 1.0 +mean cdss per mrna 1.0 +mean exons per mrna 5.0 +mean five_prime_utrs per mrna 0.9 +mean three_prime_utrs per mrna 0.9 +mean exons per cds 4.5 +mean exons per five_prime_utr 1.4 +mean exons per three_prime_utr 1.2 +mean introns in cdss per mrna 3.5 +mean introns in exons per mrna 4.0 +mean introns in five_prime_utrs per mrna 0.3 +mean introns in three_prime_utrs per mrna 0.2 +Total gene length (bp) 158829 +Total mrna length (bp) 155823 +Total cds length (bp) 53754 +Total exon length (bp) 83174 +Total five_prime_utr length (bp) 10367 +Total three_prime_utr length (bp) 17939 +Total intron length per cds (bp) 60743 +Total intron length per exon (bp) 72649 +Total intron length per five_prime_utr (bp) 11112 +Total intron length per three_prime_utr (bp) 794 +mean gene length (bp) 3054 +mean mrna length (bp) 2997 +mean cds length (bp) 1054 +mean exon length (bp) 320 +mean five_prime_utr length (bp) 221 +mean three_prime_utr length (bp) 374 +mean cds piece length (bp) 232 +mean five_prime_utr piece length (bp) 159 +mean three_prime_utr piece length (bp) 315 +mean intron in cds length (bp) 336 +mean intron in exon length (bp) 349 +mean intron in five_prime_utr length (bp) 617 +mean intron in three_prime_utr length (bp) 88 +median gene length (bp) 2540 +median mrna length (bp) 2468 +median cds length (bp) 125 +median exon length (bp) 160 +median five_prime_utr length (bp) 87 +median three_prime_utr length (bp) 235 +median cds piece length (bp) 125 +median five_prime_utr piece length (bp) 87 +median three_prime_utr piece length (bp) 235 +median intron in cds length (bp) 133 +median intron in exon length (bp) 127 +median intron in five_prime_utr length (bp) 123 +median intron in three_prime_utr length (bp) 79 +90 percentile gene length (bp) 5514 +90 percentile mrna length (bp) 5514 +90 percentile cds length (bp) 514 +90 percentile exon length (bp) 701 +90 percentile five_prime_utr length (bp) 371 +90 percentile three_prime_utr length (bp) 646 +90 percentile cds piece length (bp) 514 +90 percentile five_prime_utr piece length (bp) 371 +90 percentile three_prime_utr piece length (bp) 646 +90 percentile intron in cds length (bp) 770 +90 percentile intron in exon length (bp) 770 +90 percentile intron in five_prime_utr length (bp) 3593 +90 percentile intron in three_prime_utr length (bp) na +Longest gene (bp) 8045 +Longest mrna (bp) 7833 +Longest cds (bp) 2937 +Longest exon (bp) 2854 +Longest five_prime_utr (bp) 2197 +Longest three_prime_utr (bp) 2780 +Longest cds piece (bp) 2433 +Longest five_prime_utr piece (bp) 2027 +Longest three_prime_utr piece (bp) 2780 +Longest intron into cds part (bp) 3534 +Longest intron into exon part (bp) 4350 +Longest intron into five_prime_utr part (bp) 4350 +Longest intron into three_prime_utr part (bp) 127 +Shortest gene (bp) 346 +Shortest mrna (bp) 346 +Shortest cds piece (bp) 2 +Shortest five_prime_utr piece (bp) 1 +Shortest three_prime_utr piece (bp) 16 +Shortest intron into cds part (bp) 69 +Shortest intron into exon part (bp) 39 +Shortest intron into five_prime_utr part (bp) 76 +Shortest intron into three_prime_utr part (bp) 39 ------------------------------------- trna ------------------------------------- -Number of ncrna_gene 1 -Number of trna 1 -Number of exon 1 -Number ncrna_gene overlapping 0 -Number of single exon ncrna_gene 1 -Number of single exon trna 1 -mean trnas per ncrna_gene 1.0 -mean exons per trna 1.0 -Total ncrna_gene length (bp) 81 -Total trna length (bp) 81 -Total exon length (bp) 81 -mean ncrna_gene length (bp) 81 -mean trna length (bp) 81 -mean exon length (bp) 81 -Longest ncrna_gene (bp) 81 -Longest trna (bp) 81 -Longest exon (bp) 81 -Shortest ncrna_gene (bp) 81 -Shortest trna (bp) 81 +Number of ncrna_gene 1 +Number of trna 1 +Number of exon 1 +Number ncrna_gene overlapping 0 +Number of single exon ncrna_gene 1 +Number of single exon trna 1 +mean trnas per ncrna_gene 1.0 +mean exons per trna 1.0 +Total ncrna_gene length (bp) 81 +Total trna length (bp) 81 +Total exon length (bp) 81 +mean ncrna_gene length (bp) 81 +mean trna length (bp) 81 +mean exon length (bp) 81 +median ncrna_gene length (bp) 81 +median trna length (bp) 81 +median exon length (bp) 81 +90 percentile ncrna_gene length (bp) na +90 percentile trna length (bp) na +90 percentile exon length (bp) na +Longest ncrna_gene (bp) 81 +Longest trna (bp) 81 +Longest exon (bp) 81 +Shortest ncrna_gene (bp) 81 +Shortest trna (bp) 81