該如何自學(xué)入門生物信息學(xué)-解螺旋的礦工

本文作者:解螺旋的礦工,轉(zhuǎn)自微信公眾號“堿基礦工”。

前幾天在知乎上,我看到了這么一個問題“如何自學(xué)生物信息學(xué)?”,看了一圈回答后,發(fā)現(xiàn)很多答主自己也是初學(xué)者,可能都還在摸索中,回答也沒有真正抓到重點(diǎn)。作為一個過來人,我覺得這個問題其實(shí)還挺重要的,相信也困擾著不少人,因此在這里我想嘗試回答一下這個問題。

什么是生物信息學(xué)

生物信息學(xué)與以往的傳統(tǒng)生物學(xué)不同,它本身是一個混合體,而且在今天看來它應(yīng)當(dāng)還要包含現(xiàn)在的NGS和基因組學(xué)。我認(rèn)為,它重在數(shù)據(jù),因此在這個領(lǐng)域中比較重要的是數(shù)學(xué)和計(jì)算機(jī)——計(jì)算機(jī)我指的是:編程能力和算法設(shè)計(jì)能力。這是我的切身體會,許多生物知識其實(shí)可以往后慢慢學(xué),不必一開始花費(fèi)大量時間補(bǔ)充生物知識。

但生物信息畢竟還是和生物有關(guān),毫無生物知識其實(shí)也說不過去。那么對于初學(xué)者來說,想要進(jìn)入這個領(lǐng)域,我覺得一開始需要重點(diǎn)搞清楚幾個基本概念。比如,什么是基因組,什么是轉(zhuǎn)錄組,什么是蛋白組,什么是染色體,什么是基因,什么是基因重組,什么是進(jìn)化/演化,什么是表觀遺傳,什么是變異,變異類型有哪些,NGS技術(shù)是什么,測序儀的工作原理是什么,DNA是如何被測出來的等這些東西。因?yàn)椋阒挥姓嬲私鈹?shù)據(jù)是如何來的,才能更好地明白數(shù)據(jù)該如何處理和分析,以及如何才能有效地挖掘出它背后隱含的生物知識。

至于分子生物學(xué)中諸多涉及細(xì)胞機(jī)制機(jī)理的知識我覺得在剛開始的時候反而可以緩一緩。我本來是學(xué)物理的,做生物信息可以說是半路出家,但其實(shí)沒覺得有什么障礙,后來實(shí)際需要的時候慢慢補(bǔ)上即可。推薦大家買本《基因X》屯著——這是一本有厚度的基因必讀書(曾經(jīng)是《基因8》),作為參考書,平時有空的時候記得多翻翻。

此外,我覺得盡量避免去看生物信息學(xué)導(dǎo)論那類書,很多都太舊了,用處不大是一個方面,關(guān)鍵是還會浪費(fèi)不少時間。

好奇心、興趣和目標(biāo)

這應(yīng)該是促進(jìn)我們學(xué)習(xí)的第一要素。所謂,“知之者不如好之者,好之者不如樂之者”。興趣的力量是強(qiáng)大的,基本上是你樂于繼續(xù)下去的動力來源。如果僅是以賺錢為目的的話,那么我覺得還是另擇一行吧,有很多其它更適合賺錢的領(lǐng)域。那么話說回來,要培養(yǎng)興趣的話,我們可以先了解現(xiàn)在整個基因科技行業(yè)的發(fā)展情況,了解學(xué)習(xí)這些知識都可以做些什么,能夠解決什么問題。然后再定一個目標(biāo),完成一個具體的項(xiàng)目,自學(xué)最怕沒有目的性,在沒有他人可以指導(dǎo)的情況下,很容易迷失方向。但如果沒條件的話,可以嘗試?yán)矛F(xiàn)有的數(shù)據(jù)(比如:千人基因組項(xiàng)目,GIAB等)復(fù)現(xiàn)它們的成果,甚至只是構(gòu)建一個分析流程也行,這樣子學(xué)起來才會比較高效,同時也有利于夯實(shí)所學(xué)的知識。

使用Google

條件允許的話,請使用Google。在這個信息時代中信息已經(jīng)足夠多了,使用Google至少可以更快讓你找到想要的東西,而學(xué)習(xí)生物信息,我們經(jīng)常需要找東西。

那么,在有了上面這些基本的認(rèn)識和目標(biāo)之后,我們就可以開始了。

Linux

