盘它!全基因组数据可视化R包-idiograms

2022-03-28 15:43:51 浏览数 (4)

导语

GUIDE ╲

作图丫一直致力于将好用的分析或可视化的R包分享给大家,经常搜寻经典的、好用的、功能全并且配色惊艳的R包。最近在Y叔公众号中发现了一个R包-idiograms。这个R包是在Y叔的指导下完成的,而且小编亲身实测后觉得此R包使用简便好用易调整,因此在这里分享给大家,让更多的人能够作出满意的科研绘图!

加载R包和数据

代码语言:javascript复制
#加载 RIdeogram
require(RIdeogram)
#加载包中的测试数据
data(human_karyotype, package="RIdeogram")
data(gene_density, package="RIdeogram")
data(Random_RNAs_500, package="RIdeogram")

human_karyotype数据格式,CE_start和CE_end是centromere的位置。

gene_density 数据格式

Random_RNAs_500数据格式

当然,我们也可以通过read.table()导入数据绘图。

代码语言:javascript复制
human_karyotype <- read.table("karyotype.txt", sep = "t", header = T, stringsAsFactors = F)
gene_density <- read.table("data_1.txt", sep = "t", header = T, stringsAsFactors = F)
Random_RNAs_500 <- read.table("data_2.txt", sep = "t", header = T, stringsAsFactors = F)

在计算gene_density时,包中贴心的给出了计算函数。只需要下载gff3文件,利用下边的代码句即可得到。

代码语言:javascript复制
gene_density <- GFFex(input = "gencode.v32.annotation.gff3.gz", karyotype = "human_karyotype.txt", feature = "gene", window = 1000000)

绘图

