-
juguang authored5194744d
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
bio_ens_hsp.pm 3.49 KiB
package Bio::EnsEMBL::Utils::Converter::bio_ens_hsp;
use strict;
use vars qw(@ISA);
use Bio::EnsEMBL::Utils::Converter::bio_ens;
use Bio::EnsEMBL::ProteinFeature;
@ISA = qw(Bio::EnsEMBL::Utils::Converter::bio_ens);
sub _initialize {
my ($self, @args) = @_;
$self->SUPER::_initialize(@args);
# After super initialized, analysis and contig are ready.
my $bio_ens_seqFeature_converter = new Bio::EnsEMBL::Utils::Converter(
-in => 'Bio::SeqFeature::Generic',
-out => 'Bio::EnsEMBL::SeqFeature',
-analysis => $self->analysis,
-contig => $self->contig
);
$self->_bio_ens_seqFeature_converter($bio_ens_seqFeature_converter);
}
sub _convert_single {
my ($self, $hsp) = @_;
unless(ref($hsp) && $hsp->isa('Bio::Search::HSP::GenericHSP')){
$self->throw("a GenericHSP object needed");
}
my $in = $self->in;
my $out = $self->out;
if($out =~ /^Bio::EnsEMBL::ProteinFeature$/){
return $self->_convert_single_to_proteinFeature($hsp);
}elsif($out =~/^Bio::EnsEMBL::(DnaDna|DnaPep|PepDna)AlignFeature/){
return $self->_convert_single_to_alignFeature($hsp);
}else{
$self->throw("[$in]->[$out], not implemented");
}
}
sub _convert_single_to_featurePair {
my ($self, $hsp) = @_;
my $bio_ens_seqFeature_converter = $self->_bio_ens_seqFeature_converter;
my $ens_feature1 = $bio_ens_seqFeature_converter->_convert_single(
$hsp->feature1);
my $ens_feature2 = $bio_ens_seqFeature_converter->_convert_single(
$hsp->feature2);
$ens_feature1->p_value($hsp->evalue);
$ens_feature1->score($hsp->score);
$ens_feature1->percent_id($hsp->percent_identity);
$ens_feature2->p_value($hsp->evalue);
$ens_feature2->score($hsp->score);
$ens_feature2->percent_id($hsp->percent_identity);
my $featurePair = Bio::EnsEMBL::FeaturePair->new(
-feature1 => $ens_feature1,
-feature2 => $ens_feature2
);
return $featurePair;
}
sub _convert_single_to_proteinFeature {