單細(xì)胞轉(zhuǎn)錄組學(xué)習(xí)筆記-5-熟悉文獻(xiàn)作者提供的兩個(gè)表達(dá)矩陣

轉(zhuǎn)載來(lái)自:劉小澤 鏈接:http://www.reibang.com/p/e659a2f164f7

劉小澤寫(xiě)于19.6.17-第二單元第三講:熟悉文獻(xiàn)作者提供的兩個(gè)表達(dá)矩陣

筆記目的:根據(jù)生信技能樹(shù)的單細(xì)胞轉(zhuǎn)錄組課程探索smart-seq2技術(shù)相關(guān)的分析技術(shù)
鏈接在:https://www.bilibili.com/video/BV1dt411Y7nn?p=6

過(guò)濾后的操作

上次得到的dat表達(dá)矩陣過(guò)濾掉低表達(dá)基因后,剩下12198個(gè)基因

看看其中的spike-in情況

grep('ERCC',rownames(dat))
[1] 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150
[13] 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162
[25] 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174
[37] 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186
[49] 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198

一、去除細(xì)胞文庫(kù)大小差異 (歸一化 cpm法)

每個(gè)細(xì)胞測(cè)得數(shù)據(jù)大小不同轨奄,這樣是沒(méi)辦法看高表達(dá)還是低表達(dá)的芜飘,必須先保證基數(shù)一樣才能比較,cpm(counts per million)這個(gè)算法就是做這個(gè)事情的埠对。

cpm是歸一化的一種方法下愈,代表每百萬(wàn)堿基中每個(gè)轉(zhuǎn)錄本的count值

注意:這個(gè)算法只是校正文庫(kù)差異,而沒(méi)有校正基因長(zhǎng)度差異要尔。要注意我們分析的目的就是:比較一個(gè)基因在不同細(xì)胞的表達(dá)量差異,而不是考慮一個(gè)樣本中不同兩個(gè)基因的差異新娜,因?yàn)?沒(méi)有兩片相同的樹(shù)葉”這個(gè)差異是正常的赵辕。但是同一個(gè)基因由于某種條件發(fā)生了改變,背后的生物學(xué)意義是更值得探索的概龄。

用起來(lái)很簡(jiǎn)單还惠,有現(xiàn)成的函數(shù)cpm() ,然后我們?cè)儆胠og將數(shù)據(jù)降個(gè)維度私杜,但保持原有數(shù)據(jù)形狀不變:log2(edgeR::cpm(dat)+1)

意思就是:cpm需要除以測(cè)序總reads數(shù)蚕键,而這個(gè)值作為分母會(huì)導(dǎo)致結(jié)果千差萬(wàn)別,有的特別大有的很小衰粹。為了后面可視化不受極值的影響锣光,用log轉(zhuǎn)換一下可以將數(shù)值變小,并且原來(lái)大的數(shù)值最后還是大铝耻,并不改變這個(gè)現(xiàn)實(shí)

那么具體這個(gè)函數(shù)做了什么事誊爹,才是真正需要了解的:

# 先看看前4行4列的數(shù)據(jù)
>   dat[1:4,1:4] 
              SS2_15_0048_A3 SS2_15_0048_A6 SS2_15_0048_A5 SS2_15_0048_A4
0610007P14Rik              0              0             18             11
0610009B22Rik              0              0              0              0
0610009L18Rik              0              0              0              0
0610009O20Rik              0              0              1              1
# 比如先計(jì)算一下第三個(gè)樣本的總測(cè)序量
> sum(dat[,3])
[1] 206831 #結(jié)果是0.2M
# 那么對(duì)于第三個(gè)樣本SS2_15_0048_A5的第一個(gè)基因0610007P14Rik(結(jié)果是18)
# 計(jì)算它的cpm值:count值*1000000/總測(cè)序reads
> 18*1000000/206831
[1] 87.02757
# 和標(biāo)準(zhǔn)公式比較看看,結(jié)果完全相同
> edgeR::cpm(dat[,3])[1]
[1] 87.02757
# 因此最后就是
dat=log2(edgeR::cpm(dat)+1) 

二、歸一化后聚類(lèi)

主要步驟為:
1频丘、用dist函數(shù)計(jì)算細(xì)胞直接的距離办成,用hclus進(jìn)行層次聚類(lèi),用cutree提取分群的數(shù)目(比如分成4個(gè)cluster)搂漠。注釋到每個(gè)細(xì)胞所在的cluster數(shù)迂卢。
2、用strsplit提取每個(gè)細(xì)胞的板號(hào)状答,用apply計(jì)算每個(gè)細(xì)胞的基因表達(dá)總數(shù)冷守。

第一步:理解dist函數(shù)

