-
-
22 Jun 2022 09:50:52 UTC
- Distribution: Proch-N50
- Module version: v1.4.10
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues (0)
- Testers (137 / 0 / 12)
- Kwalitee
Bus factor: 1- 69.42% Coverage
- License: mit
- Perl: v5.12.0
- Activity
24 month- Tools
- Download (81.93KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
NAME
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
version 1.4.10
SYNOPSIS
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;
NAME
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
version 1.4.2
METHODS
getN50(filepath)
This function returns the N50 for a FASTA/FASTQ file given, or 0 in case of error(s).
getStats(filepath, alsoJSON)
Calculates N50 and basic stats for <filepath>. Returns also JSON if invoked with a second parameter. This function return a hash reporting:
- size (int)
-
total number of bp in the files
- N50, N75, N90 (int)
-
the actual N50, N75, and N90 metrices
- auN (float)
-
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.
- min (int)
-
Minimum length observed in FASTA/Q file
- max (int)
-
Maximum length observed in FASTA/Q file
- seqs (int)
-
total number of sequences in the files
- filename (string)
-
file basename of the input file
- dirname (string)
-
name of the directory containing the input file (as received)
- path (string)
-
name of the directory containing the input file (resolved to its absolute path)
- json (string: JSON pretty printed)
-
(pretty printed) JSON string of the object (only if JSON is installed)
jsonStats(filepath)
Returns the JSON string with basic stats (same as $result->{json} from getStats(File, JSON)). Requires JSON::PP installed.
_n50fromHash(hash, totalsize)
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.Dependencies
Module (N50.pm)
- FASTX::Reader (required)
- JSON::PP, <File::Basename> (core modules)
Stantalone program (n50.pl)
- JSON
-
(optional) when using
--format JSON
- Text::ASCIITable
-
(optional) when using
--format screen
. This might be substituted by a different module in the future.
SUPPORT
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.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.
AUTHOR
Andrea Telatin <andrea@telatin.com>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2018-2022 by Andrea Telatin.
This is free software, licensed under:
The MIT (X11) License
Module Install Instructions
To install Proch::N50, copy and paste the appropriate command in to your terminal.
cpanm Proch::N50
perl -MCPAN -e shell install Proch::N50
For more information on module installation, please visit the detailed CPAN module installation guide.