Raw content of Bio::EnsEMBL::Analysis::RunnableDB::Exonerate2Array
#
#
# Cared for by EnsEMBL
#
# Copyright GRL & EBI
#
# You may distribute this module under the same terms as perl itself
#
# POD documentation - main docs before the code
=pod
=head1 NAME
Bio::EnsEMBL::Pipeline::RunnableDB::Exonerate2Array
=head1 SYNOPSIS
my $obj = Bio::EnsEMBL::Pipeline::RunnableDB::Exonerate2Array->new(
-dbobj => $db,
-input_id => $id,
-analysis => $analysis
);
$obj->fetch_input();
$obj->run();
my @newfeatures = $obj->output();
$obj->write_output();
=head1 DESCRIPTION
=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
# Let the code begin...
package Bio::EnsEMBL::Analysis::RunnableDB::Exonerate2Array;
use vars qw(@ISA);
use strict;
# Object preamble - inherits from Bio::EnsEMBL::Root;
use Bio::EnsEMBL::Analysis::RunnableDB;
use Bio::EnsEMBL::Analysis::Runnable::ExonerateArray;
use Bio::EnsEMBL::Analysis::Config::General;
@ISA = qw(Bio::EnsEMBL::Analysis::RunnableDB);
=head2 fetch_input
Arg [1] : Bio::EnsEMBL::Analysis::RunnableDB::Exonerate2Array
Function : fetch data out of fasta files and create runnable
Returntype: 1
Exceptions: none
Example :
=cut
sub fetch_input {
my( $self) = @_;
print STDERR "Fetching input \n";
my $input_id = $self->input_id;
my $analysis = $self->analysis;
my $program = $analysis->program_file;
my $query_type = 'dna';
my $target_type = 'dna';
my $query_file = $ANALYSIS_INPUT_DIR.$input_id;
my $target_dir =$ANALYSIS_TARGET_DIR;
my $options = "--showalignment no --bestn 100 --dnahspthreshold 116 --fsmmemory 256 --dnawordlen 25 --dnawordthreshold 11 --querytype $query_type --targettype $target_type --target $target_dir --query " ;
#$target_dir .= "22.fa"; ##only for testing
###Runnable::ExonerateArray take a array of query_seq_obj, so it's need to be generated here###
my @query_seqs;
my $in = Bio::SeqIO->newFh(
-FILE => $query_file,
-FORMAT => 'Fasta',
);
while (my $seq = <$in>) {
push (@query_seqs, $seq);
}
# prepare runnable
throw("Can't run Exonerate without both query and target sequences")
unless (defined($query_file) && defined($target_dir));
info("exonerate is '$program', target_dir is $target_dir, query_file is $ query_file\n");
#my $target_file = $target_dir . "*";###exonerate-0.8.2 can use both file and dir
my $runnable = new Bio::EnsEMBL::Analysis::Runnable::ExonerateArray(
'-db' => $self->db,
'-query_seqs' => \@query_seqs,
'-program' => $program,
'-options' => $options,
'-analysis' => $self->analysis,
);
$self->runnable($runnable);
}
=head2 write_output
Title : write_output
Usage : $self->write_output()
Function: Writes contents of $self->output into $self->dbobj
Returns : 1
Args : None
=cut
sub write_output {
my($self) = @_;
my @misc_features = @{$self->output()};
my $mfa = $self->db->get_MiscFeatureAdaptor();
$mfa->store( @misc_features );
return 1;
}
1;