Raw content of Bio::EnsEMBL::Analysis::Runnable::ProteinAnnotation::Coil =pod =head1 NAME Bio::EnsEMBL::Analysis::Runnable::ProteinAnnotation::Coil =head1 SYNOPSIS my $seqstream = Bio::SeqIO->new ( -file => $queryfile, -fmt => 'Fasta', ); $seq = $seqstream->next_seq; my $ncoils = Bio::EnsEMBL::Analysis::Runnable::ProteinAnnotation::Coil->new( -analysis => $ana, -query => $query); $ncoils->run; my @list = @{$ncoils->run} =head1 DESCRIPTION =cut package Bio::EnsEMBL::Analysis::Runnable::ProteinAnnotation::Coil; use vars qw(@ISA); use strict; use Bio::EnsEMBL::Utils::Exception qw(throw warning); use Bio::EnsEMBL::Analysis::Runnable::ProteinAnnotation; @ISA = qw(Bio::EnsEMBL::Analysis::Runnable::ProteinAnnotation); sub multiprotein{ my ($self) = @_; return 1; } sub new { my ($class, @args) = @_; my $self = $class->SUPER::new(@args); if (not $self->database) { throw("You must supply the Coils runnable with a database directory"); } elsif (not -d $self->database) { throw($self->database . " is not a *valid* database directory"); } else { $ENV{'COILSDIR'} = $self->database; } return $self; } sub run_analysis { my ($self) = @_; my $command = $self->program." -f < ".$self->queryfile." > ".$self->resultsfile; # run program throw ("Error running ".$self->program." on ".$self->queryfile) unless (system($command) == 0); } sub parse_results { my ($self) = @_; my ($fh, @pfs); my $resfile = $self->resultsfile; if (-e $resfile) { # it's a filename if (-z $resfile) { return; } else { open($fh, "<$resfile") or throw ("Error opening $resfile"); } } else { # it'a a filehandle $fh = $resfile; } # parse my $seqio = Bio::SeqIO->new(-format => 'fasta', -fh => $fh); while(my $seq = $seqio->next_seq) { my $pep = $seq->seq; while ($pep =~ m/(x+)/g) { my $end = pos($pep); my $start = $end - length($1) + 1; my $fp = $self->create_protein_feature($start, $end, 0, $seq->id, 0, 0, 'ncoils', $self->analysis, 0, 0); push @pfs, $fp; } } $self->output(\@pfs); } 1;