首先理解,它是計(jì)算距離用的惊科,正如函數(shù)名稱所描述的一樣:distance

# 先構(gòu)建一個(gè)測(cè)試矩陣
x=1:5
y=2*x
z=52:56
tmp=data.frame(x,y,z)
> tmp
  x  y  z
1 1  2 52
2 2  4 53
3 3  6 54
4 4  8 55
5 5 10 56
# 可以看到拍摇,x和y是有一定相關(guān)性的,而z和它們很難扯上關(guān)系
# 然后嘗試計(jì)算x馆截、y充活、z之間的距離,來(lái)驗(yàn)證我們的猜想
>   dist(tmp)
         1        2        3        4
2 2.449490                           
3 4.898979 2.449490                  
4 7.348469 4.898979 2.449490         
5 9.797959 7.348469 4.898979 2.449490
# 好像得到的不是我們想要的蜡娶。我們想要的是x混卵、y、z距離結(jié)果窖张,而計(jì)算給出的是以"行"為單位的結(jié)果
# 因此幕随,猜測(cè)dist應(yīng)該是以行為輸入。因此修改一下tmp宿接,讓x赘淮、y、z為行睦霎,其實(shí)也就是轉(zhuǎn)置一下梢卸,轉(zhuǎn)置函數(shù)用t()
>   dist(t(tmp))
           x          y
y   7.416198           
z 114.039467 107.377838

>   cor(tmp)
           x           y           z
x  1.00000000  1.00000000 -0.09844392
y  1.00000000  1.00000000 -0.09844392
z -0.09844392 -0.09844392  1.00000000

>  dist(t(scale(tmp)))
      x        y
y 0.000000         
z 4.446571 4.446571

# 可以看到dist函數(shù)計(jì)算樣本直接距離和cor函數(shù)計(jì)算樣本直接相關(guān)性,是完全不同的概念副女。雖然我都沒(méi)有調(diào)它們兩個(gè)函數(shù)的默認(rèn)的參數(shù)蛤高。
  # 
  # 總結(jié):
  # 
  # - dist函數(shù)計(jì)算行與行(樣本)之間的距離
  # - cor函數(shù)計(jì)算列與列(樣本)之間的相關(guān)性
  # - scale函數(shù)默認(rèn)對(duì)每一列(樣本)內(nèi)部歸一化
  # - 計(jì)算dist之前,最好是對(duì)每一個(gè)樣本(列)進(jìn)行scale一下
  # 

同樣的碑幅,我們這里的dat數(shù)據(jù)戴陡,是要計(jì)算細(xì)胞間的距離,也就是列與列之間的距離沟涨,使用dist(t(dat)) 計(jì)算猜欺。數(shù)據(jù)中有768個(gè)細(xì)胞,也就是要計(jì)算768個(gè)細(xì)胞核768個(gè)細(xì)胞之間的距離拷窜,計(jì)算量還是很大的。

關(guān)于dist計(jì)算距離的方法:主要有6種:”歐式euclidean”, “切比雪夫距離maximum”, “絕對(duì)值距離manhattan”, “Lance距離canberra”, “定型變量距離binary” or “明可夫斯基距離minkowski(使用時(shí)要指定p值)”。

默認(rèn)使用第一種歐氏距離篮昧,它計(jì)算的是:幾何空間中兩點(diǎn)之間的距離赋荆。思想類(lèi)似于勾股定理求第三條斜邊的長(zhǎng)度=》平方和再開(kāi)方。

第二步:理解hclust函數(shù)

它是進(jìn)行層次聚類(lèi)(系譜聚類(lèi))的方法

關(guān)于hclust聚類(lèi)的方法:”離差平方和法ward”, “最短距離法single”, “最長(zhǎng)距離法complete”,”類(lèi)平均法average”, “相似法mcquitty”, “中間距離法median” or “重心法centroid”懊昨。默認(rèn)使用complete算法

hc=hclust(dist(t(dat))) 
# 如果要進(jìn)行可視化
plot(hc,labels = FALSE) #labels這個(gè)選項(xiàng)的意思是不顯示各個(gè)樣本名稱窄潭,因?yàn)闃颖咎啵瑫?huì)讓圖看起來(lái)很亂

image

另外hclust函數(shù)還有一個(gè)親戚:cutree酵颁,顧名思義嫉你,就是對(duì)聚類(lèi)樹(shù)進(jìn)行修剪。我們知道聚類(lèi)結(jié)果是分群的躏惋,cutree就是指定輸出哪些群(結(jié)果是從大群到小群排列)

# 例如要看看分的4大群
clus = cutree(hc, 4)
group_list= as.factor(clus) #得到的這個(gè)因子型變量group_list中樣本順序和輸入的順序一致幽污,并且屬于第幾類(lèi)都有記錄
>   table(group_list) 
group_list
  1   2   3   4 