基因數(shù)據(jù)分析,極度不推薦在Windows下完成,有很多的工具不支持,而且不利于學(xué)習(xí),也不利于我們對數(shù)據(jù)的理解。因此掌握Linux,特別是直接在Terminal中進(jìn)行數(shù)據(jù)分析是必須的。

不過,不用太擔(dān)心,我們不需要成為Linux專家。對于生物信息研究人員來說,只要了解Linux的文件系統(tǒng)結(jié)構(gòu),能夠在Terminal中靈活運(yùn)用基本的Linux命令就足夠了,但vi需要掌握——我們編寫程序時需要用到它。不過要達(dá)成這些目標(biāo)不需要看大部頭的Linux書籍——這個也是我想給所有要學(xué)習(xí)生物信息的小伙伴們提個醒,這樣可以節(jié)省很多不必要花的時間,不然等你看完一大本Linux書,恐怕興趣也都被磨得差不多了,要直奔目標(biāo)。

我自己使用Linux的時間超過8年,但是所使用的命令,合起來頻度超過99%的竟然不超過20條!基本上就是在接觸生信的第一天學(xué)會的,而對于聰明如你們的人來說,相信一定可以用更短的時間融匯貫通,對于這幾個命令我簡單列一下(注意都是在Terminal模式下):

pwd:列出當(dāng)前目錄的完整路徑,明確你在哪;

cd :跳轉(zhuǎn)到其他目錄,兩個好用的cd命令,"cd -" 跳回最近一次的目錄,"cd .." 退回上一層目錄;

ls:列出當(dāng)前目錄內(nèi)容,最好加上 -l -rt 參數(shù),會更加清晰,目的是明確目錄下都有什么;

mkdir:創(chuàng)建目錄;

rm:刪除文件或者目錄;

mv:重命名文件或者目錄;

cat:打開文本文件,內(nèi)容輸出到屏幕;?

less -SN:打開文本文件,這個是查看文本文件更合適的方式;

head -n:查看文件前n行;

tail -n:查看文件尾n行;

wc -l:計(jì)算文本文件的行數(shù);

”|“: 管道操作;

grep命令;

awk命令;

sed命令;

sort命令;

du -sh ./: 檢查當(dāng)前目錄所占空間大??;

bc -l:啟動Terminal下的計(jì)算器,可以在這里進(jìn)行簡單的數(shù)學(xué)運(yùn)算,輸入"quit"就可以退出;

chmod:修改文件或者目錄權(quán)限;

接下來,可以繼續(xù)看一下“極客學(xué)院”中那一篇“一步一步學(xué)Linux”的文章:http://wiki.jikexueyuan.com/project/learn-linux-step-by-step/,我覺得那篇博文就足夠了。值得你多花些時間研究的是Linux中 “|” 管道命令的妙處。另外,掌握基本的grep,sed,awk操作。我之所以推薦這三個命令是因?yàn)椋鼈兒苓m合快速進(jìn)行簡單的文本操作,可以讓很多工作直接快速地在命令行上完成,而不需要編寫程序。比如抽取一個文本文件特定的幾列信息、匹配相關(guān)信息、修改輸出等,用awk實(shí)現(xiàn)起來非常簡單。上面這些掌握了之后,你再學(xué)習(xí)如何利用這些命令和相關(guān)執(zhí)行程序組建簡單的shell任務(wù)流程,到這個階段,Linux部分基本就OK了。至于如何在Terminal中編譯程序或者安裝軟件包,一般都有具體教程,按照教程來就可以了,真碰到問題可以多Google。

至少掌握一門高級編程語言

生物信息是一定離不開程序設(shè)計(jì)的,而且你不能只會R 。我建議先學(xué)Python(不推薦Perl),它很容易上手——被稱為”可執(zhí)行的偽代碼“,社區(qū)強(qiáng)大而活躍,碰到問題很容易找到解決辦法。而且,支持組學(xué)數(shù)據(jù)分析的工具包也很豐富。還被譽(yù)為數(shù)據(jù)科學(xué)第一語言!不但可以進(jìn)行文本處理,還可以進(jìn)行統(tǒng)計(jì)分析,機(jī)器學(xué)習(xí),或者作出精美的數(shù)據(jù)圖等等,比起曾經(jīng)的Perl真的強(qiáng)大很多。

在掌握了Python之后,我推薦的另一門高級語言是C(或者C++),它是難的,我之所以依然覺得有必要,是因?yàn)樗梢宰屇憔哂懈纱笫碌哪芰Α?/p>

雖然在實(shí)際的工作中Python已經(jīng)足夠強(qiáng)大,基本上可以應(yīng)對項(xiàng)目中的各類大小事宜。但在我看來,如果你希望技術(shù)上做得更強(qiáng),C一定是繞不開的,學(xué)會C/C++至少有兩個好處:

