Bio::T...Baseml(3pm)

πŸ“¦
version 1.7.3 Β· 3 versions
, in debian bookworm, debian trixie

πŸ‘‘ NAME πŸ‘‘

okay so hi bestie πŸ’– say hello to Bio::Tools::Run::Phylo::PAML::Baseml β€” she is a wrapper around the PAML program baseml, and she is genuinely the nicest way to get that program to do what you want. no cap. 🧚


πŸ¦‹ VERSION πŸ¦‹

version 1.7.3 ✨


🌸 SYNOPSIS 🌸

the whole vibe, in one go:

use Bio::Tools::Run::Phylo::PAML::Baseml;
use Bio::AlignIO;
my $alignio = Bio::AlignIO->new(-format => 'phylip',
                      -file   => 't/data/gf-s85.phylip');
my $aln = $alignio->next_aln;

my $bml = Bio::Tools::Run::Phylo::PAML::Baseml->new();
$bml->alignment($aln);
my ($rc,$parser) = $bml->run();
while( my $result = $parser->next_result ) {
  my @otus = $result->get_seqs();
  my $MLmatrix = $result->get_MLmatrix();
  # 0 and 1 correspond to the 1st and 2nd entry in the @otus array
}

see her? read in a phylip alignment, hand it to the wrapper, run it, then walk the results one by one. the # 0 and 1 correspond to the 1st and 2nd entry in the @otus array note is doing a lot of heavy lifting there, don't sleep on it. πŸ’…


πŸ’– DESCRIPTION πŸ’–

okay so this is a wrapper around the baseml program from the PAML (Phylogenetic Analysis by Maximum Likelihood) package by Ziheng Yang. if you wanna read up on the real thing, it lives at http://abacus.gene.ucl.ac.uk/software/paml.html πŸ¦‹

what does the wrapper actually do for you? she generates a proper baseml.ctl file, and she runs the program inside its own separate temporary directory β€” so you're not getting temp files scattered all over your working dir like confetti, and she cleans up after herself when she's done. main character energy, honestly. ✨

the values you can feed to the configuration file are documented right here:

    'noisy'   => [ 0..3,9],
    'verbose' => [ 0,1,2], # 0:concise, 1:detailed, 2:too much
    'runmode' => [0..5],
    # for runmode
    # 0: use the provided tree structure(s) in treefile
    # 1,2: mean heuristic search by star-decomposition alg
    # 2: starts from star tree while 1 reads a multifurcating
    # tree from treefile and ties to estimate the best
    # bifurcating tree
    # 3: stepwise addition
    # 4: NNI perturbation with the starting tree
    # Tree search DOES NOT WORK WELL so estimate a tree
    # using other programs first
    'model'   => '0',
    # for model
    # 0: JC69 (uncorrected)
    # 1: K80  (transitions/transversion weighted differently)
    # 2: F81
    # 3: F84
    # 4: HKY85
    # 5: T92 (Tamura 92)
    # 6: TN93 (Tajima-Nei) correct for multiple substitutions
    # 7: REV (aka GTR)
    # 8: UNREST
    # 9: REVu
    #10: UNRESTu
    # See Yang 1994 JME 39:105-111

    # model 8 special case of the REV model
    # model 9 is special case of unrestricted model
    # can also supply special rate parameters
    # so for example (from pamlDOC.pdf
    # $model  = '8 [2 (CT) (AG)]'; # TN93
    # $model  = '8 [2 (TA AT TG CA CG) (AG)]'; # TN93
    # $model  = '9 [1 (TC CT AG GA)]; # K80
    # $model  = '9 [0]'; # JC69
    # $model  = '9 [11 (TA) (TG) (CT) (CA) (CG) (AT) (AC) (AG) (GT) (GC) (GA)],

    'outfile' => 'mlb',
    'fix_kappa'=> [0,1], # 0:estimate kappa, 1:fix kappa
    'kappa'    => '2.5', # initial or fixed kappa
    'fix_alpha'=> [1,0], # 0: estimate gamma shape param
    # 1: fix it at alpha
    'alpha'    => '0', # initial of fixed alpha
    # 0: infinity (constant rate)
    'Malpha'   => [0,1], # different alphas for genes

    'fix_rho'=> [1,0], # 0: estimate gamma shape param
                                  # 1: fix it at alpha
    'rho'    => '0', # initial of fixed alpha
    # 0: infinity (constant rate)

    'ncatG'    => '5', # number of categories in the dD,AdG, or nparkK models of rates
    'nparK'    => [0..4], # rate-class models
    # 1:rk 2:rk&fK
    # 3:rK&MK(1/K) 4:rK&MK
    'nhomo'    => [0..4], # 0 & 1: homogeneous,
    # 2: kappa for brances
    # 3:N1 4:N2
    'getSE'    => [0,1],
    'RateAncestor' => [1,0,2], # rates (alpha > 0) or
    # ancestral states
    'cleandata' => [1,0], # remove sites with
    # ambiguity data (1:yes or 0:no)

    'fix_blength' => [-1,0,1,2], # 0: ignore, -1: random,
    # 1: initial, 2: fixed

    # 'icode'    => [ 0..10], # (with RateAncestor=1.
    #try "GC" in data,model=4,Mgene=4)
    'ndata'    => [5,1..10],
    'clock'    => [0..3], # 0: no clock, 1: clock, 2: local clock, 3: CombinedAnalysis
    'Small_Diff' => '1e-6', #underflow issues?
