作为一个多细胞去除工具,DoubletFinder似乎很流行,另外有文章指出,这个工具相对于其他同类竞品工具具有优势,详见此文:
https://www.sciencedirect.com/science/article/pii/S2405471220304592
真的是不是最优秀的我不知道,我一贯对此类benchmark文章持怀疑态度。但似乎有一点比较肯定就是这个工具还可以。但是有一个问题非常的让我恼怒,就是没有重复性,同样的结果,多跑几次后你会发现,每次的结果都不一样。虽然这个差别在此一步是小差别,但是其影响确实很深远的,单从我的个人使用经验来看,DoubletFinder的不可重复直接导致你的最后的cell cluster形状变个不停。
也许你觉得这不是问题,只要保存一下结果下次继续就可以了,或者设施一下set.seed。保存结果,这虽然是个解决方案,但是在分析数据时,如果常需要调整其他的参数,进而必须要重新进行Doublet 去除,就会带来很大的困扰。如果你尝试过set.seed,你会发现根本不管用,那么问题在哪里呢?今天决定决绝这个问题,一劳永逸。
研究源代码后发现,问题的的关键是,该包的作者在多个函数你使用了sample函数,所以这就解释了问什么结果总是变,另外set.seed之所以没用,也是因为这个原因,作者前后在不同的自定义函数里使用了多个含有sample的函数,且每次使用都没有设定seed,在我看来,这应该算是个bug,虽然该工具只是预测Doublets,但是也不代表你可以没有重复性吧?
解决方案:
如果你想让自己的结果可重复,可以在以下函数加入set.seed(),这些函数分别是paramSweep_v3,parallel_paramSweep_v3,summarizeSweep。最好加在sample函数的前面。实测加了之后,结果就非常的可重复了。希望能帮你省点时间。