genome comparison commend 2 MCMCtree
仅本人练习使用!!后续会逐渐修改!!
mcmctree估算物种分歧时间 - 简书
https://www.cnblogs.com/bio-mary/p/12818888.html
估算系统树分歧时间 —— paml.mcmctree,r8s | 生信技工
http://www.chenlianfu.com/?p=2948
4. 使用PAML软件的mcmctree进行物种分歧时间计算
# 新建文件夹并进入
mkdir d.divergence_time && cd d.divergence_time
seqfile:orthofinder中得到的SpeciesTreeAlignment.fasta文件,将物种数和碱基数(碱基数将SpeciesTreeAlignment.fasta文件导入TBtools,统计每条序列的碱基数即可)加在每条序列的前面一行,且序列间间隔一行;
treefile:orthofinder中SpeciesTreeAlignment.fasta序列用raxml软件跑出的最优树(RAxML_bestTree.jjh_1.tre),将后缀改为“trees”,并在文件第一行加上物种数目和树的数目,先按照上面程序跑一下,终端中会出现一个reading master tree,然后手动粘贴出来为trees文件,在其中加上几个校准点(在timetree中查询),添加格式参照参考网址。
TimeTree :: The Timescale of Life
另外,一定要注明外群的校准点和外群之外的校准点。开头和结尾不用补括号。想看校准点位置加的是否正确可以在Figtree中查看。
mcmctree.ctl:路径输入时,直接右键复制该文件,粘贴在终端里即可
(1) 准备Newick格式的树文件,根据RAxML的结果提取系统发育树的拓扑结构
按照paml4.9i/examples中的mcmctree.ctl文件配置自己的数据文件在JJHdata中,主要是seq文件和tree文件,具体格式参照给出文件。
echo "97 1" > input.trees
# 文件内容分两行:第一行表述树中有97个物种,共计1个树,两个数值之间用空分割;
# 第二行则是Newick格式树信息,其中包含有校准点信息。校准点信息一般指95%HPD(Highest Posterior Density)对应的置信区间;校准点单位是100MYA(软件说明文档中使用该单位,也推荐使用该单位,若使用其它单位,后续配置文件中的相关参数也需要对应修改)。此外,Newick格式的树尾部一定要有分号,没有的话程序可能不能正常运行
# echo "(((laame,plost),(parub,sccit)'>0.76<1.08')'>2.29<2.66',(lasul,phgig));" >> input.trees
# Paxillus rubicundulus <=> Scleroderma citrinum 89MYA 76-108MYA
# Paxillus rubicundulus <=> Laccaria amethystina 246MYA 229-266MYA
# Hymenochaetaceae 125Mya Agaricales-90Mya Agaricomycetes-290Mya Basidiomycota-400Mya
# 把iqtree/raxml-ng等建树软件中得到的树文件中的支持率和枝长信息删除,添加化石校准点时间信息(格式是时间范围’>0.23<0.26’或者时间点‘@0.245’),单位时百万年前100Ma;再在首行添加两个数字(物种数量和树的数量),空格隔开,可得到input.tre文件。
手动添加,并用Figtree检验
1(JJH) Rickenella <=> Sanghuangporus 227–277Mya
2(JJH) Trametes <=> Heterobasidion 187–236Mya
3(JJH) Pleurotus <=> Schizophyllum 110–201Mya
4(other) Laccaria bicolor <=> Coprinopsis cinerea 120–180Mya
(2) 准备多序列比对Phylip格式输入文件,可以综合三个位点核酸序列的多序列比对文件
/media/aa/DATA/JJH/software/standard-RAxML-master/usefulScripts/convertFasta2Phylip.sh ../c.species_tree/allSingleCopyOrthologsAlign.Codon.fasta > input.txt
perl -p -i -e 's/\s+/ /' input.txtecho $(cat ../c.species_tree/allSingleCopyOrthologsAlign.Codon.fasta) |sed "s/ >/\n/g" |sed "s/>//g"|sed "s/ / /g" >input2.phy
(3) 准备paml mcmctree配置文件
(JJH) ndata = 1; seqtype = 2; burnin = 1,000,000; sampfreq = 10; nsample = 500,000.
# 软件自带测试数据是3组数据,而我们的数据只有一组!
# 修改mcmctree.ctl
seqfile = input.txt
treefile = input.trees
mcmcfile = mcmc.txt
outfile = out.txt
ndata = 1 # 输入的多序列比对的数据个数,这里密码子3个位置的数据;如果有一个,则设置为1
seqtype = 0 * 0: nucleotides; 1:codons; 2:AAs #数据类型
usedata = 3 * 0: no data; 1:seq like; 2:normal approximation; 3:out.BV (in.BV) # 设置是否利用多序列比对的数据:
#0,表示不使用多序列比对数据,则不会进行likelihood计算,虽然能得到mcmc树且计算速度飞快,但是其分歧时间结果是有问题的;
#1,表示使用多序列比对数据进行likelihood计算,正常进行MCMC,是一般使用的参数;
#2,进行正常的approximation likelihood分析,此时不需要读取多序列比对数据,直接读取当前目录中的in.BV文件。该文件是使用usedata = 3参数生成的out.BV文件重命名而来的。
#此外,由于程序BUG,当设置usedata = 2时,一定要在改行参数后加 *,否则程序报错 Error: file name empty..
#3,程序利用多序列比对数据调用baseml/codeml命令对数据进行分析,生成out.BV文件。由于mcmctree调用baseml/codeml进行计算的参数设置可能不太好(特别时对蛋白序列进行计算时),
#推荐自己修该软件自动生成的baseml/codeml配置文件,然后再手动运行baseml/codeml命令,再整合其结果文件为out.BV文件。
clock = 2 * 1: global clock; 2: independent rates; 3: correlated rates
RootAge = '<8.0' * safe constraint on root age, used if no fossil for root.
model = 4
alpha = 0.5
ncatG = 5
burnin = 4000000 #将前x次迭代burnin后,再进行取样(即打印出该次迭代计算的结果信息,各内部节点分歧时间、平均进化速率、sigma2值和各分支进化速率等)
sampfreq = 10 #每10次迭代则取样一次。
nsample = 100000 # 当取样次数达到该次数时,则取样结束(程序也将运行结束)。
(4) 运行PAML软件的mcmctree (若数据量较大,则每当程序调用baseml时,按ctrl + c终止,再手动并行化运行baseml)
# 进入conda环境
conda activate FigTree
# 运行
mcmctree mcmctree.ctl
cp out.BV in.BV
(5) 使用mcmctree进行approximate likelihood分析
# 配置文件中参数 usedata = 2,再次运行同样的mcmctree命令
# 新建文件夹
mkdir run01 run02
cp input.txt input.trees mcmctree.ctl in.BV run01
cp input.txt input.trees mcmctree.ctl in.BV run02
cd run01; mcmctree mcmctree.ctl &> mcmctree.log
cd run02; mcmctree mcmctree.ctl &> mcmctree.log
(7) 比较两次运行的MCMC树,若差异较小,则认可其结果
perl -n -e 'my $out; while (s/(.*?(\d\.\d+))//) { my $info = $1; my $value = $2; my $new = $value * 100; $info =~ s/$value/$new/; $out .= $info; } $out .= $_; print $out' run01/FigTree.tre > tree01.nex
perl -n -e 'my $out; while (s/(.*?(\d\.\d+))//) { my $info = $1; my $value = $2; my $new = $value * 100; $info =~ s/$value/$new/; $out .= $info; } $out .= $_; print $out' run02/FigTree.tre > tree02.nex
perl -e 'while (<>) { if (s/\s*UTREE.*?=\s*//) { s/\s*\[.*?\]//g; print; } }' tree01.nex > tree01.txt
perl -e 'while (<>) { if (s/\s*UTREE.*?=\s*//) { s/\s*\[.*?\]//g; print; } }' tree02.nex > tree02.txt
/media/aa/DATA/DATA/SZQ2/command/clf/bin/calculating_branchLength_bias_percentage_of_two_trees.pl --no_normalization_of_total_branch_length tree01.txt tree02.txt > bias_of_2runs.txt
# 1.41% 0.77% 0.77%
rm tree*
perl -n -e 'my $out; while (s/(.*?(\d\.\d+))//) { my $info = $1; my $value = $2; my $new = $value * 100; $info =~ s/$value/$new/; $out .= $info; } $out .= $_; print $out' run01/FigTree.tre > tree_abbr.mcmctree
(8) 将树信息中的简称换成属名和种名全称(选做)
cp tree_abbr.mcmctree tree_fullName.mcmctree
cut -f 1,2 ../a.preparing_data/source.txt | perl -p -e 's/\t/\t\"/; s/$/\"/;' | perl -p -e 's#\s+#/#; s#^#perl -p -i -e "s/#; s#\n$#/" tree_fullName.mcmctree\n#;' | perl -p -e 's#/\"#/\\\"#; s#\"/#\\\"/#;' | sh
java -jar /opt/biosoft/FigTree_v1.4.4/lib/figtree.jar tree_fullName.mcmctree
cd ..
最后利用chiplot作图
地质时间标尺网站:https://energyeducation.ca/encyclopedia/Geologic_time_scale
相关文章:
genome comparison commend 2 MCMCtree
仅本人练习使用!!后续会逐渐修改!! mcmctree估算物种分歧时间 - 简书 https://www.cnblogs.com/bio-mary/p/12818888.html 估算系统树分歧时间 —— paml.mcmctree,r8s | 生信技工 http://www.chenlianfu.com/?p2948 4. 使用PAM…...