312 300 121  35 

提取批次信息

在上一步操作結(jié)果中,可以看到簿姨,樣本名都是有規(guī)律的距误,例如:

> head(colnames(dat))
[1] "SS2_15_0048_A3" "SS2_15_0048_A6" "SS2_15_0048_A5" "SS2_15_0048_A4"
[5] "SS2_15_0048_A1" "SS2_15_0048_A2"

其中SS2_15都是一樣的,Pxx也不需要管扁位,重要的是中間的0048准潭、0049,表示兩個(gè)384孔板編號(hào)

那么如何提扔虺稹刑然?

使用strsplit函數(shù),strsplit(x, split, fixed = FALSE) 暇务,需要注意兩點(diǎn):

  • 字符串切分后泼掠,返回的是一個(gè)列表,如果要再還原成字符串般卑,需要用unlist()

  • 默認(rèn)情況下它是使用正則表達(dá)式的武鲁,如果不想用,可以指定fixed = TRUE

    > unlist(strsplit("a.b.c", "."))
    [1] "" "" "" "" ""
    > unlist(strsplit("a.b.c", ".", fixed = TRUE))
    [1] "a" "b" "c"
    
    
# 方法一:純base包(思路就是:將拆分得到的list變成數(shù)據(jù)框)
options(stringsAsFactors = F)
plate=do.call(rbind.data.frame,strsplit(colnames(dat),"_"))[,3] 
# 方法二:stringr包
library(stringr)
plate=str_split(colnames(dat),'_',simplify = T)[,3] 

統(tǒng)計(jì)每個(gè)樣本的基因表達(dá)數(shù)目

主要使用cutree剪下來(lái)的層次聚類(lèi)信息蝠检、細(xì)胞板批次信息沐鼠、每個(gè)樣本的基因表達(dá)信息

前兩個(gè)已經(jīng)具備,下面進(jìn)行第三個(gè):每個(gè)樣本的基因表達(dá)信息

# 還記得之前對(duì)基因進(jìn)行過(guò)濾時(shí)叹谁,我們是對(duì)行進(jìn)行操作
apply(a,1, function(x) sum(x>1) > floor(ncol(a)/50))
# 這里檢測(cè)每個(gè)樣本中有多少基因是表達(dá)的饲梭,count值以1為標(biāo)準(zhǔn),rpkm值可以用0為標(biāo)準(zhǔn)
n_g = apply(a,2,function(x) sum(x>1))
# 對(duì)于單細(xì)胞轉(zhuǎn)錄組焰檩,一般會(huì)有超過(guò)半數(shù)的基因不會(huì)表達(dá)(這個(gè)在下面構(gòu)建完數(shù)據(jù)框還可以再看一下) 

最后新建細(xì)胞的屬性信息

可以構(gòu)建數(shù)據(jù)框了:

meta=data.frame(g=group_list,plate=plate,n_g=n_g)
# 然后再添加一列憔涉,目前用不到,后續(xù)會(huì)介紹
meta$all='all'

image

可以看到細(xì)胞中檢測(cè)到表達(dá)的基因最多有7372個(gè)析苫,最少才幾十個(gè)兜叨,而我們總共有12000多個(gè)基因

作者:劉小澤
鏈接:http://www.reibang.com/p/33a7eb26bd31
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有穿扳。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處国旷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末矛物,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子跪但,更是在濱河造成了極大的恐慌履羞,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屡久,死亡現(xiàn)場(chǎng)離奇詭異忆首,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)被环,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)糙及,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蛤售,你說(shuō)我怎么就攤上這事丁鹉。” “怎么了悴能?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵揣钦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我漠酿,道長(zhǎng)冯凹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任炒嘲,我火速辦了婚禮宇姚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夫凸。我一直安慰自己浑劳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布夭拌。 她就那樣靜靜地躺著魔熏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸽扁。 梳的紋絲不亂的頭發(fā)上蒜绽,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音桶现,去河邊找鬼躲雅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛骡和,可吹牛的內(nèi)容都是我干的相赁。 我是一名探鬼主播相寇,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼噪生!你這毒婦竟也來(lái)了裆赵?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤跺嗽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后页藻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體桨嫁,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年份帐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了璃吧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡废境,死狀恐怖畜挨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情噩凹,我是刑警寧澤巴元,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站驮宴,受9級(jí)特大地震影響逮刨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜堵泽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一修己、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迎罗,春花似錦睬愤、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至钻蔑,卻和暖如春啥刻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咪笑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工可帽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窗怒。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓映跟,卻偏偏與公主長(zhǎng)得像蓄拣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子努隙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容