Raw content of Bio::EnsEMBL::Compara::Production::GenomicAlignBlock::Blat
#
# You may distribute this module under the same terms as perl itself
#
# POD documentation - main docs before the code
=pod
=head1 NAME
Bio::EnsEMBL::Compara::RunnableDB::Blat
=cut
=head1 SYNOPSIS
my $db = Bio::EnsEMBL::Compara::DBAdaptor->new($locator);
my $repmask = Bio::EnsEMBL::Analysis::RunnableDB::Blat->new (
-db => $db,
-input_id => $input_id
-analysis => $analysis );
$repmask->fetch_input(); #reads from DB
$repmask->run();
$repmask->output();
$repmask->write_output(); #writes to DB
=cut
=head1 DESCRIPTION
This object wraps Bio::EnsEMBL::Analysis::Runnable::Blat to add
functionality to read and write to databases.
The appropriate Bio::EnsEMBL::Analysis object must be passed for
extraction of appropriate parameters. A Bio::EnsEMBL::Analysis::DBSQL::Obj is
required for database access.
=cut
=head1 CONTACT
Describe contact details here
=cut
=head1 APPENDIX
The rest of the documentation details each of the object methods.
Internal methods are usually preceded with a _
=cut
package Bio::EnsEMBL::Compara::Production::GenomicAlignBlock::Blat;
use strict;
use Bio::EnsEMBL::Analysis::Runnable::Blat;
use Bio::EnsEMBL::Utils::Exception qw(throw warning);
use Bio::EnsEMBL::Compara::Production::GenomicAlignBlock::PairAligner;
our @ISA = qw(Bio::EnsEMBL::Compara::Production::GenomicAlignBlock::PairAligner);
############################################################
sub configure_defaults {
my $self = shift;
# Target type: dna - DNA sequence
# prot - protein sequence
# dnax - DNA sequence translated in six frames to protein
# The default is dnax
# Query type: dna - DNA sequence
# rna - RNA sequence
# prot - protein sequence
# dnax - DNA sequence translated in six frames to protein
# rnax - DNA sequence translated in three frames to protein
# The default is dnax
#-ooc=/tmp/worker.????/5ooc
#
$self->options('-minScore=30 -t=dnax -q=dnax -mask=lower -qMask=lower');
$self->method_link_type('TRANSLATED_BLAT');
return 0;
}
############################################################
sub configure_runnable {
my $self = shift;
my (@db_chunk) = @{$self->db_DnaFragChunkSet->get_all_DnaFragChunks};
#
# get the sequences and create the runnable
#
my $qyChunkFile;
if($self->query_DnaFragChunkSet->count == 1) {
my ($qy_chunk) = @{$self->query_DnaFragChunkSet->get_all_DnaFragChunks};
$qyChunkFile = $self->dumpChunkToWorkdir($qy_chunk);
} else {
$qyChunkFile = $self->dumpChunkSetToWorkdir($self->query_DnaFragChunkSet);
}
my @db_chunk_files;
#Grouped seq_regions. Fasta files named after the first seq_region in the set
my $db_chunks = $self->db_DnaFragChunkSet->get_all_DnaFragChunks;
my $dnafrag = $db_chunks->[0]->dnafrag;
my $name = $dnafrag->name . "_" . $db_chunks->[0]->seq_start . "_" . $db_chunks->[0]->seq_end;
my $dbChunkFile = "" . $self->dump_loc . "/" . $name . ".fa";
my $program = $self->analysis->program_file;
$program = $self->analysis->program unless ($program);
$program = 'blat-32' unless($program);
if($self->debug) {
print("running with analysis '".$self->analysis->logic_name."'\n");
print(" options : ", $self->options, "\n");
print(" program : $program\n");
}
$self->delete_fasta_dumps_but_these([$qyChunkFile,$dbChunkFile]);
#Do not create ooc files for translated blat analyses
#create 5ooc file by replacing ".fa" with "/ooo5"
#my $oocFile = $dbChunkFile;
#$oocFile =~ s/(.fa)/\/5ooc/;
#my $options = $self->options . " -ooc=$oocFile";
my $options = $self->options;
my $runnable = Bio::EnsEMBL::Analysis::Runnable::Blat->
new(
-query => $qyChunkFile,
-database => $dbChunkFile,
-options => $options,
-program => $program,
-analysis => $self->analysis,
);
$self->runnable($runnable);
return 1;
}
1;