使用RIdeogram绘制染色体图谱

参考文章:https://www.jianshu.com/p/07ae1fe18071
需求描述:我想绘制差异表达基因在染色体上的分布,或开放染色质在染色体上的分布或
CTCF在染色体上的结合位点或突变位点在染色体上的分布或DNA甲基化在染色体上的分布

library("RIdeogram")
library(stringr)
data(human_karyotype, package="RIdeogram")
#包含Chr Start       End  CE_start    CE_end 五列
#karyotype文件
# 第一列:染色体号
# 第二列:起始
# 第三列:终止
# 第四列:中心粒起始位置
# 第五列:中心粒终止位置
#用于染色体的基本展示,有多少染色体就有多少行
data(gene_density, package="RIdeogram")
#包含Chr   Start     End Value 四列
#基因密度文件
# 第一列:染色体号
# 第二列:起始
# 第三列:终止
# 第四列:基因密度值
data(Random_RNAs_500, package="RIdeogram")
#包含Type    Shape Chr    Start      End  color 六列
#染色体旁的标记文件
# 第一列:标记类型
# 第二列:标记形状
# 第三列:染色体号
# 第四列:起始
# 第五列:终止
# 第六列:颜色
#该R包中还提供了一个GFFex函数用来从GFF文件中提取绘制染色体上热图的信息(例如基因密度)
#首先,需要准备物种的karyotype文件,格式与上述的相同,且保证第一列染色体号与GFF文件中的相同。然后,使用GFFex提取基因密度信息
#gene_density <- GFFex(input = "gencode.v32.annotation.gff3", karyotype = "human_karyotype.txt", feature = "gene", window = 1000000)
#其中,feature选项可以改为要绘制的特征类型,window选项可以更改统计的窗口大小
#注意:实测这个函数只是用来计算在限定窗口下染色体区域的gene的数目
#-------------------------------------------------------
#Function:绘图功能
#-------------------------------------------------------
#基本染色体绘制
ideogram(karyotype = human_karyotype)
convertSVG("chromosome.svg", device = "png")
#基因密度热图绘制
ideogram(karyotype = human_karyotype, overlaid = gene_density,output = "chromosome_sample.svg")
convertSVG("chromosome_sample.svg", device = "png",file = "chromosome_sample")
#画前五条染色体
# human_karyotype<-human_karyotype[1:5,]
# ideogram(karyotype = human_karyotype)
# convertSVG("chromosome.svg", device = "png")
# ideogram(karyotype = human_karyotype, overlaid = gene_density)
# convertSVG("chromosome.svg", device = "png")
#标记类型绘制
ideogram(karyotype = human_karyotype, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
#染色体,基因密度和标记同时绘制
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = Random_RNAs_500, label_type = "marker")
convertSVG("chromosome.svg", device = "png")
#以下提到的是RIdeogram的核心函数----ideogram
#ideogram中colorset1可以调整热图色阶,colorset2可以调节label的色阶,width调整染色体宽度,lx和ly用来调试图例的位置
#ideogram图总体由两部分组成,一部分是染色体,另一部分是label,染色体上的数据主要由overlaid参数传递,label的数据主要由label参数传递,由label_type负责展示方式
#比较难理解的是其中的overlaid,label,label_type三个参数
#其中overlaid是在染色体轮廓上进行区域性上色(染色体上的热图)
#labe是在染色体旁边的位置绘上注释
#label_type是决定label的绘图形式,分为marker,heatmap,line,polygon
#注意,对于离散型数据,使用marker,label接受的数据格式可以参考包中自带的数据集data(Random_RNAs_500, package="RIdeogram")
#对于连续性的value数据,可以使用其它形式的label,其中heatmap即在原染色体旁另绘制一根染色体,然后再该染色体上上色
data(human_karyotype, package="RIdeogram") #reload the karyotype data
ideogram(karyotype = human_karyotype, overlaid = gene_density, label = LTR_density, label_type = "heatmap", colorset1 = c("#f7f7f7", "#e34a33"), colorset2 = c("#f7f7f7", "#2c7fb8")) #use the arguments 'colorset1' and 'colorset2' to set the colors for gene and LTR heatmaps, separately.
convertSVG("chromosome.svg", device = "png")
#line是在染色体旁根据value的数值大小以线的波动予以展示,分为单线型和双线型,具体的数据集参考包中自带数据集data(Pi_for_CE, package="RIdeogram") 单线型,data(Pi_for_CE_and_CW, package="RIdeogram")双线型
#polygon是以线下面积的形式展示value值,与line的数据格式一样,只是展示方式不同,具体参见教程
#-------------------------------------------------------
#Function:绘制基因组间共线性
#-------------------------------------------------------
data(synteny_dual_comparison,package = "RIdeogram")
ideogram(karyotype = karyotype_dual_comparison, synteny = synteny_dual_comparison)
convertSVG("chromosome.svg", device = "png")
#其它的详细见简书教程

