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 =~ /^\/\// && last;
if($entry !~ /^(\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 = new Bio::LocatableSeq('-seq'=>$seq,
'-id'=>$name,
'-start'=>$start,
'-end'=>$end,
);
$aln->add_seq($add);
}
if ($end <= 0) { undef $aln;}
return $aln; } |
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
Report bugs to the Bioperl bug tracking system to help us keep track
the bugs and their resolution.
Bug reports can be submitted via email or the web:
bioperl-bugs@bio.perl.org
http://bugzilla.bioperl.org/
AUTHORS - Peter Schattner | Top |
The rest of the documentation details each of the object
methods. Internal methods are usually preceded with a _