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

NAME

FASTX::Seq - A class for representing a sequence for FASTX::Reader

VERSION

version 1.12.0

SYNOPSIS

A sequence object supported from FASTX::Reader structured as a BioX::Seq record, but keeping the attribute names as the scalar natively provided by FASTX::Reader. Order of arguments matters:

seq

The actual sequence, the only mandatory field (string)

name

The sequence identifier, can be omitted (string / undef)

comment

The sequence comment, can be omitted (string / undef)

qual

The sequence quality, if provided its length must match the sequence one (string / undef)

  use FASTX::Seq;
  my $fastq = new($seq, $name, $comment, $qual);
  my $fasta = new($seq, $name, $comment);
  my $barseq = new("ATGC"); 

  # Change attribute
  $fastq->seq("ATGCTT");

GLOBAL VARIABLES

$FASTX::Seq::DEFAULT_QUALITY [default: 'I']

Default quality character to use when no quality is provided. Stored in each record as default_quality.

$FASTX::Seq::DEFAULT_LINE_LEN [default: 0]

Default line length for FASTA output. If set to 0, no line break is added. Stored in each record as line_len.

$FASTX::Seq::DEFAULT_OFFSET [default: 33]

Default quality offset. Default is 33, which is the standard for Sanger/Illumina 1.8+. Stored in each record as offset.

NAME

FASTX::Seq - A class for representing a sequence for FASTX::Reader

VERSION

version 1.11.0

MAIN METHODS

new($seq, $name, $comment, $qual)

Create a new instance of FASTX::Seq. The sequence is the only required field.

Positional arguments (order matters, only the first is mandatory, but comment must be undef if qual is not provided):

  my $record = FASTX::Seq->new($seq, $name, $comment, $qual);

Named arguments (order does not matter, only -seq is mandatory, other can be omitted):

  my $fastq_record = FASTX::Seq->new(
    -seq => "CACCA",                       # -sequence is also valid
    -name => $name,                        # -id is also valid
    -comment => $comment,
    -qual => "IFIGH",                      # -quality is also valid
    -offset => 33,
    -line_len => $line_len,
    -default_quality => $default_quality,
  );

copy()

Create a copy of the current instance.

    my $copy = $fastq->copy();

seq()

Get or update the sequence field.

    my $seq = $fastq->seq();
    $fastq->seq("ATGCTT");

name()

Get or update the sequence field.

    my $seq = $fastq->name();
    $fastq->name("seq1");

qual()

Get or update the sequence field.

    my $seq = $fastq->qual();
    $fastq->qual("IIIII");

comment()

Get or update the sequence field.

    my $seq = $fastq->comment();
    $fastq->comment("len=" . length($fastq->seq()));

offset()

Get or update the sequence field.

    $fastq->offset(33);

line_len()

Get or update the sequence field.

    $fastq->line_len(33);

default_quality()

Get or update the sequence field.

    $fastq->default_quality(33);

len()

Length of the sequence

    my $len = $fastq->len();

SEQUENCE MANIPULATION

rev()

Reverse (no complement) the sequence in place.

    my $rev = $fastq->rev();

rc()

Reverse and complement the sequence in place (as it's revesible). Supports IUPAC degenerate bases.

    my $rc = $fastq->rc();

slice()

Retrieve a slice of the sequence (from, length), as perl's substr. The change is not in place, will return a new object.

    my $slice = $fastq->slice(0, 200);

translate([genetic_code])

Return the sequence as translated protein sequence. Optional artument is the NCBI Genetic code:

    my $seq = FASTX::Seq->new(
        -seq => 'ATGATG',
        -id => 'seq1',
    );
    my $orf = $seq->translate(11);

    say $orf->seq();

QUALITY

char2qual(char, [offset]])

Convert encoded quality to its integer value. If offset is not provided, will use the default offset.

    my $encoded_phred = $fastq->qual2phred("!", 33);

qual2char(int, [offset])

Convert integer quality score to encoded phred scores. If offset is not provided, will use the default offset.

    my $encoded_phred = $fastq->qual2phred("!", 33);

qualities()

Returns an array of quality values for each base of the record.

    my @qualities = $fastq->qualities();

min_qual()

Return the lowest quality score in the record.

    my @qualities = $fastq->min_qual();

max_qual()

Return the lowest quality score in the record.

    my @qualities = $fastq->max_qual();

trim_after(quality_integer)

Trim the record in place after the first base with a quality score lower or equal than the provided integer.

    $fastq->trim_after(20);

trim_until(quality_integer)

Trim the record in place up to the the first base with a quality score higher or equal than the provided integer.

    $fastq->trim_until(20);

VALIDATION AND STRING GENERATION

string()

Return the sequence as a string. If arguments are provided, they will be treated as FASTA or FASTQ specific according to the record format.

    print $seq->string();

as_string()

Alias to string()

asfasta([length]])

Return the sequence as a FASTA string. If the length is provided, the sequence will be split into lines of that length.

    my $fasta = $seq->asfasta();

asfastq()

Return the sequence as a FASTQ string. Will use a dummy fixed value quality if the sequence didnt have a quality string. Provide an character to use it as quality value, will override the record quality, if it has one.

    my $fasta = $seq->asfastq();

as_fasta()

Alias to asfasta()

as_fastq()

Alias to asfastq()

is_fasta()

Return true if the record has not a quality value stored (FASTA)

    if ( $seq->is_fasta() ) {
        ...
    }

is_fastq()

Return true if the record has a quality value stored (FASTQ)

    if ( $seq->is_fastq() ) {
        ...
    }

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

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