Raw content of Bio::EnsEMBL::Analysis::Runnable::tRNAscan_SE
# Ensembl module for Bio::EnsEMBL::Analysis::Runnable::tRNAscan_SE
#
# Copyright (c) 2004 Ensembl
#
=head1 NAME
Bio::EnsEMBL::Analysis::Runnable::tRNAscan_SE
=head1 SYNOPSIS
my $runnable = Bio::EnsEMBL::Analysis::Runnable::tRNAscan_SE->new
(
-query => $slice,
-program => 'trnascan-SE',
);
$runnable->run;
my @simple_features = @{$runnable->output};
=head1 DESCRIPTION
tRNAscan_SE expects to run the program tRNAscan-SE and produces
SimpleFeature which can be stored in the simple_feature table in the
core database
=head1 CONTACT
Post questions to the Ensembl development list: ensembl-dev@ebi.ac.uk
=cut
package Bio::EnsEMBL::Analysis::Runnable::tRNAscan_SE;
use strict;
use warnings;
use Bio::EnsEMBL::Analysis::Runnable;
use Bio::EnsEMBL::Utils::Exception qw(throw warning);
use Bio::EnsEMBL::Utils::Argument qw( rearrange );
use vars qw(@ISA);
@ISA = qw(Bio::EnsEMBL::Analysis::Runnable);
=head2 new
Arg [1] : Bio::EnsEMBL::Analysis::Runnable::tRNAscan_SE
Function : produce a tRNAscan_SE runnable and set the options
and program if undefined
Returntype: Bio::EnsEMBL::Analysis::Runnable::tRNAscan_SE
Exceptions:
Example :
=cut
sub new {
my ($class,@args) = @_;
my $self = $class->SUPER::new(@args);
######################
#SETTING THE DEFAULTS#
######################
if(!$self->options){
$self->options('-q');
}
if(!$self->program){
$self->program('tRNAscan-SE');
}
######################
return $self;
}
=head2 parse_results
Arg [1] : Bio::EnsEMBL::Analysis::Runnable::tRNAscan_SE
Arg [2] : string, filename
Function : to open and parse the results file
Returntype: none
Exceptions: throws on failure to open or close the results file
or if the results file doesnt exist
Example :
=cut
sub parse_results{
my ($self, $results) = @_;
if(!$results){
$results = $self->resultsfile;
}
if(!-e $results){
throw("Can't parse an no existance results file ".$results.
" tRNAscan_SE:parse_results");
}
my $ff = $self->feature_factory;
my @output;
open(CPG, $results) or throw("FAILED to open ".$results.
" tRNAscan_SE:parse_results");
LINE:while(){
next LINE if(/^Sequence/ ||/^Name/ || /^---/);
#ignore introductory lines
my @element = split (/\s+/, $_);
my ($name, $start, $end, $display_label, $score)
= @element[0, 2, 3, 4, 8];
my $strand = 1;
if($start > $end){
$strand = -1;
my $temp_end = $start;
$start = $end;
$end = $temp_end;
}
my $sf = $ff->create_simple_feature($start, $end, $strand, $score,
$display_label,
$name, $self->query);
push(@output, $sf)
}
$self->output(\@output);
close(CPG) or throw("FAILED to close ".$results.
" tRNAscan_SE:parse_results");
}
1;