生物背景入門生物信息學需要補哪些計算機知識?
生物背景,計算機0基礎,讀生物信息學碩士前需要自學些什麼計算機知識?有什麼入門書籍推薦?btw,生物信息學常用的paper網站有嗎?thanks~
我不是生物信息學方向碩士,如果備考的話,還請參考目標學校招生大綱。就我了解的,涉及生物信息領域的工作,大體可以分為兩塊:一個是應用生物信息作為工具,研究某個領域具體問題,這方面的居多,比如發育,育種,表觀遺傳等;另一個是工具的開發,比如序列組裝、比對軟體。實際中這兩方面在某些組可能會有交叉,可能他們遇到的問題是以前從沒有人遇到過的,市面上沒有合適的現成工具可用,於是自己做了一個發表出來,有的還會繼續維護更新,即便沒有再發新的文章,而大部分軟體發表之後,再也沒有更新。
再說回來,結合上面的分類和自己的興趣,如果感興趣的是生物信息的應用,對計算機基礎的要求不高,理解常見的數據結構和演算法就夠,至於書籍可以找找大學本科計算機的教材,選擇應用方向的話,建議先理解生物信息常見的經典演算法,比如動態規劃(用於blast比對),de bruijn graph 和overlap layout consensus(用於序列組裝)以及BWT(用於短序列與參考序列比對)。
如果有志於生物信息的工具開發的話,對計算機基礎、演算法理解,編碼能力要求要更高,編程語言除了Python/Perl,還要能寫C/C++/Java(至少一種)。
常用paper網站,除了如何自學生物信息學? - popucui 的回答 - 知乎提到的,還可以關注下面幾個:
the preprint server for Biology 發布的一般是見刊前的論文,更新快,覆蓋包括生物信息在內的多個學科Genome Biology 和Genome Research ,影響因子均大於11Bioinformatics | Oxford Academic 生信領域老牌雜誌,影響因子5~6,涵蓋很多門類,每年會出一期專門講各種生物信息的資料庫。
此外,推特上也能看到不少人推薦文章。同作為0背景接觸生物信息,目前做的還算不錯,我說一些我的心得好了。生物信息對計算機的要求沒多高,從我的角度來看計算機方向的學習有三點。
1 學會linux的基礎操作,譬如常見的ls,grep,less,awk等即可。當然最開始接觸linux的時候會各種不習慣,比較好的學習手段是把自己的筆記本裝成linux,我個人喜歡mate界面的fedora。然後在Linux里聽歌看電影,如果寫文檔就用虛擬機或者wps。這麼用個1-2個月就比較舒服了。
2 學一門編程語言,會簡單的文本處理。現在知乎上首推python,據說語法清晰入門簡單。認認真真看個1個月加練習,基本上普通的文本處理就沒什麼問題了。本條目可以和第一條一起用,在linux下用python有加乘效果。
3 如果想稍微進階一下,需要學習和了解常見的數據結構,譬如什麼是二叉樹,什麼是哈希表,什麼是鏈表,哈希碰撞是怎麼產生的,鏈表相對數組有哪些性能優劣等等。這些基礎數據結構大概花費幾天即可掌握,不需要深入。如果在處理文本時能使用恰當的數據結構,則會事半功倍。
那麼如果能花1-2個月把上述問題都搞明白了,順便做個簡單的項目,譬如寫個fastq.gz的過濾腳本,那麼後面的進度就很簡單了。目前主流二代測序的數據分析本質來說也就是用些開源軟體倒騰下然後網上找公開資料庫折騰。並沒有多高的技術壁壘。反而是對生物學意義的理解更為重要。本科生信萌新,和題主一樣努力想念生信的碩士
我在的北大的生物醫學工程系裡面有健康信息系統、醫學數據、計算生物學方向,和傳統的生信有一定的差別;真正做生信的人信息科學院有一撥,生命科學院還有一撥。不排除數學院也有理論研究專家。
經驗比較少,不敢多說,以下說一些老師和實驗室師兄建議的東西。
計算機方面的基礎知識,和真正學計算機專業的同學是完全不一樣的要求。不談計算生物學裡面DNA計算機一類的東西,如果是序列分析、組學這些研究的話,我現在按如下一步步來:
首先,應用層面,Linux必須要會用,所有的生信軟體幾乎都是linux-based不會也得會,(嗯,會用,不是說要把內核源碼深入解析一下什麼的)主要是會文件操作,登陸伺服器,許可權,進程什麼的各種概念,以及一些基本的生信工具BLAST等等。
其次,如樓上所言,要求數據結構與演算法的知識。直接被用在生信應用裡面的比如BLAST的動態規劃,當然其他沒有直接關聯的也很重要,比如之前看宏基因組分類方面的論文就有一些組用了貪心法這樣的簡單原理,但是也達到過很好的效果。
最後,編寫代碼方面,需要一些技能是光上一點基礎課學不來的,必須在戰爭中學習戰爭。比如說會寫了python或者C,java,但是還是需要一些高級技術以及技術細節。之前在做測序數據分析的時候要求寫成並行的程序,這樣伺服器跑起來快,免得結果等好幾天。如此種種還有很多,解決程序運行中出現的形形色色的幺蛾子需要紮實的經驗積累(不僅限於bug,還有數據怎麼方便的表示,有什麼思路清奇的編程實現手段,黑科技比如一步到位的偷懶庫函數...)
期刊,補充樓上的,如果是還沒有真正進入研究的學習階段,不妨膜拜大神的成果。一些很厲害的生信應用會發在Nature Biotechnology,Nature Methods,Cell等等,Oxford旗下還有一個Nucleic Acids Research,也有生信的板塊,不過僅限於核酸就是了。書籍的話M.S. Waterman的《計算生物學導論》,一邊看,感覺重要的,不懂的計算機數學知識部分做下筆記用別的書或者網站公開課去補。
======================================================================
老師一直反覆強調,做生信不能光看演算法和程序結果,生物學意義很重要。兩層意思:生信演算法的數據來源是實驗數據,提出的演算法要在能夠獲取的實驗結果上進行操作;最後的理論結果要用生物學濕實驗驗證,一切看實驗結果。題主生物背景,對此應該比我懂的多得多,就不多說了。
這個問題描述的正好是我目前的狀態→本科化學生物方向,純理科,沒有計算機基礎,然後現在德國讀生物信息的碩士。
表示轉行真的是很痛苦的事情,感覺完全換了一個專業!不過我們專業的培養計劃有考慮純生物方向的同學,所以會在前兩學期有安排一些本科計算機和生物信息的課程。常用的編程語言有Java和Python,一般看教授喜好,還有R語言一定要掌握。這些最好是能夠在你碩士入學前就能基本會用,熟悉語法。看看書,自己寫寫簡單的代碼就OK了。
如果你希望碩士讀生物信息方向,就不會像純生物專業那樣只是把這個學科當做一個工具了。所以對演算法的理解很重要啦,有空的話簡單看看演算法和數據結構的基礎課。我現在這個專業是屬於計算機學院的,所以做演算法更多一些。有的學校這個專業屬於生物系可能會偏應用吧,不太了解。你可以多看看想去的學校主要的研究方向是啥,也好有個參考。
編程語言只是最最最基礎的部分,肯定是只能靠自學的。還有很重要的就是數學:統計學,線性代數的基礎也是要有的。好好學習數學真的非常非常重要。
生物學和生物信息的區別還是蠻大的,自從讀了這個專業再也不用做實驗了,變成每天對著電腦敲代碼的狀態。零計算機基礎轉過去讀碩還是蠻辛苦的,有很多新的知識需要在短時間內迅速掌握。藥學本科,生信做了快一年來強答生信是個很廣的專業,涉及的知識很多且雜,所以首先要明確自己的方向,有的生信的博士還是不太需要高端的統計程序水平的。我們實驗室的博士和博後中,基本都精通python,並且掌握其他的統計語言,例如R, Perl...並且我們做資料庫的還要有一定的web,java,sql的知識,哦,對於專業軟體,L系統是必須要會的,雖然我不會hhh這條路充滿荊棘,請想清楚再走下去前路漫漫,共勉
python. java(c++).perl.R.數據結構和演算法,資料庫,操作系統,linux必會,但是不用精通,會熟練應用即可。如果你想成大牛,對這些cs方面的知識要掌握很好,這樣才能根據自己的需求,寫自己需要的軟體或腳本,而不是只會在別人的軟體上跑一跑。。。
如果不做深入的研究,僅限於應用,廣度也挺大,基礎技能也並不要求很多,需要精通的是Linux和R,因為永遠都離不開,起初可以針對於一個方向學習和分析,比如ChIP-seq和RNA-seq數據。至於深入研究,可利用新舊數據做信息學分析,在生物學上突破性的發現和預測,或者在技術上創造新方法和新工具為生物學研究鋪平道路。
我本科是生物技術的,研究生是軟工的。怎麼講呢,如果這個專業是計算機院開的和生物院開的側重點應該是不一樣的。現在我是計算機院的,也有人研究這個,不過他們根本沒有任何生物學基礎,相當於是大數據的分支。然後我之前生物院也有干這個的,雖然會R語言,但是計算機基礎很差,基礎的數據結構什麼都不會。。。可能是我學校管理比較混亂,我也搞不懂為什麼會這樣。。。。
推薦閱讀:
※既然在 Windows 中文檔放在桌面重裝系統就沒有了,為什麼默認是C盤而不是其他盤?
※日誌採集系統flume和kafka有什麼區別及聯繫,它們分別在什麼時候使用,什麼時候又可以結合?
※如何整理電腦文件夾?
※20 年後的電腦會是什麼樣子?
※計算機自學?