Linux安装JenkinsCLI
项目简介安装目录 mkdir -p /opt/jenkinscli && cd /opt/jenkinscli JenkinsCLI下载 wget http://<your-jenkins-server>/jnlpJars/jenkins-cli.jar # <your-jenkins-server> 替换为你的 Jenkins 服务器地址 JenkinsCLI授权 Dashboard-->Configure Glob…...

Midjourney学习(一)prompt的基础
prompt目录 sd和mj的比较prompt组成风格表现风格时代描述表情色彩情绪环境 sd和mj的比较 自从去年9月份开始,sd就变得非常或火,跟它一起的还有一个midjourney。 他们就像是程序界的两种模式,sd是开源的,有更多的可能性更可控。但是…...

12 权重衰退
过拟合的应对方法——weight_decay 权重衰退是最广泛使用的正则化方法之一。 模型容量受参数个数和参数范围影响,通过L2正则项限制w的取值范围,权重w每次更新乘以小于1的数,w的数值范围不会太大,从而降低模型复杂度,…...
简化测试流程,提供卓越服务:TestComplete+Salesforce满足不断发展的企业的需求
2015年,一群前Salesforce员工发现了病毒防护市场中的一个空白:Salesforce不会对文档进行威胁扫描。为了填补这一空白,他们创建了一个平台,并以该平台作为中心帮助公司保护所有的企业云SaaS系统,使其免受威胁。这个平台…...

