單細胞測序R包PAGODA使用

pagoda是2016年在nature methods發(fā)表的一個分析單細胞測序的方法交汤,這個包并不是很紅火叶沛,只是最近在學(xué)習(xí)另一個基于RNA速率推斷細胞演化的R包velocyto的時候發(fā)現(xiàn)图贸,velocyto是基于pagoda的cluster和tsne做的新症,所以這里把pagoda學(xué)習(xí)一下并做記錄罢低。

高水平的技術(shù)噪聲和對表達量的強烈依賴給主成分分析和其他降維方法帶來了困難说墨。因此,PCA的應(yīng)用以及更靈活的方法如GP-LVM或tSNE通常僅限于高表達的基因与斤。PAGODA全稱pathway and gene set overdispersion analysis肪康,在已知的重要信號通路基礎(chǔ)上對細胞進行分類,以提高統(tǒng)計效力并揭示可能的功能性解釋撩穿。例如磷支,雖然單個神經(jīng)元分化標(biāo)記物如Neurod1的表達在細胞間差異可能過于嘈雜且不確定,但在相同細胞亞群中與神經(jīng)元分化相關(guān)的許多基因的協(xié)調(diào)上調(diào)將提供區(qū)分的突出特征食寡。

接下來齐唆,我對Multipotent Peripheral Glial Cells Generate Neuroendocrine Cells of the Adrenal Medulla這篇文章中的數(shù)據(jù)用pagoda進行分析。

下載pagoda

先在linux下安裝依賴

sudo apt-get update
sudo apt-get -y install build-essential cmake gsl-bin libgsl0-dev libeigen3-dev libboost-all-dev libssl-dev libcurl4-openssl-dev libssl-dev libcairo2-dev libxt-dev libgtk2.0-dev libcairo2-dev xvfb xauth xfonts-base

接著在R中安裝

# Install devtools
install.packages("devtools")
# Install Bioconductor dependencies
source("http://bioconductor.org/biocLite.R")
biocLite(c("GO.db", "org.Hs.eg.db","org.Mm.eg.db", "pcaMethods"), suppressUpdates=TRUE)
library(devtools)
install_github("igraph/rigraph") # Don't install with install.packages()
install_github("jkrijthe/Rtsne",ref="openmp")
install.packages(c("Cairo","urltools"))

# Install pagoda
install_github("hms-dbmi/pagoda2")
library('pagoda2')
# Pagoda2 is now ready to use

使用pagoda

1 載入數(shù)據(jù)

統(tǒng)計數(shù)據(jù)的整體表達情況冻河,過濾掉表達基因數(shù)少于3000個的細胞以及在少于5個細胞中表達的基因,可以看到counts由23420行384列減少為16701行384列箍邮。

#Loading the libraries
library(Matrix)
library(pagoda2)
library(igraph)
#Loading the dataset
counts=read.table('E12.5_counts.txt',header = T,sep = '\t')
par(mfrow=c(1,2), mar = c(3.5,3.5,2.0,0.5), mgp = c(2,0.65,0), cex = 1.0)
hist(log10(colSums(cm)+1),main='molecules per cell',col='cornsilk',xlab='log10(molecules per cell)')
hist(log10(rowSums(cm)+1),main='molecules per gene',col='cornsilk',xlab='log10(molecules per gene])')
dim(counts)
[1] 23420   384
counts <- counts[rowSums(counts)>=5,colSums(counts)>=3000]
dim(counts)
[1] 16701   384
distribution.png

2 去掉重復(fù)的列名生成pagoda對象

因為我導(dǎo)入的counts文件rownames是基因名所以沒有重復(fù),如果是ensmble號的話是有重復(fù)的叨叙,去重之后才可以生成pagoda對象锭弊,之后所有的分析結(jié)果也都會儲存在這個對象中。

rownames(counts) <- make.unique(rownames(counts))
#generate a pagoda object
r <- Pagoda2$new(as.matrix(counts),log.scale=TRUE, n.cores=2)
384 cells, 16701 genes; normalizing ... using plain model log scale ... done.

3 對表達量差異很大的基因?qū)ο掠畏治鏊急戎剡M行調(diào)整

r$adjustVariance(plot=T,gam.k=10)
calculating variance fit ... using gam 1640 overdispersed genes ... 1640 persisting ... done.
Rplot.png

4 降維聚類

