sub create_feature
{ my ($self, $feat) = @_;
my $feature1= Bio::SeqFeature::Generic->new( -seqname =>$feat->{name},
-start =>$feat->{start},
-end =>$feat->{end},
-score =>$feat->{score},
-source =>$feat->{source},
-primary =>$feat->{primary},
);
my $feature2= Bio::SeqFeature::Generic->new(
-start =>$feat->{hstart},
-end =>$feat->{hend},
);
my $featurepair = Bio::SeqFeature::FeaturePair->new;
$featurepair->feature1 ($feature1);
$featurepair->feature2 ($feature2);
$featurepair->add_tag_value('evalue',$feat->{p_value});
$featurepair->add_tag_value('percent_id','NULL');
$featurepair->add_tag_value("hid",$feat->{primary});
return $featurepair; } |
sub new
{ my($class,@args) = @_;
my $self = $class->SUPER::new(@args);
$self->_initialize_io(@args);
return $self; } |
sub next_result
{ my ($self) = @_;
my $filehandle;
my $line;
my $id;
while ($_=$self->_readline()) {
$line = $_;
chomp $line;
last if $line=~m/^Alignments of top-scoring domains/;
next if ($line=~m/^Model/ || /^\-/ || /^$/);
if ($line=~m/^Query sequence:\s+(\S+)/) {
$id = $1;
$self->seqname($id);
}
if (my ($hid, $start, $end, $hstart, $hend, $score, $evalue) = $line=~m/^(\S+)\s+\S+\s+(\d+)\s+(\d+)\s+\S+\s+(\d+)\s+(\d+)\s+\S+\s+(\S+)\s+(\S+)/) {
my %feature;
($feature{name}) = $self->seqname;
$feature{score} = $score;
$feature{p_value} = sprintf ("%.3e", $evalue);
$feature{start} = $start;
$feature{end} = $end;
$feature{hname} = $hid;
$feature{hstart} = $hstart;
$feature{hend} = $hend;
($feature{source}) = 'pfam';
$feature{primary} = $hid;
($feature{program}) = 'pfam';
($feature{db}) = 'db1';
($feature{logic_name}) = 'hmmpfam';
my $new_feat = $self->create_feature (\%feature);
return $new_feat
}
next;
}
return; } |
sub seqname
{ my($self,$seqname)=@_;
if(defined($seqname))
{
$self->{'seqname'}=$seqname;
}
return $self->{'seqname'};
}
1; } |