Proch::N50 - a small module to calculate N50 (total size, and total number of sequences) for a FASTA or FASTQ file. It's easy to install, with minimal dependencies.
version 1.4.10
use Proch::N50 qw(getStats getN50); my $filepath = '/path/to/assembly.fasta'; # Get N50 only: getN50(file) will return an integer print "N50 only:\t", getN50($filepath), "\n"; # Full stats my $seq_stats = getStats($filepath); print Data::Dumper->Dump( [ $seq_stats ], [ qw(*FASTA_stats) ] ); # Will print: # %FASTA_stats = ( # 'N50' => 65, # 'N75' => 50, # 'N90' => 4, # 'min' => 4, # 'max' => 65, # 'dirname' => 'data', # 'auN' => 45.02112, # 'size' => 130, # 'seqs' => 6, # 'filename' => 'test.fa', # 'status' => 1 # ); # Get also a JSON object my $seq_stats_with_JSON = getStats($filepath, 'JSON'); print $seq_stats_with_JSON->{json}, "\n"; # Will print: # { # "status" : 1, # "seqs" : 6, # <...> # "filename" : "small_test.fa", # "N50" : 65, # } # Directly ask for the JSON object only: my $json = jsonStats($filepath); print $json;
version 1.4.2
This function returns the N50 for a FASTA/FASTQ file given, or 0 in case of error(s).
Calculates N50 and basic stats for <filepath>. Returns also JSON if invoked with a second parameter. This function return a hash reporting:
total number of bp in the files
the actual N50, N75, and N90 metrices
the area under the Nx curve, as described in https://lh3.github.io/2020/04/08/a-new-metric-on-assembly-contiguity. Returs with 5 decimal digits.
Minimum length observed in FASTA/Q file
Maximum length observed in FASTA/Q file
total number of sequences in the files
file basename of the input file
name of the directory containing the input file (as received)
name of the directory containing the input file (resolved to its absolute path)
(pretty printed) JSON string of the object (only if JSON is installed)
Returns the JSON string with basic stats (same as $result->{json} from getStats(File, JSON)). Requires JSON::PP installed.
This is an internal helper subroutine that perform the actual N50 calculation, hence its addition to the documentation. Expects the reference to an hash of sizes $size{SIZE} = COUNT and the total sum of sizes obtained parsing the sequences file. Returns N50, min and max lengths.
$size{SIZE} = COUNT
(optional) when using --format JSON
--format JSON
(optional) when using --format screen. This might be substituted by a different module in the future.
--format screen
This module and the n50 program have limited support. SeqFu (https://telatin.github.io/seqfu2) is a compiled suite of utilities that includes a seqfu stats module, a faster replacement for the n50 program.
n50
If you are interested in contributing to the development of this module, or in reporting bugs, please refer to repository https://github.com/telatin/proch-n50/issues.
Andrea Telatin <andrea@telatin.com>
This software is Copyright (c) 2018-2022 by Andrea Telatin.
This is free software, licensed under:
The MIT (X11) License
To install Proch::N50, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Proch::N50
CPAN shell
perl -MCPAN -e shell install Proch::N50
For more information on module installation, please visit the detailed CPAN module installation guide.