The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

FASTX::Reader - A lightweight module to parse FASTA and FASTQ files, based on Heng Li's readfq() method, packaged in an object oriented parser.

VERSION

version 0.31

SYNOPSIS

  use FASTX::Reader;
  my $filepath = '/path/to/assembly.fastq';
  die "Input file not found: $filepath\n" unless (-e "$filepath");
  my $fasta_reader = FASTX::Reader->new({ filename => "$filepath" });

  while (my $seq = $fasta_reader->getRead() ) {
    print $seq->{name}, "\t", $seq->{seq}, "\t", $seq->{qual}, "\n";
  }

BUILD TEST

METHODS

new()

Initialize a new FASTX::Reader object passing 'filename' argument. Will open a filehandle stored as $object->{fh}.

  my $seq_from_file = FASTX::Reader->({ filename => "$file" });

To read from STDIN either pass {{STDIN}} as filename, or don't pass a filename at all:

  my $seq_from_stdin = FASTX::Reader->();

getRead()

Will return the next sequence in the FASTA / FASTQ file using Heng Li's implementation of the readfq() algorithm. The returned object has these attributes:

name

header of the sequence (identifier)

comment

any string after the first whitespace in the header

seq

actual sequence

qual

quality if the file is FASTQ

getFastqRead()

If the file is FASTQ, this method returns the same read object as getRead() but with a faster parser. Attributes of the returned object are name, comment, seq, qual (as for getRead()).

getFileFormat(filename)

This subroutine returns 'fasta', 'fastq' or <undef> for a given filepath (this is not a method of the instantiated object)

ACKNOWLEDGEMENTS

Heng Li's readfq()

This mnodule is a wrapper around the readfq() subroutine originally written by Heng Li, that I adapted to retain sequence comments.

See: readfq repository

Fabrizio Levorin

has contributed to the prototyping of this module

SEE ALSO

BioX::Seq::Stream

The module I would have used if it was available when I started working on this

AUTHOR

Andrea Telatin <andrea@telatin.com>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2019 by Andrea Telatin.

This is free software, licensed under:

  The MIT (X11) License