明碼標價之單細胞轉錄組的質控降維聚類分群和生物學注釋

2021-02-25 生信菜鳥團

單細胞轉錄組的質控降維聚類分群和生物學注釋例子我們在《生信技能樹》和《單細胞天地》都多次分享過:人人都能學會的單細胞聚類分群注釋  。

一般來說,公共數據集都會給出表達量矩陣和具體不同細胞亞群特異性基因,比如 GSE122083 數據集背後的文獻,就給出來了這些分群:

CD8 T cells (CD3D and CD8A),CD4 T cells (CD3D,LDHB and IL7R),B cells (MS4A1, CD79A and CD79B),monocytes (LYZ and CD14 and/or CD16),

但是,更大的可能性是大家需要在已經發表的單細胞數據集裡面去可視化自己的基因表達量情況,結合自己的生物學背景去解釋這些數據。同樣的,不太可能每個人都學會代碼,走我們分享過:人人都能學會的單細胞聚類分群注釋  這樣的教程。

這次仍然是有粉絲在在我們《生信技能樹》公眾號後臺付費求助,希望可以復現GSE122083 數據集的質控降維聚類分群和生物學注釋結果,然後探索他感興趣的8個基因的表達量情況。

就安排學徒讀了一下這個文章:Predicting bacterial infection outcomes using single cell RNA-sequencing analysis of human immune cells. Nat Commun 2019 Jul 22;  PMID: 31332193 ,這個《質控降維聚類分群和生物學注釋》任務安排給了學徒,感謝學徒在這個春節假期還兢兢業業完成任務!

下面是學徒的探索

0、背景

(1)在Seurat等包中,在進行挑選高變基因,PCA分析後,多使用SNN(shared nearest neighbor)算法進行單細胞聚類,然後進行TSNE或者UMAP二維可視化。

img

 

(2)在一篇文獻中,作者使用另一種思路:利用k-means聚類,然後進行基於KNN(k-nearest neighbor)的可視化。

img

 

下圖是我根據文獻流程繪製的結果,大致流程為

k-means方法聚類(可進一步對cluster完成細胞類型注釋);img

 

KNN-graph是使用igraph包進行繪製,關於igraph包的相關介紹,會在筆記第二大點介紹。

1、具體繪圖流程1.0 原始數據

文獻:Predicting bacterial infection outcomes using single cell RNA-sequencing analysis of human immune cells https://doi.org/10.1038/s41467-019-11257-y

測序數據:GSE122083的GSM3454528單細胞表達矩陣

 1.1 表達矩陣質控(部分參考文獻過濾標準)
tmp1 <- read.table("GSM3454528_naive_cells.txt.gz",
                  header = T,#row.names = 1,
                  stringsAsFactors = F)
tmp1 <- tmp1[order(apply(tmp1[,-1], 1, sum),decreasing = T),]
tmp1 <- tmp1[!duplicated(tmp1$genes),]
tmp1 <- tmp1[order(tmp1$genes),]
rownames(tmp1) <- tmp1[,1]
tmp1 <- tmp1[,-1]

lib.size=colSums(tmp1)/median(colSums(tmp1))
tmp1.new=tmp1
for(i in 1:length(lib.size)){
    print(i)
    tmp1.new[,i]=tmp1[,i]/lib.size[i]
}
tmp1=as.matrix(tmp1.new)

tmp1=log2(tmp1+1)
dim(tmp1)
#[1] 18405  3515
#3515個細胞,18405個基因結果

1.2  挑選Top5000高變基因,進行主成分分析構建Seurat對象,利用FindVariableFeatures()函數處理
library("Seurat")
scRNA = CreateSeuratObject(counts=tmp1)
scRNA <- FindVariableFeatures(scRNA, selection.method = "vst", nfeatures = 5000) 
hvg.gene=VariableFeatures(scRNA)
str(hvg.gene)
#chr [1:5000] "CCL5" "IGKC" "LYZ" "IGLC2" "HLA-DRA" "GNLY" "FTH1" "CD74" ...

tmp1.hvg=tmp1[rownames(tmp1) %in% hvg.gene,]
dim(tmp1.hvg)
[1] 5000 3515