⚠️ bestie, listen: the runmode block literally says Tree search DOES NOT WORK WELL so estimate a tree using other programs first. that is not me being dramatic, that is the actual documentation. estimate your tree somewhere else first, fr fr. πŸ’€

and also β€” she's flexible about model. besides the plain numbered options '0' through '10', there are special cases where you can hand her special rate parameters too, with the examples straight from pamlDOC.pdf shown in the block above. so like '8 [2 (CT) (AG)]' and friends are all fair game. πŸŽ€


πŸŽ€ ATTRIBUTES πŸŽ€

program_name

  • Title : program_name
  • Usage : $obj->program_name()
  • Function: holds the program name
  • Returns : string
  • Args : None

program_dir

  • Title : program_dir
  • Usage : ->program_dir()
  • Function: returns the program directory, obtained from ENV variable.
  • Returns : string
  • Args :

error_string

  • 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)

basically your little receipts folder for whatever the last run had to say πŸ™ˆ

alignment

  • Title : alignment
  • Usage : $baseml->alignment($aln);
  • Function: Get/Set the Bio::Align::AlignI object
  • Returns : Bio::Align::AlignI object
  • Args : [optional] Bio::Align::AlignI
  • Comment : We could potentially add support for running directly on a file but we shall keep it simple
  • See also: Bio::SimpleAlign

tree

(yes, she's listed, and that's literally all she says β€” keep it simple, bestie 🫢)

no_param_checks

  • 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)

save_tempfiles

  • Title : save_tempfiles
  • Usage : $obj->save_tempfiles($newval)
  • Function :
  • Returns : value of save_tempfiles
  • Args : newvalue (optional)

outfile_name

  • Title : outfile_name
  • Usage : my $outfile = $baseml->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

tempdir

  • 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

πŸ› οΈ METHODS πŸ› οΈ

new

  • Title : new
  • Usage : my $obj = Bio::Tools::Run::Phylo::PAML::Baseml->new();
  • Function: Builds a new Bio::Tools::Run::Phylo::PAML::Baseml object
  • Returns : Bio::Tools::Run::Phylo::PAML::Baseml
  • Args : -alignment => the Bio::Align::AlignI object -tree => the Bio::Tree::TreeI object if you want to use runmode 0 or 1 -save_tempfiles => boolean to save the generated tempfiles and NOT cleanup after onesself (default FALSE)

