CS番外2: 過濾ChIPseeker注釋結果

2021-01-10 Y叔談生信

有一天我的師弟提了一個需求:

對於ChIP的下遊分析,我很喜歡DiffBind做差異分析然後用ChIPseeker做注釋這一套流程(因為ChIPseeker的輸入格式是GRange格式,而DiffBind的dba.report輸出也恰好是GRange格式,兩者可以無縫銜接)。我之前的套路,一直都是無腦輸出所有的DiffBind結果,然後放入ChIPSeeker裡面做注釋,完了之後轉成data.frame,然後對data.frame做subset,做後續的GO分析()。但今天突然想對ChIPseeker的注釋結果直接做subset,然後分別對上下調的結果畫plotAnnoPie等ChipSeeker內置的畫圖函數。但發現subset無法對ChipSeeker annotatePeak函數的輸出結果做篩選。

當然,對於DiffBind的結果用subset,分別提取上下調,然後再注釋也是可以的,不過這樣感覺更麻煩。

面對需求,如果無法解決提出需求的人,那麼就只能寫代碼實現這個需求了。於是經過一個下午的努力,我給ChIPseeker加上了subset的功能。

先來介紹下如何使用。我們需要用devtools安裝最新的ChIPseeker

BiocManager::install("TxDb.Hsapiens.UCSC.hg19.knownGene")install.packages("ggupset")install.packages("ggimage")devtools::install_github("YuLab-SMU/ChIPseeker")library(ChIPseeker)我們以測試數據集來演示

library(TxDb.Hsapiens.UCSC.hg19.knownGene)txdb <- TxDb.Hsapiens.UCSC.hg19.knownGenepeakfile <- system.file("extdata", "sample_peaks.txt", package="ChIPseeker")peakAnno <- annotatePeak(peakfile, tssRegion=c(-3000, 3000), TxDb=txdb)peakAnno此時會輸出peakAnno裡的描述統計信息

Annotated peaks generated by ChIPseeker150/150 peaks were annotatedGenomic Annotation Summary: Feature Frequency8 Promoter (<=1kb) 4.6666679 Promoter (1-2kb) 4.00000010 Promoter (2-3kb) 2.00000035' UTR 1.3333332 3' UTR 2.6666676 Other Exon 8.0000001 1st Intron 13.3333337 Other Intron 32.0000005 Downstream (<=300) 1.3333334 Distal Intergenic 30.666667peakAnno可以直接用來畫圖

plotAnnoPie(peakAnno)upsetplot(peakAnno)

Pie

upset假如你突發奇想,我能不能就看看某一條染色體的作圖結果,或者對於MACS2的結果,想根據FDR篩選下peak,然後看下peak的變化。

在之前我們無法直接對peakAnno背後的csAnno對象進行操作,所以需要先對輸入的GRanges進行過濾然後再用annotatePeak進行注釋,然後畫圖。

但是現在我們有了subset, 這一切就變得稍微簡單起來了

我們可以按照染色體編號進行篩選

peakAnno_subset <- subset(peakAnno, seqnames == "chr1")upsetplot(peakAnno_subset, vennpie = TRUE) 可以按照peak寬度進行篩選

peakAnno_subset <- subset(peakAnno, length > 500)upsetplot(peakAnno_subset, vennpie = TRUE)

filter如果篩選之後沒有任何結果,那麼就會報錯

> subset(peakAnno, FDR... < .05)Error in names(x) <- value : 'names' attribute [2] must be the same length as the vector [1]那麼問題就是,這些篩選條件的名字怎麼獲知。

只要將peakAnno轉成GRanges格式,所以可以看到的列都是你可以篩選的標準。

gr <- as.GRanges(peakAnno)head(gr)GRanges object with 2 ranges and 15 metadata columns: seqnames ranges strand | length summit tags <Rle> <IRanges> <Rle> | <integer> <integer> <integer> [1] chr10 105137981-105138593 * | 6141747 [2] chr10 42644417-42645383 * | 96866927 X.10.log10.pvalue. fold_enrichment FDR... <numeric> <numeric> <numeric> [1] 52.815.32 <NA> [2] 77.159.130.79 annotation geneChr geneStart geneEnd <character> <integer> <integer> <integer> [1] Exon (uc001kwv.3/6877, exon 3 of 11) 10105127724105148822 [2] Distal Intergenic 104282731442863493 geneLength geneStrand geneId transcriptId distanceToTSS <integer> <integer> <character> <character> <numeric> [1] 2109916877 uc010qqq.2 10257 [2] 361802441666 uc010qey.2 218110給ChIPseeker增加subset的功能,應該是我第一次在GitHub進行pull requests操作。寫這個函數,需要先去理解csAnno對象到底是什麼,以及如何保證csAnno這個對象在操作前後不會發生變化。

其實這個函數挺簡單的,就是下面幾行

