参数以及操作解读主要来自A Step-by-Step Tutorial: Divergence Time Estimation with Approximate Likelihood Calculation Using MCMCTREE in PAML (9 June 2011)
和PAML MANUAL Version 4.9j (February 2020)
seed = -1
seqfile = examples/DatingSoftBound/mtCDNApri123.txt
#序列输入文件
treefile = examples/DatingSoftBound/mtCDNApri.trees
#带有化石标记的树
outfile = out
ndata = 3
#这个需要改
seqtype = 0 * 0: nucleotides; 1:codons; 2:AAs
#这个需要改
usedata = 3 * 0: no data; 1:seq like; 2:use in.BV; 3: out.BV
#第一次用3第二次用2
clock = 3 * 1: global clock; 2: independent rates; 3: correlated rates
RootAge = <1.0 * safe constraint on root age, used if no fossil for root.
model = 7 * 0:JC69, 1:K80, 2:F81, 3:F84, 4:HKY85
#7居然才是GTR
alpha = 0 * alpha for gamma rates at sites
ncatG = 5 * No. categories in discrete gamma
cleandata = 0 * remove sites with ambiguity data (1:yes, 0:no)?
BDparas = 1 1 0 * birth, death, sampling
#跟时间尺度有关系
kappa_gamma = 6 2 * gamma prior for kappa
alpha_gamma = 1 1 * gamma prior for alpha
rgene_gamma = 2 2 * gamma prior for overall rates for genes
#计算
sigma2_gamma = 1 10 * gamma prior for sigma^2 (for clock=2 or 3)
#一般设置sigma2_gamma = 1 4.5
finetune = 1: 0.1 0.1 0.1 0.01 .5 * auto (0 or 1) : times, musigma2, rates, mixing, paras, FossilErr
#第一个数字为1就可以自动调整
print = 1
burnin = 2000
sampfreq = 2
nsample = 20000
*** Note: Make your window wider (100 columns) before running the program.
ndata
是数据分区,几个分区就写几。
seqtype
数据类型,自己选择。
usedata
这个先用3选项生成in.BV
,再用2使用in.BV
clock
分子钟,这个我觉得是越复杂越好,1固定速率分子种;2独立的互不干扰速率分子钟;3自动关联速率分子钟
(我从翻译上理解的意思),那肯定无脑3,默认也是3
RootAge
这个相当于一个树根的最远距离年代。
model
服!为啥它不把所有模型在mcmctree里面列出来,我找到了所有的,一共10个,一般我用第7个REV就是GTR模型。
图片截自 PAML MANUAL
虽然我每次都会选model
,但是仔细看了mcmctree才发现,如果使用usedata = 2
,model, alpha, ncatG
都不用设置了。
cleandata=0
意味着在似然性计算中将对齐间隙和模糊字符视为缺失数据,如果设置为1会删除数据中它认为低质量的序列。
BDparas
若输入有根树文件中的时间单位发生改变,则需要相应修改出生率和死亡率的值。例如,时间单位由100Myr变换为1Myr,则要设置成".01 .01 0.1"。
BDparas 来源参考连接,根据手册原文,也是调整节点密度的参数,虽然看不懂怎么调节,咱就用默认的100Myr。
kappa_gamma,alpha_gamma
这两个参数也是,如果咱们使用usedata = 2 or 3
就可以不用设置,他会计算,非常省事。
rgene_gamma
这个算是需要计算的,虽然我发现直接按照经验填写的差不多。
m和s来自baseml
结果
我不懂数学,但是我看怎么算α也不可能不等于1吧?β才会算是有点变化。
baseml baseml.ctl
关于这个m和s的计算是使用baseml
,计算方式就是先把树和矩阵先跑一个baseml
,这个baseml
非常简单,基本就是给它矩阵,树(需要在根部设置一个'@4.0'安全置根时间),模型就可以了。
跑完以后结果文件mlb
中,Substitution rate is per time unit
下面写的就是m&s的估值,取小数点两位就可以。
β=1/0.301806=3.31,那么rgene_gamma = 1 3.31
如果说rgene_gamma
还能算出来点什么,但是对于sigma2_gamma
,我表示绝望。
sigma2_gamma
我没有看到直接计算出来结果的方式,只是说了一下这个分布大概是什么样。
然后就推荐了使用指定对数正态分布替代率方差的先验,我觉得这说的没头没脑,怎么就推荐了
但是采用固定的对数正态分布替代率方差的先验,找到一个文献依据。
Ma, Y., Zhang, L., Lin, Y., Yu, D., Storey, K. B. & Zhang, J. (2023) Phylogenetic relationships and divergence dating of Mantodea using mitochondrial phylogenomics. Systematic Entomology, syen.12596.
这篇写的我还看的懂,就是说Tong 2015篇文章比较后,觉得选择对数正态分布替代率方差的先验更保守更符合化石标记的不确定性。
Tong, K. J., Duchêne, S., Ho, S. Y. W. & Lo, N. (2015) Comment on “Phylogenomics resolves the timing and pattern of insect evolution.” Science 349, 487–487.
我觉得有这两篇参考文献,在昆虫范围内使用sigma2_gamma = 1 4.5
应该可以的,有依据的。
最后一个参数finetune
,这个第一个参数就可以设置自动调整。auto (0 or 1) : times, musigma2, rates, mixing, paras, FossilErr。所以其余值我就只用默认值。
burnin
遗弃代数
sampfreq
抽样频率
nsample
最后结果代数
实际运行代数是抽样频率*最后结果代数,比如
最后执行
mcmctree mcmctree.ctl
mcmctree看似复杂,但是我一看beast我才吐血,那里面手动累死啊
参考
https://mp.weixin.qq.com/s/Av056mrqnLm8ok7z_Y4lTw
https://www.cnblogs.com/bio-mary/p/12818888.html