i18928471899的个人博客分享 http://blog.sciencenet.cn/u/i18928471899

博文

技术贴 | R语言:绘制基因组基因箭头图

已有 3180 次阅读 2021-5-3 12:07 |系统分类:科研笔记

本文由微科盟阿童木根据实践经验而整理,希望对大家有帮助。

原创微文,欢迎转发转载。


举例介绍如何用R语言gggenes函数包把基因预测得到的gff或gtf文件(含基因位置信息)中的基因类型、位置可视化到图中。


注意:

R version >= 3.6

gggenes依赖的ggfittext需要R 3.6以上,导致我用R 3.4.1安装gggenes失败。后来改用R 3.6.1成功安装。

 

Linux conda安装R 3.6

conda install -c r r=3.6


一, 输入数据

 

1. 基因组-基因-方向


library(ggplot2)
library(gggenes)
data(example_genes)
head(example_genes)


图片

图1

 

2 基因组-基因-亚基因


head(example_subgenes)


图片

 图2

一、画基因箭头图


1 基础绘图


ggplot(example_genes, aes(xmin = start, xmax = end, y = molecule, fill = gene)) +
  geom_gene_arrow() +
  facet_wrap(~ molecule, scales = "free", ncol = 1) +
  scale_fill_brewer(palette = "Set3")


图片

图3

 

2. 去掉背景


 方法:theme_genes()

ggplot(example_genes, 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()


图片

图4

3. 按geneE对齐

 

方法:make_alignment_dummies()

dummies <- make_alignment_dummies(
  example_genes,
  aes(xmin = start, xmax = end, y = molecule, id = gene),
  on = "genE"
)

ggplot(example_genes, 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()


图片

图5

 

4. 按设置箭头形状

方法:geom_gene_label()


ggplot(example_genes, 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()


图片

图6


5. 控制箭头方向


example_genes$direction <- ifelse(example_genes$strand == "forward"1, -1)
ggplot(
  subset(example_genes, molecule == "Genome1"),
  aes(xmin = start, xmax = end, y = strand, fill = gene, forward = direction)
  ) +
  geom_gene_arrow() +
  theme_genes()


图片

图7


ggplot(example_genes, aes(xmin = start, xmax = end, y = molecule, fill = gene, forward = direction)) +
    geom_gene_arrow() +
    facet_wrap(~ molecule, scales = "free", ncol = 1) +
    scale_fill_brewer(palette = "Set3") +
theme_genes()

图片

图8

6. 标记亚基因位置

方法:geom_subgene_arrow()


ggplot(example_genes, aes(xmin = start, xmax = end, y = molecule)) +
  facet_wrap(~ molecule, scales = "free", ncol = 1) +
  geom_gene_arrow(fill = "white") +
  geom_subgene_arrow(data = example_subgenes,
    aes(xmin = start, xmax = end, y = molecule, fill = gene,
        xsubmin = from, xsubmax = to), color="black", alpha=.7) +
  theme_genes()


图片

图9

7. 标记某基因组中某基因的亚基因位置

方法:geom_subgene_label()


ggplot(subset(example_genes, molecule == "Genome4" & gene == "genA"),
       aes(xmin = start, xmax = end, y = strand)
  ) +
  geom_gene_arrow() +
  geom_gene_label(aes(label = gene)) +
  geom_subgene_arrow(
    data = subset(example_subgenes, molecule == "Genome4" & gene == "genA"),
    aes(xsubmin = from, xsubmax = to, fill = subgene)
  ) +
  geom_subgene_label(
    data = subset(example_subgenes, molecule == "Genome4" & gene == "genA"),
    aes(xsubmin = from, xsubmax = to, label = subgene),
    min.size = 0
  )


图片

图10






图片微科盟推荐阅读图片

技术贴 | 16S专题 | 简单介绍如何用自己的笔记本处理高通量16S数据

2 技术贴 | 宏基因组专题 | 组装工具盘点和比较

3 技术贴 | R语言菌群Alpha多样性分析和绘图

技术贴 | 宏转录组专题 | DDBJ数据库:宏转录组测序数据下载

技术贴 | R语言pheatmap聚类分析和热图



微生态科研学术群期待与您交流更多微生态科研问题

(联系微生态老师即可申请入群)

图片

了解更多菌群知识,请关注“微生态”。


图片


微信扫一扫
关注该公众号




https://wap.sciencenet.cn/blog-3474220-1284869.html

上一篇:上海交通大学 | Microbiome:肠道微生物区系衍生丙酸介导骨钙素对帕金森病小鼠模型的神经保护作用
下一篇:科研 | Microb Ecol:喜马拉雅洋葱(Allium wallichii Kunth)拥有独特的细菌群落空间组织
收藏 IP: 183.240.41.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 04:43

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部