isoform結構繪圖----R包Gviz (IGV菀菀類卿)

網頁參考(首推):
http://www.bioconductor.org/packages/release/bioc/vignettes/Gviz/inst/doc/Gviz.html
B站教學視頻:
https://www.bilibili.com/video/BV1mW411N7mD?p=12&t=3
參考網址:
https://cloud.tencent.com/developer/article/1473563
參考文獻:
Plotting data and annotation information along genomic coordinates


Gviz畫圖小栗子

example

從上圖我們可以看到圖片是從上往下排版。使用這個R包也是在不斷地構建新的track對象,例如針對染色體的track對象,針對參考基因組得track,然后使用plotrack()函數畫圖。
在學習Gviz之前需要對GenomicRanges包進行一定的學習
參考: http://www.lxweimin.com/p/045997192d09
*安裝

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("Gviz")

  • 畫染色體
    這里使用的數據,是我從gtf文件中提出的某個基因的isoform信息,文件名為test1
    image.png
library(Gviz)
library(GenomicRanges)
idTrack1 <- IdeogramTrack(chr2, genome="hg38")
plotTracks(idTrack, from=10000, to=9000000)
#這里的from 以及to是畫紅框的位置
?IdeogramTrack #使用該命令查看具體的參數
image.png

  • 畫isofrom結構
#首先利用exon的start以及end構建一個IRanges對象(IRanges對象是GenomicRanges包中的)
test1_ranges = IRanges(test1$start, test1$end)
> test1_ranges
IRanges object with 4 ranges and 0 metadata columns:
          start       end     width
      <integer> <integer> <integer>
  [1] 101002691 101002808       118
  [2] 101004158 101004361       204
  [3] 101005959 101006071       113
  [4] 101006350 101006418        69
#進一步構建一個GRanges對象
> gr1 <- GRanges(seqnames='chr2',
+                ranges=test1_ranges,
+                strand=rep("*", 4))
> gr1
GRanges object with 4 ranges and 0 metadata columns:
      seqnames              ranges strand
         <Rle>           <IRanges>  <Rle>
  [1]     chr2 101002691-101002808      *
  [2]     chr2 101004158-101004361      *
  [3]     chr2 101005959-101006071      *
  [4]     chr2 101006350-101006418      *
  -------
  seqinfo: 1 sequence from an unspecified genome; no seqlengths
#GRanges中的每個參數,請看自行查閱GenomicRanges包的說明。
> atrack1 <- AnnotationTrack(gr1, name="gr1")
#使用 AnnotationTrack函數對GRanges對象進行打包。
> atrack1
AnnotationTrack 'gr1'
| genome: NA
| active chromosome: chr2
| annotation features: 4
#最后就是使用plotrack對其進行畫圖了
 plotTracks(atrack1)
image.png

  • 畫基因組坐標
    由于GenomeAxisTrack對象(即基因組坐標對象)是一個參考坐標系,對于其他的track是相對的,因此不需要額外的參數。基本上,這個對象只是告訴plotTracks函數向繪圖中添加一個基因組軸。
gtrack <- GenomeAxisTrack()
plotTracks(list(idTrack,gtrack,atrack1))
#gtrack不能單獨畫出來,因為他就是一個坐標軸,這里把剛才生成的track整合在一個list中,就可以一起畫出來了。
image.png

到這里,我的問題基本解決了。從gtf中提取isoform的結構畫圖,當你需要一個圖中畫多個isoform的時候,就多構建幾個track,然后list在一起就好了。


補充

這個R包可以近似替代IGV,所以還有一些其他的功能,在這里再進一步介紹。
增加注釋基因組做坐標
到目前為止,只介紹了這個包非常基本的注釋功能,以及如何給我們的繪圖提供一個參考點。當然,我們也希望能夠處理更復雜的基因組特征,比如基因模型。一個方法是利用本地的基因模型信息。或者,我們可以從在線資源(如UCSC或ENSEBML)下載此類數據,并且有包內的函數來處理。在本例中,我們將從存儲的data.frame加載基因模型數據。這里選擇的track類是GeneRegionTrack對象,它可以通過同名的構造函數創建。

data(geneModels)
grtrack <- GeneRegionTrack(geneModels, genome = "hg38",
                           chromosome = chr2, name = "Gene Model")
plotTracks(list(idTrack, gtrack, atrack1, grtrack),sizes = c(1,1,0.5,1))
#這里的sizes是用來定義每個track的大小的
image.png

我感覺我現在畫圖的這個基因沒有被很好的注釋,所以這張圖有點翻車。
展示一下參考網址里面的圖。


image.png
  • 使用下載的gtf文件構建tracks畫圖
library("rtracklayer")
gtf_data = import('gencode.v35.annotation.gtf') %>% 
  as.data.frame() #導入gtf文件
#提取出如網站案例中gene models相同的列,并且重命名
gene_models = filter(gtf_data, gtf_data$type == 'exon') %>% .[,c(1:5, 11, 10,23,16)]
colnames(gene_models) = c("chromosome","start","end","width","strand","feature",   
                   "gene","exon","transcript")
test = gene_models[1:20,]

grtrack <- GeneRegionTrack(test, genome = "hg38",
                           chromosome = 'chr1', name = "Gene Model", 
                           transcriptAnnotation = 'transcript',
                           background.title = "brown")
displayPars(grtrack) <- list(background.panel = "#FFFEDB", col = NULL)
plotTracks(grtrack)
image.png

控制圖片顯示的范圍
在前面所有這些例子中,繪制的基因組范圍都是默認的。plotTracks支持from和To參數,讓我們選擇一個任意的基因組范圍進行繪圖。

plotTracks(list(idTrack,gtrack,atrack1), from = 101006350, to = 101006418)
image.png

這里就畫了最后一個外顯子的范圍。所以圖中顯示的是最后一個外顯子。

另一對參數是extend.left和extend.right。用于縮放圖片。除了正的或負的絕對整數值,還可以提供一個介于-1和1之間的浮點值,該值將被解釋為縮放因子,即0.5的值將導致放大到當前顯示范圍的一半。
畫數值的圖 (比較重要)
DataTrack對象本質上是運行長度編碼的數字向量或矩陣,我們可以使用它們將各種數字數據添加到我們的基因組坐標圖中。這些軌跡有一大堆不同的可視化選項,從點圖到直方圖,再到方框圖和胡須圖。

image.png

照著模仿了一下。

set.seed(255)
lim <- c(101002691, 101006418)
coords <- sort(c(lim[1], 
                 sample(seq(from = lim[1], to = lim[2]), 99), 
                 lim[2]))
dat <- runif(100, min = -10, max = 10)
dtrack <- DataTrack(data = dat, start = coords[-length(coords)],
                    end = coords[-1], chromosome = chr2, genome = "hg38", 
                    name = "Uniform")
plotTracks(list(idTrack,gtrack,atrack1,dtrack), rom = lim[1], to = lim[2])
image.png

其實,就是在你畫圖的范圍內生隨機生成一些值,畫成散點圖。
這里的coords就是genomic regions,就是x軸的位置,而data就是我們需要畫的值。所以兩者的數量必須要對得上,當然這里是隨機生成的。
能畫很多類型的圖片呢!!

image.png

這個R包還能把bam文件中的表達值畫折線圖,這里不再贅述了,大家看參考的網頁吧。

一些其他的方法畫isoform結構圖,也可以直接用ggplot畫。以及R包ggbio。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容