gffutils 是一个用来解析 gff 文件的 Python 包,可以十分方便地获取 gff 文件中的相关信息。gggenes 是 ggplot2 的扩展包,用于绘制基因结构图、多物种基因比较图的很好玩的工具。两个工具联用可以实现从 gff 数据获取到基因结构图绘制的全过程。

对 gff 原始数据进行处理

安装 gffutils

使用 conda 或者 pip 进行安装。

conda install gffutils

pip install gffutils

gff 文件预处理

对 gff 文件进行预处理,截取包含所需基因的 gff 内容。建议在 Linux 中使用 sed 命令完成。如果进行比较基因组工作,需要将各基因组数据合并到一个 gff 文件中。

程序调用

下载 gff2gggenes.py 到本地。

Windows 中利用 powershell 调用程序:

python .\gff2gggenes.py example.gff

python .\gff2gggenes.py example.gff sub

Linux 中利用 console 调用程序:

python ./gff2gggenes.py example.gff

python ./gff2gggenes.py example.gff sub

根据安装 Python 的版本不同,可能需要将“python”替换为“python3”。

不添加 sub 参数,表示只将各基因的情况进行输出;添加 sub 参数,表示同时输出各基因子区域(例如:mRNA、CDS等,与 gff 文件内容有关)。

结果输出

界面显示“完成”表示程序运行成功。csv 文件输出到工作路径中,文件名结尾是“_Gene.csv”或者“_SubGene.csv”。

利用 R 包 gggenes 进行可视化

gggene 安装

直接从 CRAN 安装:

install.packages("gggenes")

如果使用 rstudio 进行 R 工作,也可以在 package 中安装。

启用 ggplot2 和 gggene

可以在 rstudio 的包管理工具中开启,也可以使用以下代码:

library(ggplot2)

library(gggenes)

导入 python 程序生成的 csv 数据

geneData = read.csv('gene.csv')

用geom_gene_arrow()画基因箭头

ggplot(geneData, aes(xmin = start, xmax = end, y = molecule, fill = gene)) +

geom_gene_arrow() +

facet_wrap(~ molecule, scales = "free", ncol = 1) +

scale_fill_brewer(palette = "Set3")

(可选)用 theme_genes 美化图形

默认的图形不太美观,可以使用自带的 theme_genes() 进行美化。

ggplot(geneData, aes(xmin = start, xmax = end, y = molecule, fill = gene)) +

geom_gene_arrow() +

facet_wrap(~ molecule, scales = "free", ncol = 1) +

scale_fill_brewer(palette = "Set3") +

theme_genes()

使用 make_alignment_dummies() 跨面对齐基因

可以选择一个基因将所有数据进行对齐,在比较基因组时会用到。

dummies

geneData,

aes(xmin = start, xmax = end, y = molecule, id = gene),

on = "geneX"

)

ggplot(geneData, aes(xmin = start, xmax = end, y = molecule, fill = gene)) +

geom_gene_arrow() +

geom_blank(data = dummies) +

facet_wrap(~ molecule, scales = "free", ncol = 1) +

scale_fill_brewer(palette = "Set3") +

theme_genes()

用 geom_gene_label() 标记基因

geom_gene_label() 可以将标签文本放入基因箭头内,需要把基因名字所在的列名字映射到 label 属性。依赖于 ggfittext 包。

ggplot(

geneData,

aes(xmin = start, xmax = end, y = molecule, fill = gene, label = gene)

) +

geom_gene_arrow(arrowhead_height = unit(3, "mm"), arrowhead_width = unit(1, "mm")) +

geom_gene_label(align = "left") +

geom_blank(data = dummies) +

facet_wrap(~ molecule, scales = "free", ncol = 1) +

scale_fill_brewer(palette = "Set3") +

theme_genes()

查看基因子片段(subgene)

可以使用 geom_subgene_arrow() 突出显示子基因片段。此时,需要多调用另一个 csv 文件。

subGeneData = read.csv('subGene.csv')

ggplot(geneData, aes(xmin = start, xmax = end, y = molecule)) +

facet_wrap(~ molecule, scales = "free", ncol = 1) +

geom_gene_arrow(fill = "white") +

geom_subgene_arrow(data = subGeneData,

aes(xmin = start, xmax = end, y = molecule, fill = gene,

xsubmin = from, xsubmax = to), color="black", alpha=.7) +

theme_genes()

同时,也可以为基因子片段添加标签。

ggplot(geneData, aes(xmin = start, xmax = end, y = strand)

) +

geom_gene_arrow() +

geom_gene_label(aes(label = gene)) +

geom_subgene_arrow(

data = subGeneData, aes(xsubmin = from, xsubmax = to, fill = subgene)

) +

geom_subgene_label(

data = subGeneData, aes(xsubmin = from, xsubmax = to, label = subgene),

min.size = 0

)

