Bio::T...Baseml(3pm)
π 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: therunmodeblock literally saysTree 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::AlignIobject - Returns :
Bio::Align::AlignIobject - 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::Basemlobject - Returns :
Bio::Tools::Run::Phylo::PAML::Baseml - Args :
-alignment=> theBio::Align::AlignIobject-tree=> theBio::Tree::TreeIobject if you want to use runmode0or1-save_tempfiles=> boolean to save the generated tempfiles and NOT cleanup after onesself (defaultFALSE)
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=1for success,0for errors hash reference of the Yang calculated Ka/Ks values β this is a set of pairwise observations keyed assequencenameA->sequencenameB->datatypehash 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 fortree() - 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:$rcis1for success and0for 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
%VALIDVALUESclass 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
-1then 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
%VALIDVALUESclass 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::IOobject - 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>
π COPYRIGHT π
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
- debian bookworm: libbio-tools-phylo-paml-perl 1.7.3-4 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- debian trixie: libbio-tools-phylo-paml-perl 1.7.3-4 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms