谁说Python不能绘制环形基因组图?快看这个..

2023-10-24 14:54:41 浏览数 (1)

前言

今天是我的可视化课程上线的第210天,目前学员408人,每篇原创公众号都会记录这个人数,用来督促和激励我的原创内容。目前课程的主要方向是 科研、统计、地理相关的学术性图形绘制方法,后续也会增加商务插图、机器学等、数据分析等方面的课程。

参与课程的你将获取到:学员答疑、可视化资源分享、可视化技巧补充、可视化业务代做(学员和甲方对接)、副业交流、提升认知等等。

pyCircos可视化包推荐

Circos 是可视化基因组相似性和特征的最流行软件之一。不过,它的执行过程比较复杂,需要多个原始配置文件才能实现可视化。此外,Circos 是用 Perl 编写的,这限制了它与其他生物分析软件的整合。

另一方面,Python 已被用于各种生物软件包。因此,结合这些软件包,研究人员可以完成大部分所需的分析工作。然而,尽管 Circos 软件已经开发了十多年,Python 却缺少绘制 Circos 图的库。在此,我们提供了一个基于 Python Matplotlib 的环形基因组可视化软件包-pyCircos。用户只需指定注释序列文件(如 GenBank 文件),就能方便快捷地可视化基因组特征和比较基因组分析结果。

  • 安装方式

pyCircos可通过如下语句进行快速安装(建议)。

代码语言:javascript复制
pip install python-circos

如果想安装开发版本,则使用如下语句:

代码语言:javascript复制
pip install git https://github.com/ponnhide/pyCircos.git
  • 案例教程
  1. 案例01
代码语言:javascript复制
#linkplot
#heatmap
values_all   = [] 
arcdata_dict = collections.defaultdict(dict)
with open("sample_data/example_data_links.csv") as f:
    f.readline()
    for line in f:
        line  = line.rstrip().split(",")
        name1  = line[0]     
        start1 = int(line[1])-1
        end1   = int(line[2])
        name2  = line[3]     
        start2 = int(line[4])-1
        end2   = int(line[5])
        source = (name1, start1, end1, 615)
        destination = (name2, start2, end2, 615)
        circle.chord_plot(source, destination, facecolor=circle.garc_dict[name1].facecolor)
  1. 案例02
代码语言:javascript复制
#Plot GCskew
import copy
skews = garc.calc_nnskew(n1="G", n2="C")  
positive_skews=copy.deepcopy(skews)
positive_skews[skews<0]=0
negative_skews=copy.deepcopy(skews)
negative_skews[skews>=0]=0
gcircle.fillplot("NC_000913", positive_skews, rlim=(min(skews),max(skews)), base_value=0, raxis_range=(400,700), facecolor="r")
gcircle.fillplot("NC_000913", negative_skews, rlim=(min(skews),max(skews)), base_value=0, raxis_range=(400,700), facecolor="b")
  1. 案例03
代码语言:javascript复制
import collections
chord_dict = collections.defaultdict(list)
with open("sample_data/segdup.txt","r") as f:
    for line in f:
        line          = line.rstrip().split("t")
        chord_dict[line[0]].append((line[1], int(line[2]), int(line[3]), 700)) 
        
for key in chord_dict:
    gcircle.chord_plot(chord_dict[key][0], chord_dict[key][1], facecolor="#ff8c0080")

更多关于pyCircos包的介绍和案例,读者可参考:pyCircos官网[1]。

当然,你也可以使用功能更加强大的pyCirclize拓展包。

如何快速的掌握论文中的绘图技巧?

在科研论文撰写过程中,可视化配图的绘制也非常重要,那么如何快速的掌握科研绘图技巧?笔者给大家列举了以下几点:

  • 学习基本工具和软件: 先熟悉常用的科研绘图工具和软件,例如Python或者R语言等,选择一款适合你的工具。
  • 参考教程和指南: 在线教程、视频教程和指南是学习的好资源。
  • 模仿和实践: 查看优秀的科研绘图范例,模仿它们的风格和技巧。同时,勤练手,多做练习,实践是提高技能的关键。
  • 了解图表类型和用途: 了解不同类型的科研图表,例如折线图、柱状图、散点图等,以及它们在传达信息方面的优缺点。
  • 注重细节和清晰性: 细节决定成败,确保图表的字体清晰、线条精细、标签明了,避免视觉混乱。
  • 遵循学术规范: 遵循学术期刊或机构对图表的规定和要求,包括字体大小、图表标题、坐标轴标签等。
  • 请教专家或同事: 有条件的同学可以跟随一个大佬进行系统学习,向他们寻求指导和建议,可以加速你的学习过程。

这里笔者建议,在资金允许的前提下,可以报名一个长期有效的可视化课程,别报名那种合集资料、没后期服务的课程。建议参加那种作者本人录制视频、有详细代码和数据、有后期服务、有观课平台(如果这个都没有,真的不建议大家购买,说的再好都不要购买)。如果课程持续更新的最好,最好课程本人有一定影响力(比如出书或者大V),那样自己的权益也会受到保障。感兴趣的读者可以看下我们自己的课程介绍,可视化系列课程推文。完美满足我说的那几个条件····

系统学习可视化

当然,在学习数据可视化的道路上,你也有很多问题得不到解答,也可以加入我们的可视化课程(可视化系列课程推文)后,在学员群里和大家一起谈论,一起进步,或者直接向我提问。如果我觉得你的问题很具有普适性,我会把它写成文章发布在公众号上,让更多人看到,有关我们数据可视化系列课程的服务内容,可以参考下面的 阅读原文。

猜你喜欢

这种图太多人问了,绘制方法真的很简单..

不是,这封面图这么多人问的吗?教程来了

不用Seaborn,这个工具也能绘制超炫的统计图形···

NetworkX,网络结构图最强绘制工具·····

所有科研地理图形它都有,这个工具有点猛····

Nature、Science配图可以一键绘制?!我懵了···

节后第一天,就因为论文配图,被导师怼了一上午·····

plotnine,打死不学R语言, 我可以用Python到40岁.....

TUEplots,一天100张论文配图,导师惊了···

参考资料

[1]

pyCircos官网: https://github.com/ponnhide/pyCircos。

0 人点赞