Bio::AlignIO
pfam
Toolbar
Summary
Bio::AlignIO::pfam - pfam sequence input/output stream
Package variables
No package variables defined.
Included modules
Inherit
Synopsis
Do not use this module directly. Use it via the
Bio::AlignIO class.
Description
This object can transform Bio::SimpleAlign objects to and from pfam flat
file databases.
Methods
Methods description
Title : next_aln Usage : $aln = $stream->next_aln() Function: returns the next alignment in the stream Returns : Bio::Align::AlignI object Args : NONE |
Title : write_aln Usage : $stream->write_aln(@aln) Function: writes the $aln object into the stream Returns : 1 for success and 0 for error Args : Bio::Align::AlignI object |
Methods code
sub next_aln
{ my $self = shift;
my $entry;
my $name;
my $start;
my $end;
my $seq;
my $add;
my $acc;
my %names;
my $aln = Bio::SimpleAlign->new(-source => 'pfam');
while( $entry = $self->_readline) {
chomp $entry;
$entry =~ m{^//} && last;
if($entry !~ m{^(\S+)/(\d+)-(\d+)\s+(\S+)\s*} ) {
$self->throw("Found a bad line [$_] in the pfam format alignment");
next;
}
$name = $1;
$start = $2;
$end = $3;
$seq = $4;
$add = Bio::LocatableSeq->new('-seq' => $seq,
'-display_id' => $name,
'-start' => $start,
'-end' => $end,
'-alphabet' => $self->alphabet,
);
$aln->add_seq($add);
}
return $aln if $aln->num_sequences;
return;} |
sub write_aln
{ my ($self,@aln) = @_;
if( @aln > 1 ) { $self->warn("Only the 1st pfam alignment will be output since the format does not support multiple alignments in the same file"); }
my $aln = shift @aln;
if( ! $aln || ! $aln->isa('Bio::Align::AlignI') ) {
$self->warn("Must provide a Bio::Align::AlignI object when calling write_aln");
next;
}
my ($namestr,$seq,$add);
my ($maxn);
$maxn = $aln->maxdisplayname_length();
foreach $seq ( $aln->each_seq() ) {
$namestr = $aln->displayname($seq->get_nse());
$add = $maxn - length($namestr) + 2;
$namestr .= " " x $add;
$self->_print (sprintf("%s %s\n",$namestr,$seq->seq())) or return;
}
$self->flush() if $self->_flush_on_write && defined $self->_fh;
return 1;
}
1;} |
General documentation
Please direct usage questions or support issues to the mailing list:
bioperl-l@bioperl.org
rather than to the module maintainer directly. Many experienced and
reponsive experts will be able look at the problem and quickly
address it. Please include a thorough description of the problem
with code and data examples if at all possible.
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:
https://redmine.open-bio.org/projects/bioperl/
| AUTHORS - Peter Schattner | Top |
The rest of the documentation details each of the object
methods. Internal methods are usually preceded with a _