引入
盡管科學(xué)界普遍同意锐秦,可重復(fù)再現(xiàn)是評(píng)估數(shù)據(jù)分析的最低標(biāo)準(zhǔn)谊路,但是由于缺乏對(duì)數(shù)據(jù)的整理碉克,對(duì)代碼工具使用版本的記錄等,重復(fù)再現(xiàn)某人(甚至有是你自己的)結(jié)果都不容易實(shí)現(xiàn)赁还。我們常常會(huì)遇到以下列舉的一系列問(wèn)題:
- 忘記下載的數(shù)據(jù)是哪里來(lái)的
- 忘記為什么自己要省去不使用部分的數(shù)據(jù)
- 忘記這個(gè)或者那個(gè)圖是怎么畫(huà)出來(lái)的(特別是對(duì)R語(yǔ)言不熟悉的同學(xué)們妖泄,上網(wǎng)東抄西撿,把代碼拼接起來(lái)艘策,畫(huà)完圖就完事了)
- 還有一系列類(lèi)似的小問(wèn)題
講了這么多蹈胡,這里就是希望指出:適當(dāng)記錄實(shí)驗(yàn)步驟,讓分析可重復(fù)的重要性朋蔫。
如何進(jìn)行可重復(fù)的生信分析
在excel文件中整理好你的數(shù)據(jù)
我們?nèi)粘U淼臄?shù)據(jù)基本都會(huì)用到excel罚渐。在我們進(jìn)行可重復(fù)生信分析之前,我們首先要讓初始的excel數(shù)據(jù)整理得清晰易懂斑举。
首先先看兩個(gè)例子:
整理前的excel文檔:
整理后的excel文檔:
通過(guò)對(duì)比可以看到同樣的信息搅轿,在正確排版整理后,可讀性得到了極大的提高富玷。
對(duì)于我們?cè)撊绾握韊xcel的文檔璧坟,作者很貼心的給大家整理了一些小tips:
- 使用矩形的方式排列數(shù)據(jù)
- 在第一行或者第一列使用表頭(并且記得不要手多添加空格,很多R包都會(huì)報(bào)錯(cuò)如果你的分隔符不一致)
- 一個(gè)cell只放一個(gè)值
- 每個(gè)cell都要有值赎懦,空的值可以使用NA表示
- 記得將你的數(shù)據(jù)備份(存到云盤(pán)是個(gè)很好的選擇)
- 在初始的數(shù)據(jù)中雀鹃,不要添加額外的計(jì)算,或者進(jìn)行圖型繪制
- 將數(shù)據(jù)保存為純文本文件
管理好你的projects
科學(xué)大牛曾說(shuō)過(guò)文件命名和管理是有效數(shù)據(jù)分析最有力的武器励两。
繼續(xù)展示一個(gè)非常經(jīng)典的黎茎,沒(méi)有正確進(jìn)行文件名管理錯(cuò)誤例子:
大腦為了偷懶,我們常常會(huì)使用最簡(jiǎn)單的方法進(jìn)行命名当悔,例如fig1png,fig2png傅瞻。而且由于很多時(shí)候踢代,我們分析不是一天完成的,由于每天的心情不同嗅骄,我們命名的方式又會(huì)出現(xiàn)一系列隨機(jī)的變化胳挎。這個(gè)錯(cuò)誤的方式可能會(huì)在一時(shí)間讓我們很方便,讓我們錯(cuò)以為我們已經(jīng)將需要的信息已經(jīng)保存起來(lái)了溺森。但是日后過(guò)了一周一個(gè)月半年慕爬,再回來(lái)找該文件的時(shí)候我們會(huì)發(fā)現(xiàn),我們很難再找到我們所需要的東西屏积,因?yàn)槲覀兠姆椒ú](méi)有任何可尋的歸類(lèi)医窿。
關(guān)于如何進(jìn)行文件名管理,很久之前我已經(jīng)發(fā)過(guò)一篇推文炊林,闡述比較好的文件名管理方式:
看完我的推文后姥卢,也順便總結(jié)一下視頻作者給出的建議:
- 使用日期開(kāi)頭(2018-09-05_xxxx),便于文件的sort
- 不要使用空格
- 命名要有意義铛铁,并且一致
- 在重要的文件夾中寫(xiě)上Read.me文件進(jìn)行內(nèi)容記錄(千萬(wàn)不要依賴(lài)你大腦去記住你做了什么隔显,讓電腦幫你去記錄)
為一切東西寫(xiě)腳本記錄
很喜歡一句話(huà)“如果你要做一個(gè)分析一次,那么你以后可能會(huì)做1000次一樣的分析”饵逐。將你的每一步分析寫(xiě)成腳本,你一定會(huì)受益其中的:
- 讓你對(duì)分析更加清晰
- 分析可以重復(fù)彪标,并且進(jìn)行流程化的分析
- 會(huì)讓你知道/避免分析中出現(xiàn)的錯(cuò)誤(錯(cuò)誤的參數(shù)倍权,輸入輸出等)
這里視頻作者也給出了一些相關(guān)的小技巧:
- 當(dāng)你對(duì)不同步驟整理了多個(gè)腳本后,可以使用流程對(duì)不同的步驟進(jìn)行擬合捞烟。(流程整理的工具可以使用snakemake/nextflow等相關(guān)的工具)
- 當(dāng)你整理好流程后薄声,需要對(duì)整個(gè)流程進(jìn)行詳細(xì)的介紹,以便日后的重復(fù)分析题画。
- 當(dāng)你需要重復(fù)使用到一段代碼的時(shí)候默辨,將它變成function,以便重復(fù)利用
- 不要覆蓋舊的腳本版本苍息,保存為多個(gè)不同的版本以便進(jìn)行tracking
另外對(duì)于如何進(jìn)行腳本的記錄缩幸,我以前也寫(xiě)過(guò)一篇文章,里面更加詳細(xì)地介紹了如何進(jìn)行腳本記錄:
進(jìn)行環(huán)境管理與版本控制
進(jìn)行環(huán)境管理和版本控制也是決定一個(gè)分析是否能夠重復(fù)的關(guān)鍵竞思。這部分視頻作者比較簡(jiǎn)單的帶過(guò)了表谊,沒(méi)有進(jìn)行太過(guò)仔細(xì)的分析。對(duì)于如何進(jìn)行環(huán)境與版本管理盖喷,會(huì)推薦使用conda和docker爆办。這里就先挖個(gè)坑,我日后給大家詳細(xì)介紹课梳。
總結(jié)
最后將上面的內(nèi)容簡(jiǎn)單總結(jié)為幾個(gè)小點(diǎn):
- 管理好你的項(xiàng)目文件名
- 適當(dāng)寫(xiě)READMEs進(jìn)行信息記錄
- 將數(shù)據(jù)保持簡(jiǎn)潔距辆,易讀
- 適當(dāng)?shù)脑谀愕拇a寫(xiě)上注釋
- 對(duì)軟件版本進(jìn)行管理
- 自動(dòng)化你的分享流程
- 分享你所用的計(jì)算機(jī)環(huán)境
參考鏈接:
- https://speakerdeck.com/minecr/the-results-in-table-1-dont-seem-to-correspond-to-those-in-figure-2-427452c9-ca4f-4e35-b911-590e6c577430?slide=47
- https://www.biostat.wisc.edu/~kbroman/presentations/cmp2018.pdf
視頻鏈接:
https://www.youtube.com/watch?v=994uO3U-R1c&feature=youtu.be