讓你理解機(jī)器的工作原理,理解你的程序是如何運(yùn)作的。這非常有助于你以后寫出更加優(yōu)秀的代碼;

設(shè)計(jì)高效率的算法模塊,往往需要借助C/C++,而且設(shè)計(jì)出來的模塊還可以很方便地包裝起來用在Python中。同時,也有很多優(yōu)秀的組學(xué)數(shù)據(jù)處理包是C/C++寫的,比如,SSW、Bamtools和SeqAn(https://github.com/seqan/seqan)——這個包很強(qiáng)大——我們可以用它編寫比對算法,變異檢測算法等。

(Python如何調(diào)用C++)

另外,我認(rèn)為R是很容易學(xué)的,這里也無意起語言之爭,雖然Python比R好。只有你有興趣,在有了上面的基礎(chǔ)之后,可以在很短的時間內(nèi)學(xué)會。

Python教程很多!我這里推薦一下gitbook上的這個《簡明Python教程》:https://www.gitbook.com/book/lenkimo/byte-of-python-chinese-edition/details 。另外,廖雪峰的Python教程也不錯。

掌握常用的組學(xué)數(shù)據(jù)分析軟件

生物信息的工具眾多,不過數(shù)據(jù)分析過程中常用的工具和軟件還是可以列出來的,主要是:bwa,samtools,picard,GATK,bedtools,bcftools,vcftools,F(xiàn)astQC,MultiQC,VEP這些。基本都是在構(gòu)造如WGS、WES這類分析流程的時候需要被用到的。另外,還有關(guān)于GWAS的一系列分析工具等,這些其實(shí)可以根據(jù)后續(xù)的具體項(xiàng)目逐步深入。除了工具之外,基本的數(shù)據(jù)文件格式也必須認(rèn)識,比如:Fasta,F(xiàn)astq,BAM,gff,vcf等,我在下文中推薦的《Bioinformatics Data Skills》那本書里面就系統(tǒng)講了諸多在基因數(shù)據(jù)分析過程用到的工具和文件格式解析,值得一讀。

實(shí)踐

“書上得來終覺淺,絕知此事要躬行”。實(shí)踐是必須的,如果沒條件的話可以到Rosalind:http://rosalind.info/problems/locations/?這個網(wǎng)站上做些訓(xùn)練題,這上面有著很多有意義的生物信息題目,從易到難的都有,涵蓋的面也比較廣(包括RNA,DNA,蛋白),值得一戰(zhàn)。另外要積極尋找到大型基因科技公司(比如華大基因)或者基因研究所實(shí)習(xí)的機(jī)會,如果是在校學(xué)生有可能的話應(yīng)該爭取到海外頂級機(jī)構(gòu)留學(xué)。

構(gòu)建一個流程,要敢于造輪子

在掌握了Linux和編程知識之后,建議利用公開的數(shù)據(jù)構(gòu)造一個完整的數(shù)據(jù)分析流程,比如全基因組數(shù)據(jù)分析流程或者復(fù)現(xiàn)一個項(xiàng)目的全過程。現(xiàn)在最好的一個公開數(shù)據(jù)來自Genome in a bottle(GIAB):http://jimb.stanford.edu/giab/?。你可以用這個數(shù)據(jù)參考GATK的最佳實(shí)踐或者不久前我寫的一個“從零開始完整學(xué)習(xí)全基因組數(shù)據(jù)分析系列”的文章,構(gòu)造一個WGS數(shù)據(jù)分析流程。需要注意的是,你在構(gòu)建、復(fù)現(xiàn)甚至重造的時候,要嘗試去理解各個環(huán)節(jié)的意義,不要只是機(jī)械地將一個分析過程串接起來,因?yàn)槟愕哪康氖菍W(xué)習(xí),碰到問題時也盡量自己解決,這樣才能真正掌握它。

數(shù)理知識

生物信息離不開數(shù)學(xué),準(zhǔn)確地說是離不開統(tǒng)計(jì)學(xué)。有太多的數(shù)據(jù)分析都需要統(tǒng)計(jì)學(xué)知識的參與,包括常用的假設(shè)檢驗(yàn),貝葉斯推斷、隨機(jī)森林,SVM,回歸分析,PCA等。因此,在你獲得初步的基因數(shù)據(jù)處理能力之后,更進(jìn)一步應(yīng)該做的就是加強(qiáng)這方面的知識。

多看優(yōu)秀的組學(xué)算法

站在巨人的肩膀上才能看得更遠(yuǎn)。生物信息領(lǐng)域有一個比較突出的特點(diǎn),就是絕大多數(shù)的東西都是開源的,因此很多優(yōu)秀的算法和程序你都能夠在github上直接找到,比如,比對軟件bwa和后綴樹算法,Smith-waterman局部比對算法;基因組組裝軟件SOAPdenovo2的de Bruijn graph;變異檢測GATK、freebayse、Platypus應(yīng)用到的貝葉斯、最大似然、EM、Pair-HMM和高斯混合模型等;變異注釋工具VEP,GWAS的一系列方法等。特別是GATK,它的文檔寫的很優(yōu)秀,因此值得多泡在它的一系列文檔中。通過學(xué)習(xí)它們的源碼,不但可以精進(jìn)你的編程能力、算法設(shè)計(jì)能力,更重要的是還能讓你深刻理解諸多組學(xué)數(shù)據(jù)分析的奧秘!這會在不知不覺中提升你對基因數(shù)據(jù)的理解,就如同維納斯的面紗在你面前一點(diǎn)點(diǎn)被揭開了一樣,有種豁然開朗的感覺,你不再覺得那堆東西很神秘了。

不要固步自封

最后,一定要緊跟前沿。生物信息學(xué)以及現(xiàn)在的基因組學(xué),知識的更新迭代可謂一日千里,可能半年不留神就會落后,所以平時一定要多看前沿的文章成果。但那么多雜志應(yīng)該看哪些呢?我的建議是直接看最頂級的CNNS(Cell,Nature,NEJM,Science)雜志,如果時間不夠用那么更加不必看其它的,原因有三個:

這些頂級雜志所代表的基本上就是領(lǐng)域的最前沿——也正因此它們才會在CNNS上發(fā)表。雖然其它雜志也有可能,但概率低很多,因此不必浪費(fèi)時間,要看就看最好的;

這些雜志上的文章大多都能給你帶來新的視角,能夠開闊你的眼界。帶來看待問題、解決問題的新思路和新想法。這一點(diǎn)我覺得是更加重要的,這會有助于你做出創(chuàng)新性的工作;

此外,我認(rèn)為多看這類文章,也會有更高的概率在這類雜志上發(fā)表成果。

另外,也可以多看看生物探索、奇點(diǎn)網(wǎng)這些公眾號,上面每天都會報道很多關(guān)于這個領(lǐng)域的前沿信息,當(dāng)然也別忘了請一定要多!多!關(guān)!注!我!(認(rèn)真臉)另外,加入一些優(yōu)質(zhì)的生物信息交流圈,有機(jī)會的話參加一些重要的基因組學(xué)會議,千萬不要關(guān)起門來悶頭學(xué),一定要看著外面的世界。

書和課程推薦

推薦兩本基礎(chǔ)的基因數(shù)據(jù)處理書籍,都是基于Python語言的:

1. 來自O(shè)Reilly《Bioinformatics Data Skills- Reproducible.and.Robust.Research.with.Open.Source.Tools》主要偏重工具的使用和數(shù)據(jù)文件的處理,雖然講的不是很深入,但是作為生物信息初學(xué)者的入門書來說還是十分有價值的,2015年出版的,也不算舊。

2. 第二本是《Bioinformatics with Python Cookbook》,同樣是2015年出版的。這一本相比于第一本來說會難一些,它會側(cè)重于一些主題性質(zhì)的內(nèi)容,比如群體遺傳學(xué),基因大數(shù)據(jù)這一類。

這兩本書都有pdf電子版。感興趣的小伙伴可以在公眾號后臺回復(fù)“入門書籍”這四個字就可以獲得了。

最后,再推薦幾個在線課程。第一個是Coursera上的一個課程:https://www.coursera.org/specializations/genomic-data-science

這是約翰霍普金斯大學(xué)組織的一個系列課程,緊扣現(xiàn)在主流的組學(xué)數(shù)據(jù)分析,非常適合于入門學(xué)習(xí),是一個精品系列,講的很好,力薦,但是需要收費(fèi),只有7天的免費(fèi)體驗(yàn)時間。

另外,EMBO上也搞了一個,不過我認(rèn)為沒有Coursera的系統(tǒng)全面,但它是免費(fèi)的。https://www.ebi.ac.uk/training/online/course/embo-practical-course-analysis-high-throughput-seq生信寶典視頻教程(更新版)

好了,最后,祝你學(xué)習(xí)快樂。

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

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

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