Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >跟着Nature ecology&evolution学python:toytree模块画进化树

跟着Nature ecology&evolution学python:toytree模块画进化树

作者头像
用户7010445
发布于 2023-01-06 11:13:18
发布于 2023-01-06 11:13:18
63100
代码可运行
举报
运行总次数:0
代码可运行

论文

Replicated radiation of a plant clade along a cloud forest archipelago

https://www.nature.com/articles/s41559-022-01823-x#data-availability

数据代码链接

https://zenodo.org/record/5504439#.YtpqTXZBzic

https://github.com/eaton-lab/Oreinotinus-phylogeny

论文里提供了几乎所有数据和代码,要好好学习一下这篇论文

今天推文的主要内容是重复其中 Extended Data Fig. 1 ,不对绘图代码进行仔细研究了,知道python里有一个 toytree的模块可以展示进化树,看了代码,应该是不如ggtree好用 帮助文档链接 https://toytree.readthedocs.io/en/latest/3-installation.html

github主页链接https://github.com/eaton-lab/toytree

还有一个模块是ipyrad,用来做群体遗传分析,帮助文档链接 https://ipyrad.readthedocs.io/en/master/

完整的作图代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import toytree
import pandas as pd
fulldata = pd.read_csv("../Oreinotinus-phylogeny-main/Raw_data/oreinotinus_samples_database.csv")
colors = pd.read_csv("../Oreinotinus-phylogeny-main/Raw_data/oreinotinus_color_codes.csv")
sdata = fulldata[["NameInAssembly","Lastest_SP_name", "Num_for_Publication", "UltimateName"]]

namedict = {}
for i in range(sdata.shape[0]):
    if sdata.iloc[i, 2]:
        number = " (" + str(sdata.iloc[i, 2]) + ")"
    else:
        number = ""
    namedict[sdata.iloc[i, 0]] = f"V. {sdata.iloc[i, 1]}{number}"
        

# load color data and put in a dictionary
colordata = colors[["Species","Color"]]
colordict = {colordata.iloc[i, 0]: str(colordata.iloc[i, 1]) for i in range(colordata.shape[0])}

treeFile = "../Oreinotinus-phylogeny-main/Analyses/Individual-level-tree-reconstruction/analysis-raxml/RAxML_bipartitions.fulldataset_withAyava_10scaff_mcov025_rmcov01_mar2021"
tre = toytree.tree(treeFile)

rtre = tre.root(wildcard="dentatum")

# do some rotations to fit with geo
for i in [309,262,251,252,239,233]:
    rtre.idx_dict[i].children.reverse()
    rtre._coords.update()

# set new names
labels_updated = [namedict[i] for i in rtre.get_tip_labels()]
color_labels = []

# set color base on leaf form
for i in labels_updated:
    result = "Black"
    for key, item in colordict.items():
        if i.find(key) > -1:
            result = item
    color_labels.append(result)

# collapse weak supported nodes
# rtre = rtre.collapse_nodes(min_support=75)

# define threshold
support_value_threshold = 84

# plot the tree
canvas, axes, marks = rtre.draw(
    height=1800, width=600, 
    use_edge_lengths=True,
    tip_labels_align=True,
    tip_labels_style={"font-size": "12px"},
    tip_labels=labels_updated,
#     tip_labels_colors=color_labels,
    node_sizes=[5 if i else 0 for i in rtre.get_node_values()],
    node_colors=['black' if (i and int(i) > support_value_threshold) else 'white' for i in rtre.get_node_values('support', 1, 1)],
#     node_colors=colors,
    node_style={"stroke": "black", "stroke-width": 1},
#     node_labels="support"
    node_labels=['' if (i and int(i) > support_value_threshold) else i for i in rtre.get_node_values('support', 1, 0)],
    node_labels_style= {
        "-toyplot-anchor-shift": "10px",
        "baseline-shift": "0px",
        "text-shadow": "0.5px 0.5px #fff, -0.5px 0.5px #fff, 0.5px -0.5px #fff, -0.5px -0.5px #fff",
        "fill": "#000",
        "font-size": 8,
    },
#     node_labels="idx",
);
import toyplot.pdf
toyplot.svg.render(canvas, "./RAxML_bipartitions.fulldataset_withAyava_10scaff_mcov025_rmcov01_mar2021.svg")

保存的是svg格式,试了下保存pdf,遇到了报错,暂时不知道什么原因

最终结果

输出结果太长,就不在这里截图展示了