pagoda中有許多可選的方法進行降維聚類擂错,這里我采用默認的也是最簡單的一種:首先用PCA降維的數(shù)據(jù)構(gòu)建一個細胞間的k近鄰稀疏矩陣味滞,即將一個細胞與它距離上最近的k個細胞聚為一類,然后在此基礎(chǔ)進行模塊優(yōu)化钮呀,找到高度連接的模塊剑鞍。最后通過層次聚類將位于同一區(qū)域內(nèi)沒有差異表達基因的cluster進一步融合,重復(fù)該過程直到?jīng)]有clusters可以合并爽醋∫鲜穑可以看到,細胞被分為了8個cluster蚂四。

#First, the PCA reduction.
r$calculatePcaReduction(nPcs=50,n.odgenes=3e3)
running PCA using 3000 OD genes .... done
#generate a KNN graph
r$makeKnnGraph(k=35,type='PCA',center=T,distance='cosine')
creating space of type angular done
adding data ... done
building index ... done
querying ... done
#call clusters
r$getKnnClusters(method=infomap.community,type='PCA')
#tsne
r$getEmbedding(type='PCA',embeddingType='tSNE',perplexity=50,verbose=F)
calculating distance ... pearson ...running tSNE using 2 cores:
r$plotEmbedding(type='PCA',embeddingType='tSNE',show.legend=F,mark.clusters=T,min.group.size=20,shuffle.colors=F,mark.cluster.cex=1,alpha=0.8,main='clusters (tSNE)')
tsne.png

在tsne圖的基礎(chǔ)上觀察某些特異基因的表達情況

par(mfrow=c(1,2))
gene <-"Chga"
r$plotEmbedding(type='PCA',embeddingType='tSNE',colors=r$counts[,gene],shuffle.colors=F,mark.cluster.cex=1,alpha=0.8,main=gene)
treating colors as a gradient with zlim: 0 1.61094 
gene <-"Serpine2"
r$plotEmbedding(type='PCA',embeddingType='tSNE',colors=r$counts[,gene],shuffle.colors=F,mark.cluster.cex=1,alpha=0.8,main=gene)
treating colors as a gradient with zlim: 0 1.61094 
chga_serpine2.png

5 差異基因

計算每個cluster的差異基因并可視化光戈,比如畫出cluster2中高表達基因的熱圖

r$getDifferentialGenes(type='PCA',verbose=T,clusterType='community')
running differential expression with  8  clusters ... adjusting p-values ... done.
#visualise the top markers of a specific cluster
de=r$diffgenes$PCA$community$`2`
Warning messages:
1: In class(object) <- "environment" :
  把class(x)設(shè)成"environment"集空屬性; 其結(jié)果不再是S4目標(biāo)對象
2: In class(object) <- "environment" :
  把class(x)設(shè)成"environment"集空屬性; 其結(jié)果不再是S4目標(biāo)對象
r$plotGeneHeatmap(genes=rownames(de)[1:15],groups=r$clusters$PCA[[1]])
heatmap.png

好了,這個包的大概功能就是這樣啦遂赠,搞懂了這個包就可以接著去搞明白velocyto了~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末久妆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子跷睦,更是在濱河造成了極大的恐慌筷弦,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抑诸,死亡現(xiàn)場離奇詭異烂琴,居然都是意外死亡,警方通過查閱死者的電腦和手機哼鬓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門监右,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人异希,你說我怎么就攤上這事健盒。” “怎么了称簿?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵扣癣,是天一觀的道長。 經(jīng)常有香客問我憨降,道長父虑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任授药,我火速辦了婚禮士嚎,結(jié)果婚禮上呜魄,老公的妹妹穿的比我還像新娘。我一直安慰自己莱衩,他們只是感情好爵嗅,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著笨蚁,像睡著了一般睹晒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上括细,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天伪很,我揣著相機與錄音,去河邊找鬼奋单。 笑死锉试,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辱匿。 我是一名探鬼主播键痛,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匾七!你這毒婦竟也來了絮短?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤昨忆,失蹤者是張志新(化名)和其女友劉穎丁频,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邑贴,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡席里,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拢驾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奖磁。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖繁疤,靈堂內(nèi)的尸體忽然破棺而出咖为,到底是詐尸還是另有隱情,我是刑警寧澤稠腊,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布躁染,位于F島的核電站,受9級特大地震影響架忌,放射性物質(zhì)發(fā)生泄漏吞彤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饰恕。 院中可真熱鬧挠羔,春花似錦、人聲如沸埋嵌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽莉恼。三九已至,卻和暖如春速那,著一層夾襖步出監(jiān)牢的瞬間俐银,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工端仰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捶惜,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓荔烧,卻偏偏與公主長得像吱七,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鹤竭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354