我正在处理一个通过单细胞RNA测序获得的表达矩阵,但我有一个问题与一位伙伴发给我的R代码有关。
sort(unique(1 + slot(as(data_matrix, "dgTMatrix"), "i")))
# there isn't more details in the code...从理论上讲,这个函数是删除未表达的基因(如果在所有样本中都是零,它认为……),但我不可能理解它,有人能给我一个提示吗?
发布于 2017-06-07 18:47:55
我想我已经理解了这段代码..。让我们试着解释一下!(如果我错了,请纠正我)。
我们的数据具有稀疏矩阵的结构(即。在内存方面,更方便的是使用link),而对于as,它被强制为这种矩阵的特定格式(稀疏矩阵的三元组格式,link):三列,i和j索引这些非零值。
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,]我对sort和1+有点困惑,但我认为这是基本概念。因此,总而言之,我们从这个非零行(基因)中提取行索引,并使用它来过滤我们的原始数据...另一种删除未表达基因的原创方法,很有趣!
https://stackoverflow.com/questions/44388583
复制相似问题