示例数据和代码可以自己到论文中获取

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 绘制惊艳的桑基图
很多时候,我们需要一种必须可视化数据如何在实体之间流动的情况。例如,以居民如何从一个国家迁移到另一个国家为例。这里演示了有多少居民从英格兰迁移到北爱尔兰、苏格兰和威尔士。
数据STUDIO
2022/02/24
2K0
Python 绘制惊艳的桑基图
跟着Nature ecology and evolution学python:vcf文件转换成fasta文件
https://www.nature.com/articles/s41559-022-01753-8
用户7010445
2023/01/06
8710
跟着Nature ecology and evolution学python:vcf文件转换成fasta文件
iTOL快速绘制颜值最高的进化树!
大家在看高分文章时,总会惊叹于,为什么人家能做出那么好看而且高大上的系统发育树,而且好看的图也能直接提升文章的档次,冲击高分文章。人家的树不管是从配色还是各种注释信息都让人无可挑剔,而你每次花了半个月时间做的进化树不是被老板嫌弃配色丑,就是太单调,没有各种辅助的注释信息。然后你默默捧起别人的文章学习时发现他们绝大部分都是用iTOL这个在线工具来进行的系统发育树的美化的。
生信宝典
2018/12/27
6.6K1
iTOL快速绘制颜值最高的进化树!
跟着Nature Communications学作图:R语言ggtree绘制进化树
A highly conserved core bacterial microbiota with nitrogen-fixation capacity inhabits the xylem sap in maize plants
用户7010445
2023/01/06
1.3K0
跟着Nature Communications学作图:R语言ggtree绘制进化树
跟着Nature Plants学作图:R语言ggtree包展示进化树
https://www.nature.com/articles/s41477-022-01146-6#Sec44
用户7010445
2022/05/23
3.5K0
跟着Nature Plants学作图:R语言ggtree包展示进化树
Nature | 5月14日新发表:空间转录组文章复现(三)
今天我们接着复现上周分享的文章《Spatial transcriptomics reveals human cortical layer and area specification》Figure3的内容,Figure3展示了动态变化的皮层层级基因表达。
天意生信云
2025/06/08
300
Nature | 5月14日新发表:空间转录组文章复现(三)
ETE构建、绘制进化树
ETE能做什么 A Python framework for construction, analysis and visualization of trees. 安装和使用 conda安装 # Install Minconda (you can ignore this step if you already have Anaconda/Miniconda) wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -
生信宝典
2018/02/05
3.7K0
使用Y叔神包ggtree进行基因家族基因进化树构建
大家好,我是技能树的老朋友啦,三年前在群主的第一波RNA-seq入门8步活动中因为表现优异获得群主青睐成为技能树VIP一员,也开启了自己的学习经验分享人生!
生信技能树
2019/08/02
9.1K1
使用Y叔神包ggtree进行基因家族基因进化树构建
科研绘图系列:python语言绘制SCI图合集
生信学习者
2025/01/13
900
科研绘图系列:python语言绘制SCI图合集
跟着Nature Plants学作图:R语言ggplot2画分组折线图和置信区间
https://www.nature.com/articles/s41477-022-01146-6#Sec44
用户7010445
2022/05/23
1.5K0
跟着Nature Plants学作图:R语言ggplot2画分组折线图和置信区间
跟着NatureGenetics学作图:R语言ggplot2做进化树图及添加不同形状的背景色块
https://www.nature.com/articles/s41588-022-01127-7#Sec31
用户7010445
2023/01/06
1.6K0
跟着NatureGenetics学作图:R语言ggplot2做进化树图及添加不同形状的背景色块
跟着Nature学作图:R语言ggtree给进化树的节点添加饼状图
https://www.nature.com/articles/s41586-022-04897-6
用户7010445
2023/01/06
7160
跟着Nature学作图:R语言ggtree给进化树的节点添加饼状图
基于python的scanpy模块的乳腺癌单细胞数据分析
这次我们来复现一篇单细胞的文章。这篇我们只来复现细胞图谱和拟时序分析 像细胞通讯,还有富集分析还是很简单的。大家可以继续走下去,然后我们来交流讨论! 这篇全篇基于python复现。
生信技能树
2021/10/12
4K1
这40个Python可视化图表案例,强烈建议收藏!
不过有些小伙伴也会遇到不少问题,比如选择何种图表,以及如何制作,代码如何编写,这些都是问题!
小F
2021/09/14
4.4K0
Python 爬取链家成都二手房源信息 asyncio + aiohttp 异步爬虫实战
编辑 | JackTian 来源 | 杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(微信ID:Hc220066)
杰哥的IT之旅
2020/09/28
7770
Python 爬取链家成都二手房源信息 asyncio + aiohttp 异步爬虫实战
Python数据分析实战(1) 成都土地市场分析
土地市场数据一般会公示在当地的公共资源交易中心,但经常会出现只公示当周或当月数据的情况,因此,我们得去找专业的土地网站获取交易数据。比如土流网:https://www.tudinet.com/market-0-0-0-0/
叶庭云
2020/09/17
1.1K0
Python数据分析实战(1)   成都土地市场分析
Python 因果推断(上)
这本书是使用 Python 进行因果推断的实用指南。我解释了出现在经济学最负盛名的期刊,如《美丨国经济评论》和《计量经济学》中的方法和技术。
ApacheCN_飞龙
2024/01/31
7910
Python 因果推断(上)
数据可视化基础与应用-07-数据可视化第二版各种类型图表的绘制优化版
本系列博客为基于《数据可视化第二版》一书的教学资源博客。本文主要是第6章,比较与排序可视化的案例相关。
IT从业者张某某
2024/04/03
4410
数据可视化基础与应用-07-数据可视化第二版各种类型图表的绘制优化版
Python 数学应用(二)
在本章中,我们将讨论随机性和概率。我们将首先通过从数据集中选择元素来简要探讨概率的基本原理。然后,我们将学习如何使用 Python 和 NumPy 生成(伪)随机数,以及如何根据特定概率分布生成样本。最后,我们将通过研究涵盖随机过程和贝叶斯技术的一些高级主题,并使用马尔可夫链蒙特卡洛方法来估计简单模型的参数来结束本章。
ApacheCN_飞龙
2024/05/24
4030
Python 数学应用(二)
推荐阅读
相关推荐
Python 绘制惊艳的桑基图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验