kafka 命令脚本说明以及在java中使用
一、命令行使用 1.1、topic 命令 1、关于topic,这里用window 来示例 bin\windows\kafka-topics.bat2、创建 first topic,五个分区,1个副本 bin\windows\kafka-topics.bat --bootstrap-server localhost:9092 --create --partitions 5 --replication-factor 1 -…...

Qt应用开发(基础篇)——文件选择对话框 QFileDialog
一、前言 QFileDialog类继承于QDialog,提供了一个允许用户选择文件或目录的对话框。 对话框窗口 QDialog QFileDialog文件选择对话框允许用户在当前文件系统中选择一个或者多个文件或者文件路径,使用静态函数创建是很简便的方式,比如…...

图像OCR转文字,验证码识别技术太疯狂-UI软件自动化
现在用PYTHON识别图片文字,PaddleOCR,Tesseract,Opencv等很多开源技术。知识大爆炸年代,几年不学习就跟不上时代了。 以前早的时候一个验证码图片上有4个不同颜色字符,带一些杂点,我写点代码按颜色最多的进行提取&…...

Docker:自定义镜像
(总结自b站黑马程序员课程) 环环相扣,跳过部分章节和知识点是不可取的。 一、镜像结构 镜像是分层结构,每一层称为一个Layer。 ①BaseImage层:包含基本的系统函数库、环境变量、文件系统。 ②Entrypoint࿱…...
【Nginx22】Nginx学习:FastCGI模块(四)错误处理及其它
Nginx学习:FastCGI模块(四)错误处理及其它 FastCGI 最后一篇,我们将学习完剩下的所有配置指令。在这里,错误处理还是单独拿出来成为一个小节了,而剩下的内容都放到其它中进行学习。不要感觉是其它的就没用了…...
轮毂电机单位换算-米每秒/转每分
先前写了一篇度/S和RPM的关系 这次补全一点 假设轮毂电机直径20CM 0.2M 周长为0.628M 0.2*3.14 轮子转一圈走0.628M 1RPM的单位是转/分 换成转/S 就除以60 也就是轮子转一圈的速度0.628/60 m/S 0.010467m/S 所以换算如下: 1RPM0.010467 m/S 那么1m/S1/(0.010467) RPM95.5RPM 如…...