pca <-prcomp(t(tmp1.hvg))
dim(pca$x)
#[1] 3515 3515
pca$x[1:4,1:4]
#                         PC1       PC2        PC3        PC4
#AAACCTGAGCTATGCT.1 3.1894482 -0.829263  3.1659335 -0.1827105
#AAACCTGCACTTCGAA.1 2.7927029  2.527055  0.8481548 -2.9785372
#AAACCTGGTTGGTGGA.1 3.1512823  1.051601  0.7916325  0.1704211
#AAACCTGTCCATGAAC.1 0.7509956 -8.282673 -4.5208889 -0.2187663

1.3 k-means cluster聚類單細胞聚類分析時一般較少用到k-means方法。因為這種方法需要提前指定聚類數k。如果使用這種方法,也很簡單。根據主成分分析得到的結果,使用kmeans()函數即可。
#這裡使用前20個主成分,指定聚類數k=10
clust.kmeans <- kmeans(pca$x[,1:20], centers=10)
table(clust.kmeans$cluster)
#  1   2   3   4   5   6   7   8   9  10
#418  25 148 117 350 577 660 199 361 660

1.4 KNN可視化主要根據每個細胞的主成分屬性,找到與其相距「最近」的X個細胞。再利用igraph包將這些關係可視化,並標準cluster信息其中主要涉及連個參數。一個是選用主成分數目;一個是相距最近的多少個細胞。下面代碼為採用前50個主成分,以及top20最近細胞進行操作
#得到所有細胞兩兩間的距離矩陣
dist<-as.matrix(dist(pca$x[,1:20]))
dist[1:3,1:3]
#                   AAACCTGAGCTATGCT.1 AAACCTGCACTTCGAA.1 AACCTGGTTGGTGGA.1
#AAACCTGAGCTATGCT.1           0.000000           6.929171           6.658774
#AAACCTGCACTTCGAA.1           6.929171           0.000000           5.526362
#AAACCTGGTTGGTGGA.1           6.658774           5.526362           0.000000

# 定義具有兩列的空矩陣
edges <- mat.or.vec(0,2)

# for循環為每個細胞尋找最近的20個細胞
for (i in 1:nrow(dist)){
    # find closes neighbours(matches即表示最近細胞的編號)
    matches <- setdiff(order(dist[i,],decreasing = F)[1:21],i) #去除細胞自己與自己的距離
    # add edges
    edges <- rbind(edges,cbind(i,matches))  
  }
head(edges, 50)

# 創建igraph對象
library(igraph)
graph <- graph_from_edgelist(edges,directed=F)
graph

如下圖,該igraph對象有3515個節點(細胞),70300條邊(最近距離關係)

 

 

#顏色標記細胞分類
cols<-rainbow(10)
names(cols) <- unique(clust.kmeans$cluster)
col.clust <- cols[clust.kmeans$cluster]
#由於窗口繪圖,所以保存為圖片再查看
png("test1.png")
set.seed(1)
plot(graph,vertex.size=1,vertex.label=NA,vertex.frame.color=NA,vertex.color=col.clust,
            edge.width=0.5,main="50PCs; k=20")
legend("topright",names(cols),col=cols,
       pch=16,cex=0.5,bty='n')
dev.off()

 


plot會自動調用plot.igraph進行繪製。值得注意的是其中的layout參數默認為layout_nicely,即自動根據節點間關係繪製最適宜的排版,但每次繪圖結果會略有差異,可設置set.seed()保證結果重現性。

編寫成函數function,其中參數k設定最近細胞數
make.knn.graph<-function(D,k){
  # calculate euclidean distances between cells
  dist<-as.matrix(dist(D))
  # make a list of edges to k nearest neighbors for each cell
  edges <- mat.or.vec(0,2)
  for (i in 1:nrow(dist)){
    # find closes neighbours
    matches <- setdiff(order(dist[i,],decreasing = F)[1:(k+1)],i)
    # add edges in both directions
    edges <- rbind(edges,cbind(rep(i,k),matches))  
  }
  # create a graph from the edgelist
  graph <- graph_from_edgelist(edges,directed=F)
  #取消節點的邊框顏色
  V(graph)$frame.color <- NA
  # make a layout for visualizing in 2D
  set.seed(1)
  #指定layout_with_fr類型布局風格
  g.layout<-layout_with_fr(graph)
  return(list(graph=graph,layout=g.layout))        
}

函數中使用了layout_with_fr排版方式,並設置了隨機種子,所以繪圖結果穩定。但隨著其它參數的改變,出圖也會發生較大的改變。如下圖分別繪製了最近5、10、30、50細胞的KNN圖

