構(gòu)建可重復(fù)的單細(xì)胞數(shù)據(jù)分析流程

科學(xué)研究的過(guò)程可重復(fù)性可以說(shuō)是一件不言而喻的事情:如果你提出一觀點(diǎn)或發(fā)現(xiàn)一個(gè)現(xiàn)象响逢,在別人那里完全重復(fù)不出來(lái)少漆,誰(shuí)知道是不是臆想呢逸嘀?但是有時(shí)候重復(fù)人家的研究結(jié)論又會(huì)顯得不可理喻:分析的環(huán)境枉氮,軟件的版本制市,試劑的保質(zhì)期抬旺,甚至是歷史條件都會(huì)成為不可重復(fù)的原因。然而祥楣,我們?nèi)匀蛔鲋@樣的努力开财,至少我們看到數(shù)據(jù)科學(xué)家在做著這樣的努力。

分析可重復(fù)也是對(duì)數(shù)據(jù)科學(xué)家的基本要求之一误褪,你不能給出資方一個(gè)不可重復(fù)的結(jié)果责鳍。在這方面R語(yǔ)言和Python都有相應(yīng)的工程技術(shù)來(lái)保證數(shù)據(jù)科學(xué)的可重復(fù)性,今天我們主要講一講R語(yǔ)言生態(tài)的單細(xì)胞數(shù)據(jù)分析可重復(fù)性流程構(gòu)建方法兽间。其實(shí)大家會(huì)看到講的主要是R語(yǔ)言里面的項(xiàng)目管理薇搁,或者換句話說(shuō):Rmarkdown 在單細(xì)胞數(shù)據(jù)分析中的應(yīng)用。

本文既來(lái)自不才的單細(xì)胞數(shù)據(jù)分析經(jīng)驗(yàn)渡八,也來(lái)自下面這個(gè)報(bào)告的啟發(fā)啃洋。

不要問(wèn)我下鏈接,好不好屎鳍?

R語(yǔ)言在數(shù)據(jù)可重復(fù)上做的努力宏娄,集中地體現(xiàn)在一個(gè)項(xiàng)目上:http://ropensci.github.io/reproducibility-guide/。在這個(gè)項(xiàng)目中我們可以看到一些可用的R包和原則逮壁。

構(gòu)建可重復(fù)的單細(xì)胞數(shù)據(jù)分析流程另一個(gè)需求是現(xiàn)在的期刊的編輯也學(xué)會(huì)閱讀代碼了:

Top Ten Reasons to Not Share Your Code(washington,2012)
Does your code stand up to scrutiny?(nature,2018)
As a reviewer, can I justify requesting data and code be made available even if the journal does not?
Should You Publish Your Research Data? The New Trend of Data Journals

很多有規(guī)模的學(xué)術(shù)期刊都有專門的提交原始數(shù)據(jù)的數(shù)據(jù)庫(kù)和儲(chǔ)存代碼的代碼池孵坚,盡管還有很多是利用公共的數(shù)據(jù)和github,但是這個(gè)趨勢(shì)已經(jīng)很明顯了:需要提供code and data。這對(duì)一個(gè)行業(yè)當(dāng)然是有加速作用的卖宠,降低了行業(yè)入門的門檻巍杈。

以上,要求構(gòu)建可重復(fù)的單細(xì)胞數(shù)據(jù)分析流程扛伍,而且在技術(shù)上已經(jīng)成為可能筷畦。這對(duì)做科技服務(wù)的公司也有一點(diǎn)啟發(fā):交付代碼也許會(huì)成為常態(tài)。

那我們就看看有哪些需要考慮的:

  • 分析環(huán)境(conda刺洒,Docker)
  • 軟件版本(git)
  • 隨機(jī)種子(seed)
  • 團(tuán)隊(duì)寫作(git)
  • 流程管理(Snakemake )
  • 文檔材料(Rmarkdown)

整個(gè)數(shù)據(jù)分析流程的環(huán)境可以用conda來(lái)創(chuàng)建和維護(hù)鳖宾,分析流程可以用Snakemake 來(lái)定義各個(gè)分析規(guī)則,版本管理和團(tuán)隊(duì)協(xié)作可以用git來(lái)實(shí)現(xiàn)逆航,而Rmarkdown可以用來(lái)集成代碼/輸出結(jié)果和文本注釋鼎文。這幾種工具本身都是可復(fù)用的,并支持絕大部分的單細(xì)胞數(shù)據(jù)分析因俐。那么拇惋,總結(jié)下來(lái),我們可以:

  • R/Bioconductor package for clustering of scRNA-seq data scalable to millions of cells.
  • Snakemake workflow to demultiplex scRNA-seq data.
  • Book written in R Markdown teaching readers how to analyze scRNA-seq data.

如果一個(gè)數(shù)據(jù)科學(xué)項(xiàng)目沒(méi)有很好的項(xiàng)目管理抹剩,隨著腳本量的增加往往變得十分凌亂撑帖,以至于第二天到辦公室都不知道該從何處下手了,這一點(diǎn)寫過(guò)學(xué)術(shù)論文的朋友應(yīng)該很清楚吧兔。

好在我們可以在RStudio用Projects來(lái)管理我們數(shù)據(jù)和代碼磷仰,在需要反復(fù)調(diào)試和可視化的時(shí)候袍嬉,用RProjects來(lái)組織git和Rmark down是一個(gè)最佳實(shí)戰(zhàn)境蔼。

為了保證數(shù)據(jù)科學(xué)項(xiàng)目的可持續(xù)和可重復(fù),一個(gè)RProjects是值得擁有的伺通。

  • 用Rmark down組織腳本和結(jié)果
  • 重要結(jié)果(算法)的腳本執(zhí)行代碼審查
  • 同一個(gè)數(shù)據(jù)分析項(xiàng)目建一個(gè)單獨(dú)的文件夾(Projects)
  • 文件和變量命名有規(guī)可循(代碼做好時(shí)間線注釋)
  • 為每個(gè)數(shù)據(jù)科學(xué)里程碑寫一個(gè)Readme
  • 為項(xiàng)目建立rawdata以及過(guò)程數(shù)據(jù)文件夾
  • 建議使用相對(duì)路徑
  • 為經(jīng)常用到的腳本寫模板

在Linux下箍土,寫好一個(gè)Rmd之后,如想批量可視化某個(gè)基因集罐监,可以用下面的代碼來(lái)執(zhí)行吴藻。

rmarkdown:: render(input=rmd,output_format='html_document',output_file=outfile)}

如果是bookdown來(lái)組織項(xiàng)目,那就更方便了弓柱,寫好各個(gè)章節(jié)的Rmd之后沟堡,直接sh _build.sh,這樣跑完之后結(jié)題報(bào)告就以一本書的形式呈現(xiàn)出來(lái)了矢空。

以上航罗,其實(shí)用到的核心技術(shù)并不多,主要是R語(yǔ)言生態(tài)的:

怎么樣屁药?對(duì)構(gòu)建可重復(fù)的單細(xì)胞數(shù)據(jù)分析流程有信心了嗎粥血?

http://ropensci.github.io/reproducibility-guide/
https://peerj.com/preprints/3159v2/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子复亏,更是在濱河造成了極大的恐慌趾娃,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缔御,死亡現(xiàn)場(chǎng)離奇詭異抬闷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)刹淌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門饶氏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人有勾,你說(shuō)我怎么就攤上這事疹启。” “怎么了蔼卡?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵喊崖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我雇逞,道長(zhǎng)荤懂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任塘砸,我火速辦了婚禮节仿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掉蔬。我一直安慰自己廊宪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布女轿。 她就那樣靜靜地躺著箭启,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛉迹。 梳的紋絲不亂的頭發(fā)上傅寡,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音北救,去河邊找鬼荐操。 笑死,一個(gè)胖子當(dāng)著我的面吹牛珍策,可吹牛的內(nèi)容都是我干的托启。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼膛壹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼驾中!你這毒婦竟也來(lái)了唉堪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肩民,失蹤者是張志新(化名)和其女友劉穎唠亚,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體持痰,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灶搜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了工窍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片割卖。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖患雏,靈堂內(nèi)的尸體忽然破棺而出鹏溯,到底是詐尸還是另有隱情,我是刑警寧澤淹仑,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布丙挽,位于F島的核電站,受9級(jí)特大地震影響匀借,放射性物質(zhì)發(fā)生泄漏颜阐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一吓肋、第九天 我趴在偏房一處隱蔽的房頂上張望凳怨。 院中可真熱鬧,春花似錦是鬼、人聲如沸肤舞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)萨赁。三九已至弊琴,卻和暖如春兆龙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敲董。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工紫皇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腋寨。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓聪铺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親萄窜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铃剔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345