Bio::SeqIO
MultiFile
Summary
Bio::SeqIO::MultiFile - Treating a set of files as a single input stream
Package variables
No package variables defined.
Inherit
Synopsis
$seqin = Bio::SeqIO::MultiFile( '-format' => 'Fasta',
'-files' => ['file1','file2'] );
while((my $seq = $seqin->next_seq)) {
# do something with $seq
}
Description
Bio::SeqIO::MultiFile provides a simple way of bundling a whole
set of identically formatted sequence input files as a single stream.
Methods
Methods description
Title : next_seq Usage : Function: Example : Returns : Args : |
Title : next_primary_seq Usage : Function: Example : Returns : Args : |
Title : _load_file Usage : Function: Example : Returns : Args : |
Title : _set_file Usage : Function: Example : Returns : Args : |
Title : _current_seqio Usage : $obj->_current_seqio($newval) Function: Example : Returns : value of _current_seqio Args : newvalue (optional) |
Title : _format Usage : $obj->_format($newval) Function: Example : Returns : value of _format Args : newvalue (optional) |
Methods code
sub _initialize
{ my($self,@args) = @_;
$self->SUPER::_initialize(@args);
my ($file_array,$format) = $self->_rearrange([qw(
FILES
FORMAT
)],
@args,
);
if( !defined $file_array || ! ref $file_array ) {
$self->throw("Must have an array files for MultiFile");
}
if( !defined $format ) {
$self->throw("Must have a format for MultiFile");
}
$self->{'_file_array'} = [];
$self->_set_file(@$file_array);
$self->_format($format);
if( $self->_load_file() == 0 ) {
$self->throw("Unable even to initialise the first file");
}} |
sub next_seq
{ my ($self,@args) = @_;
my $seq = $self->_current_seqio->next_seq();
if( !defined $seq ) {
if( $self->_load_file() == 0) {
return;
} else {
return $self->next_seq();
}
} else {
return $seq;
}} |
sub next_primary_seq
{ my ($self,@args) = @_;
my $seq = $self->_current_seqio->next_primary_seq();
if( !defined $seq ) {
if( $self->_load_file() == 0) {
return;
} else {
return $self->next_primary_seq();
}
} else {
return $seq;
}} |
sub _load_file
{ my ($self,@args) = @_;
my $file = shift(@{$self->{'_file_array'}});
if( !defined $file ) {
return 0;
}
my $seqio = Bio::SeqIO->new( '-format' => $self->_format(), -file => $file);
if( !defined $seqio) {
$self->throw("no seqio built for $file!");
}
$self->_current_seqio($seqio);
return 1;} |
sub _set_file
{ my ($self,@files) = @_;
push(@{$self->{'_file_array'}},@files);} |
sub _current_seqio
{ my ($obj,$value) = @_;
if( defined $value) {
$obj->{'_current_seqio'} = $value;
}
return $obj->{'_current_seqio'};} |
sub _format
{ my ($obj,$value) = @_;
if( defined $value) {
$obj->{'_format'} = $value;
}
return $obj->{'_format'};} |
General documentation
User feedback is an integral part of the evolution of this and other
Bioperl modules. Send your comments and suggestions preferably to one
of the Bioperl mailing lists. Your participation is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
Report bugs to the Bioperl bug tracking system to help us keep track
the bugs and their resolution.
Bug reports can be submitted via the web:
http://bugzilla.open-bio.org/
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _