1、用reticulate包调用了py的grnboost2包,据说可以大大加快此步骤。到现在跑了十几个小时了,还没结束,数据是2万个细胞。看CPU占用率很低啊,就和日常不跑代码的占用率差不多啊。不知道要跑多久。
4.精简版流程_哔哩哔哩_bilibili
代码如下:
arb.algo = import("arboreto.algo")
tf_names = getDbTfs(scenicOptions)
tf_names = Seurat::CaseMatch(
search = tf_names,
match = row.names(exprMat_filtered))
adj = arb.algo$grnboost2(
as.data.frame(t(as.matrix(exprMat_filtered))),
tf_names = tf_names, seed=2023L
)
colnames(adj) = c("TF","Target","Weight") # 修改列名
saveRDS(adj, file= getIntName(scenicOptions,
'genie311') )
2、 也可以单独把这一步在Python中运行
看到一篇帖子说可以单独把GENIE3在python里面代替进行,给了两个网页参考,先记录一下,备用。
还有一种方法,因为这个包里面限速的步骤是GENIE3(R里面),也可以单独把这一步在Python中运行(GRNBoost,其他步骤可在R中运行),生成的结果保存到R中的/int目录下。具体操作:
https://github.com/aertslab/SCENIC/issues/40
https://arboreto.readthedocs.io/en/latest/examples.html
转自:pySCENIC - 简书 (jianshu.com)
3、或者通过筛选细胞,从而减少运算量2019-08-28第七天:关于SCENIC的使用教程 - 简书 (jianshu.com)
SCENIC流程的第一步是根据表达数据推测潜在的转录因子靶点。因为我们使用了GENIE3或者GRNBoost这两种方法。这两个工具的输入文件都是经过筛选的表达矩阵,以及一个转录因子列表。其输出文件及相关性矩阵将会被用来建立共表达模块(使用函数runscenic——1——coexnetwork2modules())
选择这两个工具的依据为:原则上,推测共表达网络的目前大多方法都可以使用这个过程的输出文件,只要他的输出文件是一个包含每个转录因子的潜在靶点的列表即可。我们选择GENIE3是因为它可以确定非线性的关系,即使他们只存在于一部分样品中。同时它在Network inference DREAM5挑战中具有很好的表现。同时这个方法可以很好的运行在R中。
然而,GENIE3是非常耗时的以及对计算力有严重的消耗,比如在处理3k到5k个细胞的时候可能会花费几个小时。因此为了处理大数据集,我们开发了GRNBoost算法,这个算法提供与GENIE3相似的结果,但是时间上大大节省了,因此我们强烈推荐大家在处理大数据集的时候使用它。
二次取样细胞:当在你的数据集中存在大量的低质量的细胞时,也会消耗大量的时间,因此我们可以使用这种方法去挑选其中一部分的细胞来推断调控网络
,比如随机挑选或者使用高质量的细胞的表达矩阵作为输入对象来进行共表达分析。其中调控网络的活性会根据这个小细胞集进行训练,但是在之后的第三步中可以使用全部的细胞在AUCell中重新评估
。值得注意的是,为了避免丢失分辨率,这个小细胞集应该尽可能代表所有细胞,比如可以包含所有的细胞种类。