drawProteins 1.19.0
创建这个包是为了允许基于从Uniprot蛋白质数据库获得的数据创建蛋白质原理图。
基本的工作流程是:1。提供一个或多个Uniprot id。从Uniprot API 3中获得一个特性列表。画出这些蛋白质的基本链。根据需要添加特性
drawProteins使用包httr与Uniprot API交互,并将JSON对象提取到r中。JSON对象用于创建data.table。
然后使用绘图包ggplot2创建蛋白质示意图。
目前,drawProteins与[Uniprot数据库]交互http://www.uniprot.org/.必须提供至少一个工作Uniprot登录号。可以提供多个,但必须用一个空格隔开。空格被替换为创建一个url,可用于查询Uniprot API
的get_features ()
函数使用Uniprot API返回蛋白质的特征-链,域信息和其他注释的特征,如“重复”和“motif”。翻译后修饰,如磷酸化,也提供。
的httr::内容()
函数然后用于提取内容。从get_features ()
函数,这将提供列表的列表。父列表的长度对应于提供的登录号的数量。有趣的是,顺序有时与提供的顺序不同。父链表中的每一个链表都有6个,每个蛋白质一个,包含蛋白质的名称和特征。
例如,我们将检索一种被称为Rel a或NF-kappaB, p65的蛋白质的细节,这是一种被充分研究的转录因子。
通过internet访问,可以使用以下代码从Uniprot检索:
# rel A drawProteins::get_features("Q04206") -> rel_json . get_features("Q04206"
[1]“下载成功”
工作流中的下一步是将Uniprot API中的数据转换为可以与ggplot2一起使用的数据帧。
的feature_to_dataframe ()
函数提供的六个列表的列表转换get_features ()
函数转换为数据框架,然后可用于绘制原理图。
的feature_to_dataframe ()
函数还将添加一个“order”值以允许绘图。顺序以图表的方式从底部开始。
drawProteins::feature_to_dataframe(rel_json) -> rel_data #显示在控制台头部(rel_data[1:4])
类型描述begin end featuresTemp CHAIN转录因子p65 1 551 featuresTemp.1DOMAIN RHD 19 306 feature .23 .区域无序309 348REGION转录激活域3 342 389 feature . 3REGION转录激活域1 415 476 featuresTemp.5区域混乱506 530
方法可以用ggplot2绘制数据geom_rect ()
而且geom_label
.第一步是制作画布draw_canvas
这是基于被抽取的最长的蛋白质。这可以通过以下方式使用管道来完成。
Draw_canvas (rel_data) -> p p
然后我们可以画出蛋白质链。我们使用draw_chain ()
函数,我们必须为其提供ggplot对象p
数据被称为rel_data
.
P <- draw_chains(P, rel_data
现在,我们添加域,这些域是按照长度的比例绘制的。我们使用draw_domains ()
函数,我们必须为其提供ggplot对象p
数据被称为rel_data
.默认值是标记链。标签可以使用参数删除label_chains = FALSE
.
P <- draw_domains(P, rel_data
为了更好地显示这种可视化效果,白色背景有助于删除y轴和网格。还可以使用base_size参数更改文本的大小。这可以用下面的代码完成:
#白色背景,删除y轴p <- p + theme_bw(base_size = 20) + #白色背景主题(panel.grid.minor=element_blank(), panel.grid.major=element_blank()) +主题(轴。Ticks = element_blank(), axis.text.y = element_blank()) + theme(面板。Border = element_blank()) p
Draw_regions (p, rel_data) #添加激活域
在这种情况下,Draw_repeat (p, rel_data) #不会添加任何内容
draw_motif(p, rel_data) #添加9aa Transactivation域和NLS
#从Uniprot draw_phospho(p, rel_data, size = 8)添加磷酸化位点
这样就有可能选择宝石,以你喜欢的方式提供所需的信息。一些定制是可能的,如下所述。
对于Rel A,我的建议是以下工作流程。
Draw_canvas (rel_data) -> p p <- draw_chains(p, rel_data) p <- draw_domains(p, rel_data) p <- draw_regions(p, rel_data) p <- draw_motif(p, rel_data) p <- draw_phospho(p, rel_data, size = 8) p <- p + theme_bw(base_size = 20) + #白色backgnd &更改文本大小主题(panel.grid.minor=element_blank(), panel.grid.major=element_blank()) +主题(轴。Ticks = element_blank(), axis.text.y = element_blank()) + theme(面板。Border = element_blank()) p
然后使用ggplot2允许添加标题:
# add titles rel_subtitle <- paste0("圆圈=磷酸化位点\n", "RHD = Rel同源域\nsource:Uniprot") p <- p +实验室(title = "Rel A/p65", subtitle = rel_subtitle) p
通过互联网访问,下面的脚本显示了NFkappaB转录因子家族中的五种蛋白质的工作流程。
# 5个NF-kappaB蛋白的接入号prot_data <- drawProteins::get_features("Q04206 Q01201 Q04864 P19838 Q00653")
[1]“下载成功”
prot_data < - drawProteins: feature_to_dataframe (prot_data) p < - draw_canvas (prot_data) p < - draw_chains (p, prot_data) p < - draw_domains (p, prot_data) p < - draw_repeat (p, prot_data) p < - draw_motif (p, prot_data) p < - draw_phospho (p prot_data大小= 8)#背景和轴p < - p + theme_bw (base_size = 20) + #白色backgnd &改变文字大小主题(panel.grid.minor = element_blank (), panel.grid.major = element_blank()) +主题(轴。Ticks = element_blank(), axis.text.y = element_blank()) + theme(面板。border = element_blank()) #添加标题rel_subtitle <- paste0("圆圈=磷酸化位点\n", "RHD = Rel同源域\nsource:Uniprot") p <- p +实验室(title ="人类NF-kappaB蛋白的Schematic of human NF-kappaB proteins", subtitle = rel_subtitle) #移动图例到顶部p <- p +主题(legend.position="top") +实验室(fill="") p
目前,它可以自定义链条的颜色和轮廓。标签是可以去掉的。
data("five_rel_data") p <- draw_canvas(five_rel_data) p <- draw_chains(p, five_rel_data, label_chains = FALSE, fill = "hotpink", outline = "midnightblue"
也可以改变磷酸化符号的大小和颜色。
P <- draw_canvas(five_rel_data, fill = "lightsteelblue1", outline = "grey", label_size = 5) P <- draw_phospho(P, five_rel_data, size = 10, fill = "red") P + theme_bw()
还可以将标签更改为自定义列表。但请记住,这些情节是自下而上绘制的。
p <- draw_canvas(five_rel_data, fill = "lightsteelblue1", outline = "grey", labels = c("p50/p105", "p50/p105", "p52/p100", "p52/p100", "Rel B", "c-Rel", "p65/Rel A"), label_size = 5) p <- draw_phospho(p, five_rel_data, size = 8, fill = "red") p + theme_bw()
这是的输出sessionInfo ()
在编译本文件的系统上:
R开发中(不稳定)(2022-10-25 r83175)平台:x86_64-pc-linux-gnu(64位)运行环境:Ubuntu 22.04.1 LTS矩阵产品:默认BLAS: /home/biocbuild/bbs-3.17-bioc/R/lib/libRblas。so LAPACK: /usr/lib/x86_64-linux-gnu/ LAPACK /liblapack.so.3.10.0 locale: [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC=C [3] LC_TIME=en_GB LC_COLLATE=C [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 [7] LC_PAPER=en_US。UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C附加的基础包:[1]stats graphics grDevices utils datasets methods基础其他附加包:[1]knitr_1.40 ggplot2_3.3.6 httr_1.4.4 [4] drawProteins_1.19.0 BiocStyle_2.27.0通过命名空间加载(且未附加):[1] gtable_0.3.1 jsonlite_1.8.3 highr_0.9 [4] dplyr_1.0.10 compiler_4.3.0 BiocManager_1.30.19 [7] Rcpp_1.0.9 tidyselect_1.2.0 string_1 .4.1 [10] magick_2.7.3 assertthat_0.2.1 jquerylib_0.1.4 [13] scales_1.2.1 yaml_2.3.6 fastmap_1.1.0 [16] R6_2.5.1 labeling_0.4.2 generics_0.1.3 [19] curl_4.3.3 tibble_3.1.8 bookdown_0.29 [22] munsell_0.5.0 DBI_1.1.3 bslib_0.4.0 [25] pillar_1.8.1 rlang_1.0.6 utf8_1.2.2 [28] cachem_0.34 [31] sass_0.4.2 cli_3.1 withr_2.5.0 [34]Magrittr_2.0.3 digest_0.6.30 grid_4.3.0 [37] lifecycle_1.0.3 vctrs_0.5.0 evaluate_0.17 [40] glue_1.6.2 farver_2.1.1 fansi_1.0.3 [43] colorspace_2.0-3 rmarkdown_2.17 tools_4.3.0 [46] pkgconfig_2.0.3 htmltools_0.5.3