python绘制基因结构图_从 gff 到 gggenes 绘制基因结构图相关推荐

  1. python绘制气象等值线图_气象要素场等值线图自动绘制

    气象要素场等值线图自动绘制 汤子东 ; 冯晓云 ; 郑明玺 ; 朱君松 ; 奚秀芬 [期刊名称] <气象科技> [年 ( 卷 ), 期] 2006(034)004 [摘要] 根据业务的特殊 ...

  2. python基因差异分析_玉米RNA-seq测序数据差异基因分析

    原标题:玉米RNA-seq测序数据差异基因分析 huanying今天给大家分享一个非常棒的玉米转录组的流程分析.原文作者是cxge,首发于omicshare论坛,阅读原文可跳转至本文的帖子哦~ 软件及 ...

  3. python画树递归_用递归的方式绘制小树_Python数据结构实战(1):递归(算法面试)_Python视频-51CTO学院...

    购买本课程后,可以加51CTO学院李宁老师官方交流群:550369460注意,该群只允许购买李宁老师课程的学员进行技术交流,加群时需要提供在51CTO购买李宁老师课程的订单编号(任何一个课程的订单编号 ...

  4. python画建筑分析图_教你用GH绘制酷炫的流线分析图 | 建筑学院

    教你用GH绘制酷炫的流线分析图 重要声明:这篇教程纯粹为绘图方法的介绍,其中的"人流数据"为YY而来的伪数据,没有真实性及可参考性,不可以作为科研方法!请相关课题的研究者使用合理的 ...

  5. python画建筑分析图_教你用GH绘制酷炫的流线分析图

    重要声明:这篇教程纯粹为绘图方法的介绍,其中的"人流数据"为YY而来的伪数据,没有真实性及可参考性,不可以作为科研方法!请相关课题的研究者使用合理的.正确的.实际的方法采集并分析数 ...

  6. python画spc控制图_【SPC控制图模板绘制】SPC控制图模板搭建和使用方法

    2014-10-24 [SPC控制图模板绘制]SPC控制图模板搭建和使用方法 关键词:SPC控制图 SPC控制图模板 spc 企业可以快速使用SPC控制图模板进行质量数据管理,并发现疑点.常用的SPC ...

  7. matlaba绘制gps星空图_网络图横道图绘制软件 5.0免锁版告别纯手工绘制,修改工作量大!...

    按图片加小编微信 今日资料会员专属 资料链接 链接:https://pan.baidu.com/s/1AZY3cPeEv72GBRfESIwk_w 提取码:88B8 安装教程: 1.下载压缩文件,解压 ...

  8. js 绘制泳道图_软件工程师,如何绘制业务架构图 — 4.流程图

    流程图,可以用来描述任何有顺序.有规则的活动过程. 流程图是业务架构三视图的最后一张,也是描写客户业务最为重要的一张架构图. 在企业管理的分析和设计中,主要涉及到的流程是业务流程与审批流程.流程是为达 ...

  9. 绘制三维散点图_使用Origin,轻松绘制三维散点图

    图文撰写 |Janeey Wang 介    绍 上面的图是不是特别熟悉,就像汽车的仪表盘.今天小编给大家来讲讲这种类型的仪表盘图.仪表盘图,是模拟汽车速度表盘的一种图表,可以用于反映完成率.增长率等 ...

最新文章

  1. Python Module — grpcio gRPC 远程调用示例程序
  2. IDEA中 30 秒生成 Spring Cloud Alibaba 工程
  3. C语言学习笔记(4)
  4. XML内部DTD约束 Day24
  5. SpringBoot 上传多个文件
  6. pb通过对象名称调用对象_域服务是命名空间,利用AD DS,通过对象名称可找到相关所有信息...
  7. 《深度学习》图像超分初识
  8. 【高效能人士的七个习惯】 第二部分 个人的成功:从依赖到独立(史蒂芬·柯维)...
  9. 比特币挖矿成本表_用算力趋势预测减半后比特币挖矿成本价
  10. BeanUtils工具类
  11. 外边距合并(HTML、CSS)
  12. 浏览器URL中 encodeURIComponent()加密和decodeURIComponent()解码
  13. hdu 5857 Median ★
  14. 2.Collection、Iterator迭代器、泛型、斗地主案例
  15. BBN: Bilateral-Branch Network with Cumulative Learning for Long-Tailed Visual Recognition
  16. 42道最新java开发常见面试题:JavaSE基础知识
  17. 你这一生还能陪妈妈几天?来看看
  18. 尼科彻斯定理(简单易懂)
  19. JS转换为数字的方法Number()、parseInt()和 parseFloat()
  20. mysql 未指定驱动程序_[ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序...

热门文章

  1. MySQL事务的幻读
  2. 互联网运营面试题_产品运营成长必修课:做好项目复盘
  3. (Java)关于泛型
  4. 深入理解Aho-Corasick自动机算法
  5. Jenkins持续集成环境之插件管理和角色管理
  6. 笔记 - Ali cloud ESC 简介
  7. JSTL 及 tablibs 的简单介绍和配置方法
  8. Oracle sql解析类型, 软解析和硬解析浅析
  9. opensuse 升级内核
  10. springMVC如何接收和发送json数据对象