Bio::Tools::Run::Phylo
Raxml
Toolbar
Summary
Bio::Tools::Run::Phylo::Raxml
Package variables
Privates (from "my" definitions)
$DEFAULTNTMODEL = 'GTRCAT'
$DEFAULTAAMODEL = 'PROTCATDAYHOFF'
Included modules
Bio::AlignIO
Bio::Root::IO
Bio::Seq
Bio::SeqIO
Bio::TreeIO
Cwd
File::Basename qw ( basename )
Inherit
Bio::Root::Root Bio::Tools::Run::WrapperBase
Synopsis
# Build a Raxml factory
$factory = Bio::Tools::Run::Phylo::Raxml->new(-p => 100);
# Get an alignment
my $alignio = Bio::AlignIO->new(
-format => 'fasta',
-file => '219877.cdna.fasta');
my $alnobj = $alignio->next_aln;
# Analyze the aligment and get a Tree
my $tree = $factory->run($alnobj);
Description
Get a Bio::Tree object using raxml given a protein or DNA alignment.
Methods
Methods description
Title : new Usage : my $treebuilder = Bio::Tools::Run::Phylo::Raxml->new(); Function: Constructor Returns : Bio::Tools::Run::Phylo::Raxml Args : Same as those used to run raxml. For example:
$factory = Bio::Tools::Run::Phylo::Raxml->new(-p => 100, -SSE3 => 1) |
Title : program_name Usage : $factory->program_name() Function: holds the program name Returns: string Args : None |
Title : program_dir Usage : $factory->program_dir(@params) Function: returns the program directory Returns: string Args : |
Title : error_string Usage : $obj->error_string($newval) Function: Where the output from the last analysus run is stored. Returns : value of error_string Args : newvalue (optional) |
Title : version Usage : exit if $prog->version() < 1.8 Function: Determine the version number of the program Example : Returns : float or undef Args : none |
Title : quiet Usage : Function: get or set value for 'quiet' Example : Returns : Args : the value |
Title : run Usage : $factory->run($stockholm_file) OR $factory->run($align_object) Function: Runs Raxml to generate a tree Returns : Bio::Tree::Tree object Args : File name for your input alignment in stockholm format, OR Bio::Align::AlignI compliant object (eg. Bio::SimpleAlign). |
Title : _run Usage : Internal function, not to be called directly Function: Runs the application Returns : Tree object Args : Alignment file name |
Title : _write_alignfile Usage : Internal function, not to be called directly Function: Create an alignment file Returns : filename Args : Bio::Align::AlignI |
Title : _alphabet Usage : my $alphabet = $self->_alphabet; Function: Get the alphabet of the input alignment, defaults to 'dna' Returns : 'dna' or 'protein' Args : Alignment file |
Title : _setparams Usage : Internal function, not to be called directly Function: Create parameter inputs for Raxml program Example : Returns : parameter string to be passed to Raxml Args : name of calling object |
Methods code
sub new
{ my ( $class, @args ) = @_;
my $self = $class->SUPER::new(@args);
$self->_set_from_args(\@
args,
-case_sensitive => 1,
-methods => [ @Raxml_PARAMS, @Raxml_SWITCHES ],
-create => 1
);
my ($out,$quiet) = $self->SUPER::_rearrange( [qw(OUTFILE_NAME QUIET)], @args );
$self->outfile_name( $out || '' );
$self->quiet( $quiet ) if $quiet;
$self;} |
sub program_name
{ $PROGRAM_NAME; } |
sub program_dir
{ undef; } |
sub error_string
{ my ( $self, $value ) = @_;
$self->{'error_string'} = $value if ( defined $value );
$self->{'error_string'};} |
sub version
{ my ($self) = @_;
my $exe;
return undef unless $exe = $self->executable;
my $string = `$exe -v 2>&1`;
$string =~ /raxml\s+version\s+([\d\.]+)/i;
return $1 || undef;} |
sub quiet
{ my ( $self, $value ) = @_;
$self->{'_quiet'} = $value if ( defined $value );
$self->{'_quiet'};} |
sub run
{ my ($self, $in) = @_;
if (ref $in && $in->isa("Bio::Align::AlignI")) {
$in = $self->_write_alignfile($in);
}
elsif (! -e $in) {
$self->throw("When not supplying a Bio::Align::AlignI object, you must supply a readable filename");
}
$self->_run($in);} |
sub _run
{ my ( $self, $file ) = @_;
my $exe = $self->executable || return;
my $param_str = $self->arguments . " " . $self->_setparams($file);
my $command = "$exe $param_str";
$self->debug("Raxml command = $command");
my $status = system($command);
my $outfile = 'RAxML_bestTree.' . $self->outfile_name;
if ( !-e $outfile || -z $outfile ) {
$self->warn("Raxml call had status of $status: $? [command $command]\n");
return undef;
}
my $treeio = Bio::TreeIO->new( -file => $outfile );
my $tree = $treeio->next_tree;
$tree;} |
sub _write_alignfile
{ my ( $self, $align ) = @_;
my ( $tfh, $tempfile ) = $self->io->tempfile( -dir => '.' );
my $out = Bio::AlignIO->new(
-file => ">$tempfile",
-format => 'phylip'
);
$out->write_aln($align);
$out->close();
undef($out);
close($tfh);
undef($tfh);
die "Alignment file $tempfile was not created" if ( ! -e $tempfile );
$tempfile;} |
sub _alphabet
{ my ( $self, $file ) = @_;
if ($file) {
if ( -e $file ) {
my $in = Bio::AlignIO->new( -file => $file );
my $aln = $in->next_aln;
my $seq = $aln->get_seq_by_pos(1);
my $alphabet = $seq->alphabet;
$self->{_alphabet} = $alphabet;
}
else {
die "File $file can not be found";
}
}
return $self->{'_alphabet'} || 'dna';} |
sub _setparams
{ my ( $self, $infile ) = @_;
my $param_string = '';
if ( !$self->m ) {
my $model =
( $self->_alphabet($infile) eq 'dna' )
? $DEFAULTNTMODEL
: $DEFAULTAAMODEL;
$self->m($model);
}
if ( !$self->outfile_name ) {
my $dir = getcwd();
$self->w($dir);
my ( $tfh, $outfile ) = $self->io->tempfile( -dir => $dir );
close($tfh);
undef $tfh;
$outfile = basename($outfile);
$self->outfile_name($outfile);
}
for my $attr (@Raxml_PARAMS) {
my $value = $self->$attr();
next unless ( defined $value );
$param_string .= ' -' . $attr . ' ' . $value . ' ';
}
for my $attr (@Raxml_SWITCHES) {
my $value = $self->$attr();
next unless ($value);
$param_string .= ' -' . $attr . ' ';
}
$param_string .= "-s $infile -n " . $self->outfile_name;
$param_string .= ' &> /dev/null'
if ( $self->quiet() || $self->verbose < 0 );
$param_string;} |
General documentation
User feedback is an integral part of the evolution of this and other
Bioperl modules. Send your comments and suggestions preferably to one
of the Bioperl mailing lists. Your participation is much appreciated.
bioperl-l@bioperl.org - General discussion
http://bioperl.org/wiki/Mailing_lists - About the mailing lists
Please direct usage questions or support issues to the mailing list:
bioperl-l@bioperl.org
Do not contact the module maintainer directly. Many experienced experts
at bioperl-l will be able look at the problem and quickly
address it. Please include a thorough description of the problem
with code and data examples if at all possible.
| AUTHOR - Brian Osborne | Top |
The rest of the documentation details each of the object
methods. Internal methods are usually preceded with a _
| Bio::Tools::Run::BaseWrapper methods | Top |
Title : no_param_checks
Usage : $obj->no_param_checks($newval)
Function: Boolean flag as to whether or not we should
trust the sanity checks for parameter values
Returns : value of no_param_checks
Args : newvalue (optional)
Title : save_tempfiles
Usage : $obj->save_tempfiles($newval)
Function:
Returns : value of save_tempfiles
Args : newvalue (optional)
Title : outfile_name
Usage : my $outfile = $Raxml->outfile_name();
Function: Get/Set the name of the output file for this run
(if you wanted to do something special)
Returns : string
Args : [optional] string to set value to
Title : tempdir
Usage : my $tmpdir = $self->tempdir();
Function: Retrieve a temporary directory name (which is created)
Returns : string which is the name of the temporary directory
Args : none
Title : cleanup
Usage : $Raxml->cleanup();
Function: Will cleanup the tempdir directory
Returns : none
Args : none