作為一個(gè)多細(xì)胞去除工具,DoubletFinder似乎很流行,另外有文章指出,這個(gè)工具相對(duì)于其他同類競(jìng)品工具具有優(yōu)勢(shì),詳見此文:
https://www.sciencedirect.com/science/article/pii/S2405471220304592
真的是不是最優(yōu)秀的我不知道,我一貫對(duì)此類benchmark文章持懷疑態(tài)度。但似乎有一點(diǎn)比較肯定就是這個(gè)工具還可以。但是有一個(gè)問(wèn)題非常的讓我惱怒,就是沒(méi)有重復(fù)性,同樣的結(jié)果,多跑幾次后你會(huì)發(fā)現(xiàn),每次的結(jié)果都不一樣。雖然這個(gè)差別在此一步是小差別,但是其影響確實(shí)很深遠(yuǎn)的,單從我的個(gè)人使用經(jīng)驗(yàn)來(lái)看,DoubletFinder的不可重復(fù)直接導(dǎo)致你的最后的cell cluster形狀變個(gè)不停。
也許你覺(jué)得這不是問(wèn)題,只要保存一下結(jié)果下次繼續(xù)就可以了,或者設(shè)施一下set.seed。保存結(jié)果,這雖然是個(gè)解決方案,但是在分析數(shù)據(jù)時(shí),如果常需要調(diào)整其他的參數(shù),進(jìn)而必須要重新進(jìn)行Doublet 去除,就會(huì)帶來(lái)很大的困擾。如果你嘗試過(guò)set.seed,你會(huì)發(fā)現(xiàn)根本不管用,那么問(wèn)題在哪里呢?今天決定決絕這個(gè)問(wèn)題,一勞永逸。
研究源代碼后發(fā)現(xiàn),問(wèn)題的的關(guān)鍵是,該包的作者在多個(gè)函數(shù)你使用了sample函數(shù),所以這就解釋了問(wèn)什么結(jié)果總是變,另外set.seed之所以沒(méi)用,也是因?yàn)檫@個(gè)原因,作者前后在不同的自定義函數(shù)里使用了多個(gè)含有sample的函數(shù),且每次使用都沒(méi)有設(shè)定seed,在我看來(lái),這應(yīng)該算是個(gè)bug,雖然該工具只是預(yù)測(cè)Doublets,但是也不代表你可以沒(méi)有重復(fù)性吧?
解決方案:
如果你想讓自己的結(jié)果可重復(fù),可以在以下函數(shù)加入set.seed(),這些函數(shù)分別是paramSweep_v3,parallel_paramSweep_v3,summarizeSweep。最好加在sample函數(shù)的前面。實(shí)測(cè)加了之后,結(jié)果就非常的可重復(fù)了。希望能幫你省點(diǎn)時(shí)間。