2017-06-06 45 views
0

我與單細胞RNA測序獲得的表達矩陣的工作,但我必須使用R代碼的一個隊友給我發了相關的一個問題...函數含義,它是如何刪除零表達基因的?

sort(unique(1 + slot(as(data_matrix, "dgTMatrix"), "i"))) 
# there isn't more details in the code... 

從理論上講,這個功能是刪除沒有表達的基因(如果它在所有樣本中都爲零,它認爲...),但是我不可能理解它,任何人都可以給我一個小費?

+0

你的對象data_matrix被轉換爲dgTMatrix,這個對象可能有不同的插槽,但你只對I感興趣。出於某種原因你給它們加1,而你只保留唯一的值。沒有什麼是「刪除」的。這很難進一步幫助,考慮給我們輸出(head(dgTMatrix,50))' –

+0

@Moody_Mudskipper,謝謝你的幫助!我想我剛剛瞭解代碼(請參閱下面的答案)。 – jgarces

回答

0

嗯,我想我已經理解了這個代碼...讓我們試着解釋它! (請糾正我,如果我錯了)。

我們的數據有稀疏矩陣(即關於內存的詳細handly,link),用as它強制轉換爲特定的格式,這種矩陣(稀疏矩陣三元組格式,link)的結構:三列與ij索引爲這些非零值。

y <- matrix_counts # sparse matrix   
       AAACCTGAGAACAACT-1 AAACCTGTCGGAAATA-1 AAACGGGAGAGCTGCA-1 
ENSG00000243485     1     .     .     
ENSG00000237613     .     .     2 

y2 <- as(y, "dgTMatrix") #triplet format for sparse matrix 
    i j x 
1 9 1 1 #in row(9) and column(1) we have the value 1 
2 50 1 2 
3 60 1 1 
4 62 1 2 
5 78 1 1 
6 87 1 1 

後,只需要列的「i」(slot(data, "i")),因爲我們只需要行索引(知道行是零不同),並刪除重複(unique)最終得到的是矢量與該行的索引將被用於過濾原始數據:

y3 <- unique(1 + slot(as(exprs(gbm), "dgTMatrix"), "i")) 
[1] 9 50 60 62 78 87 
data <- data_raw[y3,] 

我與sort1+有點糊塗,但我認爲這是基本的概念。因此,總結一下,我們從這個非零行(基因)中取出行索引,並用它來過濾我們的原始數據......另一種刪除非表達基因的原始方法,有趣!