ks <- c(5,10,30,50)
for (k in ks){
  g.pca20 <- make.knn.graph(pca$x[,1:20],k)
  # plot all 4:
  print(k)
  png(paste0("k",k,".png"))
  plot.igraph(g.pca20$graph,layout=g.pca20$layout,vertex.color=col.clust,
            vertex.size=1,vertex.label=NA,main=paste0("K",k,"--","50 PCs"))
  legend("topright",names(cols),col=cols,
       pch=16,cex=0.5,bty='n')
  dev.off()
}

img

 

以上介紹了如何利用igraph包可視化基於KNN的單細胞聚類關係。從結果來看就是從另一種方式展現單細胞的分類結果,以及分類的準確性。

2、igraph包簡介

igraph是用於進行網絡關係分析的開源工具,在R中有對應的R包

img

 

2.0 igraph的兩要素vertices and edges與igraph對象vertices節點,表示同一類別的具體實例,例如人名、地名、細胞、基因edges邊,連接兩端的節點,以表示這兩個節點存在聯繫(可進一步設置權重weight、方向direct)。igraph對象是igraph包分析的中心,其儲存著vertices與edges信息,以及對應的屬性。2.1 創建igraph對象
library(igraph)
#手動創建
g1 <- graph_from_literal( Alice-Bob-Cecil-Alice, Daniel-Cecil-Eugene,
                     Cecil-Gordon )

如上表示A與B,B與C,C與A,D與C,C與E,C與G存在關係

但一般都不用graph_from_literal創建,更方便的是 graph_from_edgelist, graph_from_data_frame 與graph_from_adjacency_matrix三種函數更符合我們分析的需求。例如上面KNN繪圖中使用的是graph_from_edgelist函數。具體可參看幫助文檔。

2.2 了解igraph對象
g1

如下圖igraph對象簡介信息分為4行3類

第1行重點關注那兩個數字,前者表示節點(實例)總數,後者表示邊(關係)總數。

第2行表示屬性attribute,分為三大類vertices(v) or edges(e) or graph(g)。例如本例中就只有節點vertices的names屬性,為character類型。還可以進一步設置節點屬性(set_vertex_attr())比如每個人的年齡,性別;邊屬性(set_edge_attr)如關係等級,互相打電話數等。函數vertex_attr, V and E用於查看igraph對象屬性。

第3、4行則主要具體展示了邊的信息。

 2.3 igraph對象可視化
plot(g1)

 

 

可視化過程涉及許多參數的設置,例如節點的大小/顏色/標籤...,邊的寬度/曲直/顏色....,還有最重要的是igraph提供多種多樣的整體布局方式layout。如不特殊設置,均按照默認值。關於igraph繪圖參數,可從3種途徑進行設置。下圖代碼展示的是在繪圖時,進行設置。
#設置隨機種子,保證結果穩定
set.seed(1)
plot(g, layout=layout_with_gem, vertex.size=4,
     vertex.label.dist=0.5, vertex.color="red",edge.width=2)

 


此外tkplot()函數可繪製交互式結果,rglplot()函數可繪製3D結果

以上簡單介紹了創建igraph對象--了解igraph對象--igraph可視化三個步驟,實際可進行多種多樣的複雜分析(該包的函數幫助文檔有400+頁)。

到時可結合需求,再了解下這個包,例如上面提到的KNN展示。

參考連結 

1、Create a single cell Graph  https://nbisweden.github.io/workshop-scRNAseq/oldlabs/igraph.html

2、igraph R package  https://igraph.org/r/

3、igraph R manual pages  https://igraph.org/r/doc/aaa-igraph-package.html

網頁工具完成不了這樣個性化數據分析哦

目前沒有成熟的網頁工具支持這樣的分析。其實呢,如果你有時間請務必學習編程基礎,自由自在的探索海量的公共數據,輔助你的科研,那麼:

如果你沒有時間從頭開始學編程,也可以委託專業的團隊付費拿到同樣的數據分析, 普通的單細胞公共數據集的《質控降維聚類分群和生物學注釋》,僅需800元,如果是文章裡面的《利用igraph包可視化基於KNN的單細胞聚類關係》,價格翻倍,但都是可以拿到全部的數據和代碼哦!

提供半個小時左右的一對一講解單細胞數據處理背景知識。

如果需要委託,直接在我們《生信技能樹》公眾號留言即可,我們會安排合適的生信工程師對接具體的項目。

