Raw content of Bio::EnsEMBL::Analysis::RunnableDB::BlastTranscriptPep
=pod
=head1 NAME
Bio::EnsEMBL::Analysis::RunnableDB::BlastTranscriptPep
=head1 SYNOPSIS
my $db = Bio::EnsEMBL::DBAdaptor->new($locator);
my $btpep = Bio::EnsEMBL::Analysis::RunnableDB::BlastTranscriptPep->new (
-dbobj => $db,
-input_id => $input_id
-analysis => $analysis );
$btpep->fetch_input();
$btpep->run();
$btpep->output();
=head1 DESCRIPTION
This object runs Bio::EnsEMBL::Analysis::Runnable::Blast on peptides
obtained by translating a representative transcript from each gene
in the region. The resulting blast hits are written back as
DnaPepAlignFeature's.
The appropriate Bio::EnsEMBL::Analysis object must be passed for
extraction of appropriate parameters.
=head1 CONTACT
Describe contact details here
=head1 APPENDIX
The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _'
=cut
package Bio::EnsEMBL::Analysis::RunnableDB::BlastTranscriptPep;
use strict;
use Bio::EnsEMBL::Analysis::RunnableDB::Blast;
use Bio::EnsEMBL::Analysis::Runnable::BlastTranscriptPep;
use vars qw(@ISA);
@ISA = qw(Bio::EnsEMBL::Analysis::RunnableDB::Blast);
=head2 fetch_input
Args : none
Example : $runnable->fetch_input
Description: Fetches input data for BlastTranscriptPep and makes runnable
Returntype : none
Exceptions : $self->input_id is not defined
Caller : run_RunnableDB, Bio::EnsEMBL::Pipeline::Job
=cut
sub fetch_input {
my($self) = @_;
$self->throw("No input id") unless defined($self->input_id);
my $slice = $self->fetch_sequence;
$self->query($slice);
my %blast = %{$self->BLAST_PARAMS};
my $parser = $self->make_parser;
my $filter;
if($self->BLAST_FILTER){
$filter = $self->make_filter;
}
my (@representative_trans);
my $genes = $self->db->get_GeneAdaptor->fetch_all_by_Slice($self->query);
# get longest transcript; only sensible to do it for that
foreach my $gene (@$genes) {
next if $gene->start < 1;
my ($longest_pep_tran, $longest_pep_tran_len);
foreach my $tran (@{$gene->get_all_Transcripts}) {
if ($tran->translation) {
my $pep_string = $tran->translate->seq;
if (not defined $longest_pep_tran or length($pep_string) > $longest_pep_tran_len) {
$longest_pep_tran = $tran;
$longest_pep_tran_len = length($pep_string);
}
}
}
push @representative_trans, $longest_pep_tran;
}
foreach my $t (@representative_trans) {
foreach my $db (split ',', ($self->analysis->db_file)) {
$self->runnable(Bio::EnsEMBL::Analysis::Runnable::BlastTranscriptPep
->new(
-transcript => $t,
-query => $self->query,
-program => $self->analysis->program_file,
-parser => $parser,
-filter => $filter,
-database => $db,
-analysis => $self->analysis,
%blast,
));
}
}
return 1;
}
1;