博流RISC-V芯片BL616开发环境搭建
文章目录 1、工具安装2、代码下载3、环境变量配置4、下载交叉编译器5、编译与下载运行6、使用ninja编译 本文分别介绍博流RISC-V芯片 BL616 在 Windows和Linux 下开发环境搭建,本文同时适用BL618,BL602,BL702,BL808系列芯片。 1、…...

Weblogic漏洞(三)之 Weblogic 弱口令、任意文件读取漏洞
Weblogic 弱口令、任意文件读取漏洞 环境安装 此次我们实验的靶场,是vnlhub中的Weblogic漏洞中的weak_password靶场,我们 cd 到weak_password,然后输入以下命令启动靶场环境: docker-compose up -d输入以下的命令可以查看当前启…...

15 mysql tiny/meidum/long blob/text 的数据存储
前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 tiny/medium/long blob/text 类…...

【方案】基于视频与AI智能分析技术的城市轨道交通视频监控建设方案
一、背景分析 地铁作为重要的公共场所交通枢纽,流动性非常高、人员大量聚集,轨道交通需要利用视频监控系统来实现全程、全方位的安全防范,这也是保证地铁行车组织和安全的重要手段。调度员和车站值班员通过系统监管列车运行、客流情况、变电…...
mysql8 修改数据存储位置
1、停止MySQL服务 systemctl stop mysqld2、复制现有的数据库目录到新的位置 默认情况下,MySQL的数据库目录位于/var/lib/mysql。假设您想将数据库目录更改为/home/mysql,您可以使用以下命令来复制数据库目录 cp -R /var/lib/mysql /home/mysql3、修改…...
Qt QSlider样式
滑块控件QSlider,如果设置的垂直样式,其进度颜色和剩余颜色,刚好和横向样式的颜色相反的,不确定这个是否是Qt的BUG,Qt456都是这个现象 QSlider::groove:horizontal{ height:8px; background:#FF0000; }QSlider::add-p…...

Redis五大数据类型
Redis五大数据类型 Redis-Key 官网:https://www.redis.net.cn/order/ 序号命令语法描述1DEL key该命令用于在 key 存在时删除 key2DUMP key序列化给定 key ,并返回被序列化的值3EXISTS key检查给定 key 是否存在,存在返回1,否则返…...

chatGPT训练过程
强化学习基础 强化学习是指智能体在不确定环境中最大化其获得的奖励从而达到自主决策的目的。其执行过程为:智能体依据策略决策从而执行动作,然后感知环境获取环境的状态,进而得到奖励(以便下次再到相同状态时能采取更优的动作),…...
原神角色数据分析项目说明文档
---项目涉及--- 前端html语言,flask框架,excel,MySQL,DataFrame数组,numpy,pyecharts ---实现方式--- 将所有角色数据存储在excel表格中,在需要时读取,当用户想要查看某一项时&…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...

【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...

工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...

【Linux】使用1Panel 面板让服务器定时自动执行任务
服务器就是一台24小时开机的主机,相比自己家中不定时开关机的主机更适合完成定时任务,例如下载资源、备份上传,或者登录某个网站执行一些操作,只需要编写 脚本,然后让服务器定时来执行这个脚本就可以。 有很多方法实现…...
第21节 Node.js 多进程
Node.js本身是以单线程的模式运行的,但它使用的是事件驱动来处理并发,这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能。 每个子进程总是带有三个流对象:child.stdin, child.stdout和child.stderr。他们可能会共享…...
LeetCode第244题_最短单词距离II
LeetCode第244题:最短单词距离II 问题描述 设计一个类,接收一个单词数组 wordsDict,并实现一个方法,该方法能够计算两个不同单词在该数组中出现位置的最短距离。 你需要实现一个 WordDistance 类: WordDistance(String[] word…...