run

  • Title : run
  • Usage : $yn->run();
  • Function: run the Baseml analysis using the default or updated parameters β€” the alignment parameter must have been set
  • Returns : 3 values, $rc = 1 for success, 0 for errors hash reference of the Yang calculated Ka/Ks values β€” this is a set of pairwise observations keyed as sequencenameA->sequencenameB->datatype hash reference same as the previous one except it for the Nei and Gojobori calculated Ka,Ks,omega values
  • Args : optionally, a value appropriate for alignment() and one for tree()
  • NB : Since Baseml doesn't handle spaces in tree node ids, if a tree is in use spaces will be converted to underscores in both the tree node ids and alignment sequence ids.
πŸ’€ heads up: $rc is 1 for success and 0 for errors. yes, that's the opposite of what your brain expects. write it on your hand.

get_parameters

  • Title : get_parameters
  • Usage : my %params = $self->get_parameters();
  • Function: returns the list of parameters as a hash
  • Returns : associative array keyed on parameter names
  • Args : none

set_parameter

  • Title : set_parameter
  • Usage : $baseml->set_parameter($param,$val);
  • Function: Sets a baseml parameter, will be validated against the valid values as set in the %VALIDVALUES class variable. The checks can be ignored if on turns of param checks like this:
  $baseml->no_param_checks(1)
  • Returns : boolean if set was success, if verbose is set to -1 then no warning will be reported
  • Args : $paramname => name of the parameter $value => value to set the parameter to
  • See also: no_param_checks()

set_default_parameters

  • Title : set_default_parameters
  • Usage : $baseml->set_default_parameters(0);
  • Function: (Re)set the default parameters from the defaults (the first value in each array in the %VALIDVALUES class variable)
  • Returns : none
  • Args : boolean: keep existing parameter values
  • NB : using this isn't an especially good idea! You don't need to do anything to end up using default parameters: hence 'default'!
πŸ™ˆ the manpage literally says it's "not an especially good idea" β€” she's eating her own defaults, you literally don't have to do anything. iconic.

cleanup

  • Title : cleanup
  • Usage : $baseml->cleanup();
  • Function: Will cleanup the tempdir directory after a PAML run
  • Returns : none
  • Args : none

io

  • Title : io
  • Usage : $obj->io($newval)
  • Function: Gets a Bio::Root::IO object
  • Returns : Bio::Root::IO
  • Args : none

Bio::Tools::Run::Wrapper methods

the family inheritance situation. she's got the whole Bio::Tools::Run::Wrapper method set too, iykyk 🌈


πŸ’Œ FEEDBACK πŸ’Œ

Mailing lists

user feedback is a whole integral part of the evolution of this and other Bioperl modules, and it is very much appreciated, so send your comments and suggestions preferably to the Bioperl mailing list. πŸ’–

bioperl-l@bioperl.org              - General discussion
http://bioperl.org/Support.html    - About the mailing lists

Support

please direct usage questions or support issues to the mailing list:

bioperl-l@bioperl.org

rather than to the module maintainer directly β€” that way, lots of experienced and reponsive experts can look at the problem and quickly address it. and if at all possible, please include a thorough description of the problem with code and data examples. the more she can see, the faster it gets solved. 🫢

Reporting bugs

report bugs to the Bioperl bug tracking system so they can keep track of the bugs and their resolution. bug reports can be submitted via the web:

https://github.com/bioperl/bio-tools-phylo-paml/issues

✍️ AUTHORS ✍️

Jason Stajich <jason@bioperl.org>

Sendu Bala <bix@sendu.me.uk>


this software is copyright (c) by Jason Stajich <jason@bioperl.org>. πŸ’œ

this software is available under the same terms as the perl 5 programming language system itself.


and that's the whole page, bestie!! πŸŒΈπŸ’… no notes. she ships as perl v5.34.0, dated 2022-10-14, and she goes by Bio::T...Baseml(3pm) in polite manpage company ✨ go run some maximum likelihood, you got this πŸ‘‘

πŸ“¦ where this page comes from