代码语言:javascript复制
#绘制染色体
ideogram(karyotype = human_karyotype)
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制
#绘制gene密度
ideogram(karyotype = human_karyotype, overlaid = gene_density)
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制
#绘制marker,可以是SNP、QTL或gene等marker
ideogram(karyotype = human_karyotype, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制
#同时绘制gene密度和marker
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制
#通过colorset1更改heatmap颜色
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker", colorset1 = c("#fc8d59", "#ffffbf", "#91bfdb"))
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制
#如果不知道centromere的位置,可绘制不包含centromere位置的染色体
human_karyotype <- human_karyotype[,1:3]
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制
#当绘制的染色体比较少时,在画板固定width=170情况下,染色体的宽度就会增加(左下图)。
#通过调整width=100,染色体宽度变窄,视觉上比较好看(右下图)。
human_karyotype <- human_karyotype[1:10,]
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制
#调整width后发现legend太靠右了,所以我们也要调整这个参数Lx和Ly,设置Lx = 80, Ly = 25。
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker", width = 100, Lx = 80, Ly = 25)
convertSVG("chromosome.svg", device = "png")

其他类型图

此R包还能对lable绘制heatmap、line和polygon,具体如下图。

图片保存

可以保存为四种格式,以及对图片大小进行设置,用起来比较方便。

代码语言:javascript复制
#使用convertSVG保存转换格式,device可设置为tiff,pdf,jpg和png。
convertSVG("chromosome.svg", device = "tiff", dpi = 600)
#同时也可以使用更简洁的转换函数
svg2tiff("chromosome.svg")
svg2pdf("chromosome.svg")
svg2jpg("chromosome.svg")
svg2png("chromosome.svg")

共线性绘图

代码语言:javascript复制
#对物种间的共线性可以进行绘制,首先导入数据。
data(karyotype_dual_comparison, package="RIdeogram")
#karyotype_dual_comparison文件b包含了两个物种/三物种的长度、颜色以及填充色
head(karyotype_dual_comparison)
#>   Chr Start      End   fill species size  color
#> 1  I      1 23037639 969696   Grape   12 252525
#> 2  II     1 18779884 969696   Grape   12 252525
#> 3 III     1 19341862 969696   Grape   12 252525
#> 4  IV     1 23867706 969696   Grape   12 252525
#> 5   V     1 25021643 969696   Grape   12 252525
#> 6  VI     1 21508407 0ab276   Grape   12 252525
table(karyotype_dual_comparison$species)
#> 
#>   Grape Populus 
#>      19      19

data(synteny_dual_comparison, package="RIdeogram")
head(synteny_dual_comparison)
#synteny_dual_comparison包含物种共线性的位置信息和线填充色
#>   Species_1  Start_1    End_1 Species_2 Start_2   End_2   fill
#> 1         1 12226377 12267836         2 5900307 5827251 cccccc
#> 2        15  5635667  5667377        17 4459512 4393226 cccccc
#> 3         9  7916366  7945659         3 8618518 8486865 cccccc
#> 4         2  8214553  8242202        18 5964233 6027199 cccccc
#> 5        13  2330522  2356593        14 6224069 6138821 cccccc
#> 6        11 10861038 10886821        10 8099058 8011502 cccccc
#绘图
ideogram(karyotype = karyotype_dual_comparison, synteny = synteny_dual_comparison)
convertSVG("chromosome.svg", device = "png")

最多能够绘制3个物种间的共线性图,数据格式和2个物种的是一样的,绘图展示如下。

代码语言:javascript复制
data(karyotype_ternary_comparison, package="RIdeogram")
head(karyotype_ternary_comparison)
#>   Chr Start      End   fill   species size  color
#> 1  NA     1 15980527 fcb06b Amborella   10 fcb06b
#> 2  NA     1 11522362 fcb06b Amborella   10 fcb06b
#> 3  NA     1 11085951 fcb06b Amborella   10 fcb06b
#> 4  NA     1 10537363 fcb06b Amborella   10 fcb06b
#> 5  NA     1  9585472 fcb06b Amborella   10 fcb06b
#> 6  NA     1  9414115 fcb06b Amborella   10 fcb06b
table(karyotype_ternary_comparison$species)
#> 
#>    Amborella        Grape Liriodendron 
#>          100           19           19

data(synteny_ternary_comparison, package="RIdeogram")
head(synteny_ternary_comparison)
#>   Species_1 Start_2   End_2 Species_2  Start_1    End_1   fill type
#> 1         1 4761181 2609697         1   342802   981451 cccccc    1
#> 2         6 6344197 8074393         1 15387184 16716190 cccccc    1
#> 3        10 6457890 9052487         1 11224953 14959548 cccccc    1
#> 4        13 6318795 1295413         1 20564870 21386271 cccccc    1
#> 5        16 1398101 2884119         1 21108654 22221088 cccccc    1
#> 6        16 1482529 2093625         1 21864494 22364888 cccccc    1
tail(synteny_ternary_comparison, n = 20)
#>     Species_1  Start_2    End_2 Species_2  Start_1    End_1   fill type
#> 571        16 19278042 20828694         2 95267449 93334736 cccccc    3
#> 572        12 20546006 22461088         2 22647943 18365764 cccccc    3
#> 573         4 22259262 23453956         2 15068249 17839485 cccccc    3
#> 574        14 22377895 23821929         2 97299880 96033346 cccccc    3
#> 575         6  1538773  2808373         1 91285578 95681546 cccccc    3
#> 576        11  3381792  4954528         1 67689752 75286468 cccccc    3
#> 577         9  4814481  6975840         1 69506847 76015710 cccccc    3
#> 578        10  7091825  9742616         1 19333526 24516133 cccccc    3
#> 579        13 22063957 23402389         1 95843870 92195256 cccccc    3
#> 580         7   679765  1881756         6  7365421  7531534 e41a1c    1
#> 581         7   679765  2752867        13   501561   766473 e41a1c    1
#> 582         7   679765  3012501         8  7406703  8222490 e41a1c    1
#> 583         7  2049369  2942034        14 29350547 34369929 e41a1c    2
#> 584         7  2075095  1538540        10 28985737 30815217 e41a1c    2
#> 585        13   531939   834472        14 28866243 35278211 e41a1c    3
#> 586         8  7427221  8894821        14 28632063 34805893 e41a1c    3
#> 587         6  7567597  7690342        14 32050301 34913801 e41a1c    3
#> 588        13   501561   876423        10 30496700 27874100 e41a1c    3
#> 589         6  7171014  7815454        10 31408837 27660041 e41a1c    3
#> 590         8  5773528  9346871        10 31408837 26585934 e41a1c    3
#绘图
ideogram(karyotype = karyotype_ternary_comparison, synteny = synteny_ternary_comparison)
convertSVG("chromosome.svg", device = "png")
代码语言:javascript复制
data(synteny_ternary_comparison_graident, package="RIdeogram")
ideogram(karyotype = karyotype_ternary_comparison, synteny = synteny_ternary_comparison_graident)
library("rsvg")
rsvg_pdf("chromosome.svg", "chromosome.pdf")

小编总结

此R包用起来简单,方便,易调整。在标记全基因组marker时很实用,最惊艳的就是物种间的共线性的绘制,整体来讲是个本不错的R包,有需要的、感兴趣的快去试试吧!

END

0 人点赞