Bio::MUST::Core::Ali::Temporary(3)

NAME
Bio::MUST::Core::Ali::Temporary - Thin wrapper for a temporary mapped Ali written on disk

VERSION
version 0.212670

SYNOPSIS
    #!/usr/bin/env perl

    use Modern::Perl '2011';
    # same as:
    # use strict;
    # use warnings;
    # use feature qw(say);

    use Bio::MUST::Core;
    use aliased 'Bio::MUST::Core::Ali::Temporary';

    # build Ali::Temporary object from existing ALI file
    my $temp_db = Temporary->new( seqs => 'database.ali' );

    # get properties
    my $db = $temp_db->filename;
    my $dbtype = $temp_db->type;

    # pass it to external program
    system("makeblastdb -in $db -dbtype $dbtype");

    # alternative constructor call
    # build Ali::Temporary object from existing Ali object
    use aliased 'Bio::MUST::Core::Ali';
    my $ali = Ali->load('queries.ali');
    my $temp_qu = Temporary->new( seqs => $ali );

    # pass it to external program
    use File::Temp;
    my $query = $temp_qu->filename;
    my $out = File::Temp->new( UNLINK => 0, SUFFIX => '.blastp' );
    system("blastp -query $query -db $db -out $out");
    say "report: $out";

    # later... when parsing the BLAST report
    # let's say $id is a BLAST hit in database.ali
    my $id = 'seq2';
    my $long_id = $temp_db->long_id_for($id);
    say "hit id: $long_id";
    # ...

    # more alternative constructor calls
    # build Ali::Temporary object from list of Seq objects
    my @seqs = $ali->filter_seqs( sub { $_->seq_len >= 500 } );
    my $temp_ls = Temporary->new( seqs => \@seqs );

    # build Ali::Temporary object preserving gaps in Seq objects
    # (and persistent associated FASTA file)
    my $temp_gp = Temporary->new(
        seqs => \@seqs,
        args => { degap => 0, persistent => 1 }
    );
    my $filename = $temp_gp->filename;
    # later...
    unlink $filename;

DESCRIPTION
This module implements a class representing a temporary FASTA file where sequence ids are automatically abbreviated ("seq1", "seq2"...) for maximum compatibility with external programs. To this end, it combines an internal Bio::MUST::Core::Ali object and a Bio::MUST::Core::IdMapper object.

An "Ali::Temporary" can be built from an existing ALI (or FASTA) file or on-the-fly from a list (ArrayRef) of Bio::MUST::Core::Seq objects (see the SYNOPSIS for examples).

Its sequences can be aligned or not but by default sequences are degapped before writing the associated temporary FASTA file. If gaps are to be preserved, this behavior can be altered via the optional "args" attribute.

ATTRIBUTES

  seqs
Bio::MUST::Core::Ali object (required)

This required attribute contains the Bio::MUST::Core::Seq objects that are written in the associated temporary FASTA file. It can be specified either as a path to an ALI/FASTA file or as an "Ali" object or as an ArrayRef of "Seq" objects (see the SYNOPSIS for examples).

For now, it provides the following methods: "count_comments", "all_comments", "get_comment", "guessing", "all_seq_ids", "has_uniq_ids", "is_protein", "is_aligned", "get_seq", "get_seq_with_id", "first_seq", "all_seqs", "filter_seqs" and "count_seqs" (see Bio::MUST::Core::Ali).

  args
HashRef (optional)

When specified this optional attribute is passed to the "temp_fasta" method of the internal "Ali" object. Its purpose is to allow the fine-tuning of the format of the associated temporary FASTA file.

By default, its contents is "<clean =" 1>> and "<degap =" 1>>, so as to generate a FASTA file of degapped sequences where ambiguous and missing states are replaced by "X".

Additionally, if you want to keep your temporary files around for debugging purposes, you can pass the option "<persistent =" 1>>. This will disable the autoremoval of the file on object destruction.

  file
Path::Class::File object (auto)

This attribute is automatically initialized with the path of the associated temporary FASTA file. Thus, it cannot be user-specified.

It provides the following methods: "remove" and "filename" (see below).

  mapper
Bio::MUST::Core::IdMapper object (auto)

This attribute is automatically initialized with the mapper associating the long ids of the internal "Ali" object to the abbreviated ids used in the associated temporary FASTA file. Thus, it cannot be user-specified.

It provides the following methods: "all_long_ids", "all_abbr_ids", "long_id_for" and "abbr_id_for" (see Bio::MUST::Core::IdMapper).

ACCESSORS

  filename
Returns the stringified filename of the associated temporary FASTA file.

This method does not accept any arguments.

  type
Returns the type of the sequences in the internal "Ali" object using BLAST denomination ("prot" or "nucl"). See Bio::MUST::Core::Seq::is_protein for the exact test performed.

This method does not accept any arguments.

MISC METHODS

  remove
Remove (unlink) the associated temporary FASTA file.

Since this method is in principle automatically invoked on object destruction, users should not need it. Note that "persistent" temporary files (see object constructor) have to be removed manually, which requires to get and store their "filename" before object destruction.

AUTHOR
Denis BAURAIN <denis.baurain@uliege.be>

COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by University of Liege / Unit of Eukaryotic Phylogenomics / Denis BAURAIN.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.