User Tools

Site Tools


n50.pl

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

n50.pl [2019/11/12 15:16] (current)
hyjeong created
Line 1: Line 1:
 +  #!/usr/bin/perl 
 +  # 
 +  # Source:  
 +  #    http://genomics-array.blogspot.com/2011/02/calculating-n50-of-contig-assembly-file.html 
 +  #    Modified by Haeyoung Jeong 
 +  ## Read Fasta File and compute length ### 
 +  # 
 +  my $length; 
 +  my $totalLength;  
 +  my @arr; 
 +  my $num; 
 +   
 +   
 +  while(<>){ 
 +     chomp;  
 +     if(/^>([^\s]+)/){ 
 +         print " $length\n" unless $num == 0; 
 +         $num++; 
 +         print "SEQ: $1 "; 
 +         push (@arr, $length); 
 +         $totalLength += $length;  
 +         $length=0; 
 +    } else { 
 +    s/\s//g; 
 +    s/\t//g; 
 +    $length += length($_); 
 +    } 
 +  } 
 +  push (@arr, $length); # for the last contig 
 +  print " $length\n"; 
 +  $totalLength += $length; 
 +   
 +  close(FH); 
 +   
 +  my @sort = sort {$b <=> $a} @arr; 
 +  my $n50; 
 +  print "Total $num contigs ($totalLength)\n"; 
 +  foreach my $val(@sort){ 
 +       $n50+=$val; 
 +        if($n50 >= $totalLength/2){ 
 +           print "N50 contig length is $n50 and N50 value is: $val\n"; 
 +           last; 
 +       } 
 +  } 
 +  print "Average contig length is ", $totalLength / $num, "\n"; 
 +  print "Max. contig length is ", $sort[0], "\n";
n50.pl.txt · Last modified: 2019/11/12 15:16 by hyjeong