邁向可重復(fù)的生信分析

引入

盡管科學(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)境

參考鏈接:

  1. 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
  2. https://www.biostat.wisc.edu/~kbroman/presentations/cmp2018.pdf

視頻鏈接:

https://www.youtube.com/watch?v=994uO3U-R1c&feature=youtu.be

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容