前几天在看2022年学徒作业:不只是数据挖掘故事的引子(也可以是故事本身)时,里面提到对WGCNA分析得到的模块基因进行染色体注释。 正好最近手头有一批数据想可视化看下基因在染色体上的位置信息,所以,今天借助这次学徒作业,用我们自己的数据初步学习一下基因在染色体上的分布圈圈图。这里,我们利用RCircos这个软件进行一下初步的可视化分析:
****RCircos安装
代码语言:javascript复制#安装所需要的包
#BiocManager::install(“RCircos”)
install.packages("magritter")
install.packages("tidyverse")
#导入需要的R包
library(RCircos)
library(magrittr)
library(tidyverse)
library("rtracklayer")
****图中展示目标基因文件
代码语言:javascript复制genes <- read.csv("DEG.final.csv", header = T)$Genes
genes
****根据基因集提取出目的基因所在位置
代码语言:javascript复制gene_pos = import('Bos_taurus.ARS-UCD1.2.104.chr.gtf') #gtf的路径
#这里使用import导入gtf文件, 生成一个GRangs对象
gene_pos = as.data.frame(gene_pos)
View(gene_pos)
#仅选择基因,去除转录本等等
gene_pos=filter(gene_pos,source == "ensembl", type == "gene") %>%
保留基因位置和名称
dplyr::select(seqnames, start, end, gene_name) %>%
挑选目的基因
filter(gene_name %in% genes)
gene_pos
View(gene_pos)
write.csv(gene_pos,"gene_pos.csv")
gene_pos=read.csv("gene_pos.csv", header=T)
View(gene_pos)
****设置染色体数据
代码语言:javascript复制data=read.csv('UCSC_chrom.sizes.csv',header=T)
View(data)
cyto.info <- data
#colnames(data)=c('Chromosome', 'chromStart', 'chromEnd',"Band","Stain")
#在当前的画板上画基因组的圆圈骨架
#chr.exclude=NULL; 设置不显示的染色体,如 c(1,3)
#tracks.inside=10; 设置内部环形个数
#tracks.outside=0; 设置外部环形个数
****绘制基因在染色体位置上的圈圈图
代码语言:javascript复制#列出所有绘图参数
RCircos.List.Plot.Parameters()
pdf(file="circGene.pdf", height=5, width=5,compress=TRUE)
#height和width指定生成图片的长和宽,compress指定生成的图片是否需要压缩
绘制染色体图形,默认方法显示染色体名称。
RCircos.Set.Plot.Area() #建立一个画板
#添加基因名和连线
指定内容在内侧的环形还是外侧的环形生成
side <- "in";
指定内容在第几个环形生成
track.num <- 1;
绘图
RCircos.Gene.Connector.Plot(gene_pos, track.num, side);
****在染色体上添加基因名称
代码语言:javascript复制#指定内容在第几个环形生成
name.col <- 4;
#指定基因名在数据的第几列
track.num <- 2;
#绘图
RCircos.Gene.Name.Plot(gene_pos, name.col,track.num, side);
****添加FC热图类型的环形
代码语言:javascript复制#指定以第18列FC数据生成热图
data.col <- 18;
#指定内容在第5个环形生成
track.num <- 5;
#指定内容在内侧的环形生成
side <- "in";
#指定数据大于1的点以红色显示,小于数据1的点以蓝色显示
by.fold <- 1;
绘图
RCircos.Scatter.Plot(gene_pos, data.col,track.num, side, by.fold);
****添加FPKM值的直方图类型的环形
代码语言:javascript复制指定以第11列的FPKM值数据做为图形中直方的纵坐标
data.col <- 11;
指定图形在第6个环形生成
track.num <- 6;
指定图形在内侧环形生成
side <- "in";
绘图
RCircos.Histogram.Plot(gene_pos, data.col, track.num, side);
指定以第12列的FPKM值数据做为图形中直方的纵坐标
data.col <- 12;
指定图形在第6个环形生成
track.num <- 7;
指定图形在内侧环形生成
side <- "in";
绘图
RCircos.Histogram.Plot(gene_pos, data.col, track.num, side);
指定以第13列的FPKM值数据做为图形中直方的纵坐标
data.col <- 13;
指定图形在第6个环形生成
track.num <- 8;
指定图形在内侧环形生成
side <- "in";
绘图
RCircos.Histogram.Plot(gene_pos, data.col, track.num, side);
指定以第14列的FPKM值数据做为图形中直方的纵坐标
data.col <- 14;
指定图形在第6个环形生成
track.num <- 9;
指定图形在内侧环形生成
side <- "in";
绘图
RCircos.Histogram.Plot(gene_pos, data.col, track.num, side);
指定以第15列的FPKM值数据做为图形中直方的纵坐标
data.col <- 15;
指定图形在第6个环形生成
track.num <- 10;
指定图形在内侧环形生成
side <- "in";
绘图
RCircos.Histogram.Plot(gene_pos, data.col, track.num, side);
指定以第16列的FPKM值数据做为图形中直方的纵坐标
data.col <- 16;
指定图形在第6个环形生成
track.num <- 11;
指定图形在内侧环形生成
side <- "in";
绘图
RCircos.Histogram.Plot(gene_pos, data.col, track.num, side);
dev.off()
今天的分享先到这里吧!因为我们的数据所包含的信息有限,所以很多RCircos包的功能并未在这里很好的得以展示,大家可以自己多做一些尝试!