##' @importFrom S4Vectors subset##' @importFrom BiocGenerics start##' @importFrom BiocGenerics end##' @method subset csAnno##' @exportsubset.csAnno <- function(x, ... ){ index <- paste(seqnames(x@anno),start(x@anno),end(x@anno), sep = "_")# subset the GRanges x@anno <- subset(x@anno, ...) index2 <- paste(seqnames(x@anno),start(x@anno),end(x@anno), sep = "_")# the tssRgion, level, hsaGenomicAnnotation keep unchanged# change the detailGenomicAnnotation x@detailGenomicAnnotation <- x@detailGenomicAnnotation[index %in% index2,]# change the annotation stat x@annoStat <- getGenomicAnnoStat(x@anno)# change peak number x@peakNum <- length(x@anno)return(x)}因為有很多功能是ChIPseeker已經有了的,比如說getGenomicAnnoStat, 還有一些是S4Vectors和BiocGenerics包提供的,比如說subset, start和end。

相關焦點

  • 功能富集分析、基因ID轉換、查找同源基因、SNP注釋一站式服務
    ID的轉換;2)Ensembl, Refseq, Illumina, Entrezgene and Uniprot identifiers等不同資料庫來源基因ID的轉換;3)基因,蛋白質,晶片探針等ID轉換;進入網址:https
  • 《侏羅紀世界2》番外短片首播 人與恐龍生存大戰
    《侏羅紀世界2》番外短片首播 人與恐龍生存大戰 時間:2019.09.16 來源:1905電影網 作者:抹茶
  • 「群體遺傳學實戰」第一課: 對SNP位點進行注釋
    我們用於實戰的數據集來自於2019年發表於NG的西瓜文章,它提供了GATK過濾後的SNP數據集用於分析,並且附錄提供了完整的樣本信息。該SNP數據集包括414個西瓜,2000萬個SNP信息,數據大小為22G.
  • 使用snpEff對VCF進行注釋
    輸出結果的第一列是基因組的版本號,我們根據這個版本號進行下載java -jar snpEff.jar download GRCh38.p7.RefSeq使用上面這種方法,我們無法保證數據下載速度,也不能保證注釋信息時刻最新,因此我更推薦自己下載相應的基因組序列和注釋文件
  • 《詭秘之主》現代篇:值夜小隊鄧隊長上線,番外疑似克萊恩的夢境
    而在這漫長的等待時間內,不少捲毛狒狒將對《詭秘之主》的喜愛轉變為金錢上的支持,這就導致相關周邊和書籍的銷量增加,烏賊忙於親筆籤名無暇顧及現代篇番外的更新。跳躍結果並無意外,就當「我」興致勃勃打算挑戰更高樓層時,老闆黃濤要接待的外賓資料送達,名字顯示為查拉圖.斯特拉。與此同時,查主角暫住證的鄧警官上線,並點明「我」的身份--周明瑞。
  • 「Bionano系列」下機原始數據過濾和評估
    伺服器要滿足如下需求:Python=2.7.xperl=5.14.x或5.16.xR > 3.1.2,並且安裝data.table, igraph, intervals, MASSSV進行注釋VCFConverter: 將SMAP和SVMerge的結果輸出成VCF格式數據過濾目前的主流Bionano設備已經是Sapjyr,BNX文件產生於Saphyr,經由Bionano Access 下載到本地。
  • oncotator:腫瘤研究專用的突變注釋軟體
    這三款軟體適用範圍廣,可以注釋任何的基因組變異,無論是germline還是somatic variants。通用性強的同時,帶來的問題就是針對腫瘤基因組研究而言,其注釋結果中缺乏腫瘤特異性的注釋內容,而且其注釋結果為VCF格式,需要進一步轉換為MAF格式才可以進行腫瘤研究的下遊分析,不夠便利。
  • JOJO:岸邊露伴明明動個不停,為何番外要叫一動不動?
    也正因如此,西北老漢享受的待遇非常優厚,管理員權限隨便開,而且他不僅第四部的戲份特別多,甚至在番外裡作為主角的身份登場。不過雖然番外名字叫做《岸邊露伴一動不動》,聽起來像是西北老漢靜坐在案桌前構思漫畫;但實際劇情似乎和題目不符合,西北老漢從來沒有真正意義上的一動不動過,他總是在四處奔走,探究神秘事件。
  • APIAuto 2.0.0 發布,機器學習自動化測試、自動生成代碼和注釋...
    更新內容1.新增機器學習測試;2.新增及增強各種其它功能;3.兼容多種資料庫。
  • 使用ggtree實現進化樹的可視化和注釋
    這是與其它軟體最根本的不同,也是ggtree能夠簡單地用圖層加注釋信息的基礎。有很多可視化包基於ggplot2實現,包括各種gg打頭的,號稱擴展了ggplot2,支持圖形語法(grammar of graphics),我並不認同。
  • 海上鋼琴師定檔 《陳情令》番外電影曝光陣容
    海上鋼琴師定檔 《陳情令》番外電影曝光陣容時間:2019-10-25 22:41   來源:今日頭條   責任編輯:毛青青 川北在線核心提示:原標題:海上鋼琴師定檔 《陳情令》番外電影曝光陣容 《海上鋼琴師》4K修復版正式定檔11月15日在內地上映。
  • 技術貼 | 宏基因組分箱 (Binning)第四課——COG EC RNA注釋統計
    圖2 2 分析流程# 1. prokka基因組注釋for i in Bin_all/Bin_pick/*.fa; do     從prokka注釋結果問價夾中提取bin.tsv文件到一個文件夾,打開其中一個bin.tsv查看文件格式,文件格式(左到右列依次是):預測基因編號、functiontype、基因長度、基因名稱、EC編號、COG編號、蛋白名稱。
  • 枕上書番外- 118糖醋魚的威力
    枕上書番外- 117糖醋魚的滋味枕上書番外- 116文昌留祁昕和葉青緹用晚膳枕上書番外- 115祁昕和葉青緹求見受傷的鳳九枕上書番外- 東鳳故事-半心戀-114熱鬧的狐狸洞
  • UNSW CS選課指南請收藏
    2.學生:COMP1531學 html是嗎?主要學什麼?師兄:HTML可能不會系統學。畢竟咱們學校硬核到java都不系統學。agile,uml,er diagram。3.學生:想問一下如果有想去美國好一點的學校讀研究生的傾向的話,wam一般大概需要達到多少呢?
  • DADA2中文教程v1.8
    序列過濾和裁剪首先對序列進行質量過濾剪切。為過濾最最質量的閾值,默認為2,將去除低於此質量的序列;rm.phix默認為TRUE,將去除比對上參考PhiX基因組的序列,在擴增子中常用;compress,默認輸出壓縮格式的結果;multithread為默認單線程,可以改為T或整數提高速度,但確保你電腦有足夠的內存和計算資源。
  • EggNOG功能注釋資料庫在線和本地使用
    eggNOG mapper在線版eggNOG-mapper就比對、注釋eggNOG資料庫的專用工具。eggNOG-mapper在線分析,只需滑鼠單擊三步完成。1.訪問在線工具http://eggnogdb.embl.de/#/app/emapper2.參數設置主要是選擇蛋白序列文件,和設置郵箱。一般其它默認即可。
  • 《萌學園番外》小艾哥哥,原來你比我想像的更愛烏克娜娜
    「謎亞星」蒂蒂娜看到謎亞星過來了,就立即過去找謎亞星,陶喜兒也去找焰王,歐趴環視了一圈結果沒有看到小芙蝶,非常疑惑就問「怎麼沒有看到小芙蝶呢」,謎亞星也很疑惑「對啊,怎麼沒有看到小芙蝶」,蒂蒂娜悄悄湊在謎亞星耳邊說「小芙蝶正在準備給艾瑞克的驚喜呢,聽小芙蝶說這是她準備了好久的,好大的驚喜呢」,「聽你描述,我現在真的很好奇小芙蝶準備的驚喜是什麼」謎亞星也悄悄跟蒂蒂娜說。
  • 《東宮》被刪番外:李承鄞因過度思念小楓,跳樓自殺了!
    《東宮》被刪番外:李承鄞因過度思念小楓,跳樓自殺了!(以下圖片均來自網絡,若有侵權,告之則刪!)《東宮》的正文,到此也就結束了,可是在番外裡面,匪我思存又寫了小楓死後,李承鄞的生活!幾十年來,他從來沒有忘記過小楓,一直活在痛苦中,他沒有問過後宮,每天都在打仗,不斷地擴充疆土,可是無論他打下了多少的國家,他從來沒有碰過西涼,因為那是小楓的家鄉!在原本的番外裡,只寫到李承鄞和裴照的對話,就結束了!
  • 《琉璃》番外7:奶爸司鳳帶娃艱難,還把天界戰神寵廢了?
    《琉璃》番外6之第一世:我一曲千金,只想換你傾城一笑  《琉璃》番外5:青龍吃醋問騰蛇,他和褚璇璣一同掉進水裡要救誰  《琉璃》番外4:羲玄為戰神削去萬年仙骨,陪她一起歷劫十世  《琉璃》番外3之羲玄獨白:天界不能還戰神一個公道,我來還  《琉璃》番外2:人人當你是女戰神,我只願你做個普通的幸福女子
  • 免費又好用的基因功能注釋平臺
    我們可以使用eggnog-mapper工具進行功能注釋,但是需要下載較大的資料庫。目前,eggnog官網提供了一個在線工具,只需上傳文件,即可進行基因功能注釋,非常方便。步奏一:提交序列文件,留下郵箱;步奏二:提交任務步奏三:等待結果;我們提交了4228個細菌的基因,18點12分提交,19:22分返回結果,運行速度還是非常快的。