# something like this
my $query = new Bio::Seq(-file => $queryfile,
-format => 'Fasta');
my $hmm = Bio::EnsEMBL::Analysis::Runnable::ProteinAnnotation::Prodom->new
('-query' => $query,
'-program' => 'hmmpfam' or '/usr/local/pubseq/bin/hmmpfam',
'-database' => 'sf_hmm');
$hmm->workdir ($workdir);
$hmm->run;
my @results = $hmm->output;
sub parse_results
{ my ($self) = @_;
my $filehandle;
my $resfile = $self->resultsfile();
my @fps;
if (-e $resfile) {
if (-z $self->resultsfile) {
print STDERR "Prodom didn't find any hits\n";
return; }
else {
open (CPGOUT, "<$resfile") or $self->throw("Error opening ", $resfile, "\n "); }
}
while (<CPGOUT>) {
chomp;
if (my ($id, $start, $end, $hid, $hstart, $hend, $score, $evalue) = /^(\S+)\s+(\d+)\s+(\d+)\s+\S+\s+pd_(\S+);\S+\s+(\d+)\s+(\d+)\s+\S+\s+S=(\S+)\s+E=(\S+)/) {
my $fp= $self->create_protein_feature($start,$end,$score,$id,$hstart,$hend,$hid,$self->analysis, sprintf("%.3e", $evalue),0);
push @fps,$fp;
}
}
close CPGOUT;
$self->output(\@fps);
}
1; } |
sub run_analysis
{ my ($self) = @_;
print STDERR "running ".$self->program." against ".$self->database."\n";
my @dbfiles = split(/;/,$self->analysis->db_file);
print STDERR "FILENAME: ".$self->queryfile."\n";
my $cmd = $self->program .' '.
$self->options .' '.
'-P ' . '/software/worm/iprscan/bin/binaries/blast/ ' .
'-p ' . 'blastp' . ' '.
'-d ' . $dbfiles[0] .' '.
'-s ' . $self->queryfile . ' '.
'-t ' . '/tmp' . ' '.
'-h 0 -f '.
' >' . $self->resultsfile;
print STDERR "$cmd\n";
$self->throw ("Error running ".$self->program." on ".$self->filename." against ".$dbfiles[0])
unless ((system ($cmd)) == 0); } |