系統學習單細胞轉錄組測序scRNA-Seq(四+)

劉小澤寫于19.3.26
這次主要內容是更新一下第四期的QC部分,另外簡單看一下標準化(沒有涉及流程),因此標題定了一個 四plus

慢慢翻開細枝末節

上一次說到了加載、創建、獲取single-cell數據集質控(細胞、基因兩個層次),繼續進行~

上一次質控環節的一些補充說明[主要更新在于過濾更加全面]

根據文庫大小過濾細胞時,我們是根據密度圖進行選擇,閾值也是按照5%設定的。今天突然想起來,其實還有另一種閾值選擇方法,也許更有說服力

# Calculate QC metrics[上一次的代碼]
> library(scater)
> sce2 <- calculateQCMetrics(sce2, feature_controls = list(ERCC = isSpike(sce2, "ERCC")))
# names(colData(sce2))
#####################################
# 畫個直方圖
# 理論上分選細胞是遵循“無限稀釋”=》泊松分布的“鐘形曲線”
# 如果表達量太高(最右側),可能是一孔兩個細胞(doublets);
# 如果表達量太低(最左側),可能是細胞質量不好或沒有細胞
#####################################
> hist(
    sce2$total_counts,
    breaks = 100
)
> abline(v=1.3e6, col="red")
# 這樣是不是就更直觀了呢?
> table(keep)
keep
FALSE  TRUE 
  180   684 
根據泊松分布定閾值

除了對總文庫大小total_count進行過濾,還可以根據 細胞中檢測到的基因數(the number of detected genes in all cells)進行過濾

> hist(
+     sce2$total_features_by_counts,
+     breaks = 100
+ )
> abline(v = 7000, col = "red")
> filter_by_expr_features <- (sce2$total_features_by_counts > 7000)
> table(filter_by_expr_features)
filter_by_expr_features
FALSE  TRUE 
  116   748 

# 另外根據ERCC結果可以去掉NA19098.r2這個重復,并且選擇ERCC占比低于25的(這個閾值是自定義的)
> filter_by_ERCC <- 
    sce2$batch != "NA19098.r2" & sce2$pct_counts_ERCC < 25
> table(filter_by_ERCC)
filter_by_ERCC
FALSE  TRUE 
  103   761 

一般來講,QC過濾的方法可以根據:表達的基因數量(total number of unique genes detected in each sample.);文庫大小( total number of RNA molecules detected per sample);ERCC、線粒體基因與內源基因的比率(pct_counts_ERCC、pct_counts_MT)[這個比率高說明細胞有可能死亡或者表達受到抑制,即得不到什么表達量]

sce2$use <- (
    # sufficient features (genes)
    filter_by_expr_features &
        # sufficient molecules counted
        filter_by_total_counts &
        # sufficient endogenous RNA
        filter_by_ERCC 
        # remove cells with unusual number of reads in MT genes
        # filter_by_MT
)

上面??是細胞過濾,下面??是基因過濾

做完QC后,可以進行可視化,檢查一下基因表達量(主要看前50),目的是看一下實驗設計的spikein如何

plotQC(sce2, type = "highest-expression")
# 結果分布比較平穩表示細胞中全轉錄組的覆蓋度比較好(粗略來看),前15個基因存在一些spike-in(已知濃度的外源RNA分子),因此如果下一步重復實驗的話,可以將spikein的比重降低
QC可視化

過濾基因(還是根據至少2個細胞中存在表達量大于1的基因的標準)

filter_genes <- apply(
    counts(sce2[ , colData(sce2)$use]), 
    1, 
    function(x) length(x[x > 1]) >= 2
)
rowData(sce2)$use <- filter_genes
dim(reads[rowData(reads)$use, colData(reads)$use])
assay(reads, "logcounts_raw") <- log2(counts(reads) + 1)
reducedDim(reads) <- NULL
save(sce2, file = "sce2.RData")

標準化

為何需要標準化?

分析單細胞數據其中一個目的就是找到感興趣的biological signal ,還是以下圖為例:

我們可以根據基因表達量將細胞分組,但是這里比較關心的是找到不同細胞亞群的biomarker,然后使用不同的藥物治療。找biomarker的過程并不簡單,其中會引入許多的人工技術性誤差,以至于掩蓋掉真正關心的生物學差異

對癥下藥

其中一個混雜因素就是"批次效應(batch effect)"。下圖中將兩組(NA19098和NA19101)進行PCA分析,每個點是一個細胞,細胞被投射到不同維度上,選擇其中兩個可以代表變化/方差最大的維度來表示數據特征。可以看到,細胞分別按照個體(individual)和批次(batch)進行分組。

按照個體劃分是理所當然的,因為我們就是要看看不同個體之間的biological signal,但是按照批次分組就有點說不通了,只是因為細胞是不同批次測序的,而有的批次之間并沒有太大的差別,這種情況就屬于技術上分組,而不是生物意義上分組。因此,標準化的目的就是:移除不想要的技術差異(例如批次效應),同時保存感興趣的生物學相關的差異

PCA
標準化方法有許多
  • 最直接:將表達矩陣的每一列除以標準化因子(normalization factor),這個因子可以是文庫大小或者文庫大小除以1,000,000(也就是counts per million,CPM);另外像RPKM、TPM都是這種形式的變體
  • 其他方法:每個count除以各自不同的歸一化因子(scaling factor)。不同方法計算的scaling factor不同,例如
    • edgeR中的Weighted trimmed mean of M-values (TMM)
    • DESeq中是每個基因在所有細胞中的幾何平均數(geometric mean)
    • scran中是zero inflation

歡迎關注我們的公眾號~_~  
我們是兩個農轉生信的小碩,打造生信星球,想讓它成為一個不拽術語、通俗易懂的生信知識平臺。需要幫助或提出意見請后臺留言或發送郵件到jieandze1314@gmail.com

Welcome to our bioinfoplanet!

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

推薦閱讀更多精彩內容