相關焦點

  • 高歌團隊發布單細胞轉錄組數據檢索新方法和參考資料庫
    若能有效利用現有的單細胞數據進行檢索與推斷,研究者便能更好地進行新測序單細胞的注釋,以及綜合多數據集的研究。然而,精確的單細胞轉錄組數據檢索和注釋需要克服兩個挑戰:一、數據集之間的批次效應(batch effect)會顯著影響細胞檢索的可靠性;二、目前缺少跨物種和平臺、具有高質量注釋的單細胞轉錄組資料庫。
  • 希望組正式推出納米孔單細胞全長轉錄組測序分析服務
    希望組實測數據表明單個PromethION晶片可產出總量約70G的數據,平均reads的質量在9.0-11.0之間,reads的平均長度和N50長度均達到了1.2-1.5Kb (圖1)。不管是數據產出還是reads質量與長度,納米孔單細胞全長轉錄組都與常規納米孔全長轉錄組測序指標相當。
  • 用米氏方程解決單細胞轉錄組dropout現象
    今天要介紹的這篇文章提出了一個算法,R包是:M3Drop , 文章是:M3Drop: dropout-based feature selection for scRNASeq挑選重要基因目前已有的尋找單細胞轉錄組測序數據中的重要基因(feature selection)的方法都不夠好,比如 scLVM 主要是根據先驗基因集,比如cell-cycle or apoptosis來區分細胞
  • 《自然·醫學》:人類首次描繪月經周期中子宮內膜單細胞轉錄組圖譜
    該研究使用單細胞測序技術,系統地表徵了月經周期這一人類獨特的生理過程。通過單細胞轉錄組分析,可在分子和定量水平將月經周期分為四個主要階段,並且能夠更精確地確定胚胎「著床窗口」。研究團隊使用兩個不同的單細胞測序平臺分析了29位不同女性的子宮內膜活檢,每個女性在月經周期進行了一次採樣。整個轉錄組無偏見分析了子宮內膜的主要細胞類型:上皮細胞、成纖維細胞、內皮細胞、免疫細胞和幹/祖細胞。
  • 一種新的RNA測序方法:什麼是單細胞轉錄組學?
    單細胞轉錄組學是下一代RNA測序方法,可以高解析度查看細胞。來自南丹麥大學,惠康桑格研究所和BGI的研究人員在《基因組生物學》雜誌上發表了這項研究。什麼是單細胞轉錄組學?RNA測序使用下一代測序來分析樣品中RNA的存在。1,2根據南丹麥大學的說法,單細胞轉錄組學(即scRNA-seq)是一種下一代測序方法,可同時測量單個細胞中數千種基因的信使RNA濃度(由DNA / 基因組 /遺傳藍圖編碼)。
  • 月經周期過程人類子宮內膜的單細胞轉錄圖譜
    通過對組織靜態和動態的研究,研究者發現標誌事件的分子特徵,例如WOI,並且對人類月經周期子宮內膜細胞在細胞類型、狀態、增殖和分化水平轉化提供了一個系統單細胞轉錄組的描述。結果為了描述在自然的人類月經周期中子宮內膜細胞的轉化,研究者在19名健康的卵子捐獻者月經出血開始後4-27天後收集了子宮內膜活檢。
  • 搞定轉錄組入門分析?必備技能看這裡
    隨著高通量測序技術的迅猛發展,轉錄組分析逐漸發展成為一項基礎的研究方法在生物學個領域得到廣泛的應用。在轉錄組分析入門的過程中,您是否遇到這樣的問題:看了一篇篇的入門乾貨,依然無從下手;因缺少數據分析的環境,空有一肚子的理論無法實踐;按照教程一步步實踐,可就是無法產生相同的結果;面對種類繁多的數據挖掘工具,應該怎麼選擇?
  • 科研人員開發出基於深度學習的單細胞轉錄組分析模型
    單細胞轉錄組作為單個細胞的特徵,可更加精確地定義細胞的類型。常規的基於單細胞轉錄組的分類方法首先是進行無監督的聚類,然後根據每個集群(Cluster)特異表達的細胞標記基因來對集群進行標註。雖然基於無監督的分類方法更容易發現新細胞類型,但是人工標註的過程費時費力。
  • 微陣列空間轉錄組與單細胞測序揭示胰腺癌結構
    微陣列空間轉錄組與單細胞測序揭示胰腺癌結構 作者:小柯機器人 發布時間:2020/1/16 10:36:33 美國紐約大學Itai Yanai團隊利用基於微陣列的空間轉錄組學和單細胞RNA測序
  • 單細胞ATAC分析搞不懂?看過這篇文章就明白了
    這些基因組 feature 會結合在一起形成一個集合以準確分析細胞異質性。一些工具簡單地合併鄰近 peak 或直接將它們用作生成的 feature,而無需注釋基因組元素。 3.4. 批次校正和數據整合 當需要同時分析多批次的 scATAC-seq 數據時,一些非生物學因素(例如技術差異)可能會導致錯誤的生物學假設。
  • ...課題組攜手北醫三院喬傑課題組首次利用單細胞轉錄組和DNA甲基...
    結合體外模擬人類著床策略1和高精度單細胞多組學測序技術2,3(single-cell RNA-seq, single-cell Trio-seq2),首次利用單細胞轉錄組和DNA甲基化組圖譜重構了人類胚胎著床過程,系統解析了這一關鍵發育過程的基因表達調控網絡和DNA甲基化動態變化過程。
  • 科學家繪製出月經周期中人類子宮內膜的單細胞轉錄組圖譜
    科學家繪製出月經周期中人類子宮內膜的單細胞轉錄組圖譜 作者:小柯機器人 發布時間:2020/9/16 14:23:21 美國史丹福大學Stephen R.
  • 單細胞轉錄組測序中的批次效應知多少? (下)
    雖然其中一些差異將導致很難甚至不可能預測和逆轉的轉錄變化,還有一些則可以輕易去除。因此,對有批次效應的數據,可以做的事就是先去除已知的批次效應。這裡將重點介紹 10X 單細胞表達數據。(生物學知識確定有點雜亂無章)
  • Genome Biology|DISC:使用半監督深度學習推斷單細胞轉錄組的基因...
    「dropout」事件使單細胞轉錄組中的基因表達變形並導致錯誤地分類細胞類型。儘管插補可以在某種程度上改善基因表達和下遊分析,但也不可避免地會引入額外的噪聲。本文開發了DISC,這是一種新型的深度學習網絡,具有半監督學習功能,可以推斷出因「dropout」事件而被遮蓋的基因結構和表達。在十個實際數據集上與七種最新的插補方法相比,DISC始終優於其他方法。
  • ...張世華課題組提出解決單細胞轉錄組數據高度缺失及稀疏的新方法
    然而,在單細胞層次上,轉錄組的隨機波動會遠遠大於細胞群體的平均行為,由於每個細胞的mRNA拷貝起始量較低以及測序技術原因,單細胞轉錄組測序數據通常存在drop-out現象,即很多表達的mRNA沒有被捕捉到,導致檢測出來的基因表達量為零或者接近零。
  • 單細胞轉錄組學揭示肝實質和非實質細胞譜系的早期出現
    單細胞轉錄組學揭示肝實質和非實質細胞譜系的早期出現 作者:小柯機器人 發布時間:2020/10/31 20:57:43 加拿大特裡福克斯實驗室Pamela A. Hoodless團隊近日取得一項新成果。
  • 網課《腦神經的空間轉錄組分析》回放
    圖例是和前一張圖一樣的,我就不重複了。 在這張圖裡,左半邊是空間轉錄組的分析結果,右半邊是全轉錄組的分析結果,全轉錄組也就是傳統的RNA-seq。 4、結合10x單細胞數據進行分析在以往的研究中,已經積累了大量的腦皮層的10x單細胞測序的數據。現在我們要把這些數據和空間轉錄組的數據結合起來做分析。先把10x的單細胞數據,通過富集的方法,把每個細胞簇歸到對應的層
  • 一周內教會您單細胞測序數據挖掘分析和課題設計 2020年8月10-14日線上
    1、了解單細胞測序基本概念及原理2、了解單細胞測序分析的常用軟體3、掌握單細胞測序數據的下載方法4、掌握單細胞測序數據的研究思路5、學會R語言基本語法和繪圖技巧6、學會用R代碼進行單細胞轉錄組分析並作圖7、熟悉CNS雜誌單細胞轉錄組文章思路8、熟悉零成本的單細胞相關課題設計思路
  • 有袋動物胚胎發育和X染色體失活單細胞轉錄組圖譜的揭示
    有袋動物胚胎發育和X染色體失活單細胞轉錄組圖譜的揭示 作者:小柯機器人 發布時間:2020/8/21 15:43:54 英國弗朗西斯·克裡克研究所James M. A.