如果我们需要DIY自己的染色体map,那需要自己准备以下文件1、核型文件,2、gene的位置文件,3、其它与基因相关的注释文件(可选)

#-------------------------------------------------------
#Function:制作用于构建ideogram的基本文件
#-------------------------------------------------------
#1、染色体文件,hg38文件
human_karyotype_hg38<-read.table("E:\\xxx/Homo_sapiens.GRCh38.100.gff3/Homo_sapiens.GRCh38.100.gff3",stringsAsFactors = F, header = F, 
              comment.char = "#", sep = "\t", quote = "")
#gff中第三列中存在chromosome的标签用来标注染色体信息
human_karyotype_hg38<-human_karyotype_hg38[human_karyotype_hg38$V3=="chromosome",]
human_karyotype_hg38<-human_karyotype_hg38[,c(1,4,5)]
colnames(human_karyotype_hg38)<-c("Chr","Start","End")
human_karyotype_hg38<-human_karyotype_hg38[c(order(as.numeric(human_karyotype_hg38$Chr[1:22])),24:25),]
ideogram(karyotype = human_karyotype_hg38)
convertSVG("chromosome.svg", device = "png")
write.table(human_karyotype_hg38,"human_karyotype_hg38.txt",sep = "\t",row.names = F)
#注意:暂时无法获取着丝粒数据,因此染色体上没有凹陷
#发现本包中保存的核型文件是来自genecode库中的hg38版本,与我在ensembl中下载的hg38得到的核型文件的染色体起始位点相同(除了y染色体)
human_karyotype_hg38[,4:5]<-human_karyotype[,4:5]
human_karyotype_hg38[24,4:5]<-0
#2、准备基因信息文件
#gene_density_hg38<-GFFex(input = "E:\\xxx/Homo_sapiens.GRCh38.100.gff3/Homo_sapiens.GRCh38.100.gff3",karyotype="human_karyotype_hg38.txt",feature="gene",window=10000)
#发现这个函数不好用啊,这个函数使用来计算在特定长度的窗口中的基因的个数,,,,,
gene_identity_hg38<-x[x$V3=="gene",]
gene_identity_hg38<-gene_identity_hg38[,c(1,4,5,9)]
gene_identity_hg38$gene<-str_extract(gene_identity_hg38$V9,"Name=[0-9a-zA-Z]{1,};")
gene_identity_hg38$gene<-str_extract(gene_identity_hg38$gene,"=[0-9a-zA-Z]{1,}")
gene_identity_hg38$gene<-str_extract(gene_identity_hg38$gene,"[0-9a-zA-Z]{1,}")
gene_identity_hg38<-gene_identity_hg38[,c(1,2,3,5)]
colnames(gene_identity_hg38)<-c("Chr","Start","End","Gene")
gene_identity_hg38$Value<-sample(1:10,length(gene_identity_hg38$Chr),replace = T)
ideogram(karyotype = human_karyotype_hg38,overlaid = gene_identity_hg38)
convertSVG("chromosome.svg", device = "png")
最后的成图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355